00001: #include <stdio.h> 00002: #include <unistd.h> 00003: #include <time.h> 00004: 00005: #define NUM_PCS 12 00006: #define START 4 00007: #define NUM_BITS 60 00008: #define NUM_HI_BITS 32 00009: #define NUM_LO_BITS 32 00010: 00011: 00012: int percent = 0; 00013: int partsUsed = 0; 00014: int numSolutions = 0; 00015: clock_t startTime; 00016: double correction[] = { 1.26, 1.05, 1, 0.94, 0.97, 1.005, 0.985, 0.94, 0.95, 1 }; 00017: 00018: 00019: 00020: extern void solve(); 00021: 00022: extern void doSolve(int start, long long startMask, long long puzzle, int partsUsed); 00023: extern void altDoSolve(int start, long long startMask, long long puzzle, int partsUsed); 00024: 00025: extern void doSolve32(int start, int startMask, int puzzle, int partsUsed); 00026: extern void altDoSolve32(int start, int startMask, int puzzle, int partsUsed); 00027: 00028: 00029: int main(int argc, char**argv) 00030: { 00031: clock_t startTime = clock(); 00032: 00033: solve(); 00034: 00035: printf("\ndone. %ld seconds, %ld solutions.\n", 00036: (clock()-startTime)/1000000, numSolutions); 00037: } 00038: 00039: 00040: 00041: 00042: 00043: void solve() 00044: { 00045: doSolve(4, 1<<4, 0x80490080ll, 0x1l); 00046: doSolve(4, 1<<4, 0xba0ll, 0x1l); 00047: doSolve(4, 1<<4, 0x20070020ll, 0x1l); 00048: doSolve(4, 1<<4, 0x100920100ll, 0x1l); 00049: doSolve(4, 1<<4, 0x201240200ll, 0x1l); 00050: doSolve(4, 1<<4, 0x100380100ll, 0x1l); 00051: doSolve(4, 1<<4, 0x80490080000ll, 0x1l); 00052: doSolve(4, 1<<4, 0xba0000ll, 0x1l); 00053: altDoSolve(4, 1<<4, 0x20070020000ll, 0x1l); 00054: altDoSolve(4, 1<<4, 0x100920100000ll, 0x1l); 00055: altDoSolve(4, 1<<4, 0x100380100000ll, 0x1l); 00056: altDoSolve(4, 1<<4, 0xba0000000ll, 0x1l); 00057: 00058: } 00059: 00060: 00061: void doSolve(int start, long long startMask, long long puzzle, int partsUsed) 00062: { 00063: for (;(puzzle & startMask) && start < NUM_LO_BITS; start++, startMask <<= 1); 00064: 00065: if(start == NUM_LO_BITS) { 00066: doSolve32(0, 1, puzzle>>NUM_LO_BITS, partsUsed); 00067: return; 00068: } 00069: 00070: switch(start) { 00071: case 4: 00072: if (partsUsed & 0x2l) goto piece2at4; 00073: if(!(puzzle & 0x480090010ll)) 00074: doSolve(5, 0x20ll, puzzle | 0x480090010ll, 00075: partsUsed | 0x2l); 00076: if(!(puzzle & 0x400480090ll)) 00077: doSolve(5, 0x20ll, puzzle | 0x400480090ll, 00078: partsUsed | 0x2l); 00079: if(!(puzzle & 0x1330ll)) 00080: doSolve(5, 0x20ll, puzzle | 0x1330ll, 00081: partsUsed | 0x2l); 00082: if(!(puzzle & 0x1990ll)) 00083: doSolve(5, 0x20ll, puzzle | 0x1990ll, 00084: partsUsed | 0x2l); 00085: if(!(puzzle & 0x40060030ll)) 00086: doSolve(5, 0x20ll, puzzle | 0x40060030ll, 00087: partsUsed | 0x2l); 00088: if(!(puzzle & 0x60030010ll)) 00089: doSolve(5, 0x20ll, puzzle | 0x60030010ll, 00090: partsUsed | 0x2l); 00091: piece2at4: 00092: if (partsUsed & 0x4l) goto piece3at4; 00093: if(!(puzzle & 0x10490010ll)) 00094: doSolve(5, 0x20ll, puzzle | 0x10490010ll, 00095: partsUsed | 0x4l); 00096: if(!(puzzle & 0x10070010ll)) 00097: doSolve(5, 0x20ll, puzzle | 0x10070010ll, 00098: partsUsed | 0x4l); 00099: if(!(puzzle & 0x80080490ll)) 00100: doSolve(5, 0x20ll, puzzle | 0x80080490ll, 00101: partsUsed | 0x4l); 00102: if(!(puzzle & 0x790ll)) 00103: doSolve(5, 0x20ll, puzzle | 0x790ll, 00104: partsUsed | 0x4l); 00105: if(!(puzzle & 0x970ll)) 00106: doSolve(5, 0x20ll, puzzle | 0x970ll, 00107: partsUsed | 0x4l); 00108: if(!(puzzle & 0x20020070ll)) 00109: doSolve(5, 0x20ll, puzzle | 0x20020070ll, 00110: partsUsed | 0x4l); 00111: piece3at4: 00112: if (partsUsed & 0x8l) goto piece4at4; 00113: if(!(puzzle & 0x400490010ll)) 00114: doSolve(5, 0x20ll, puzzle | 0x400490010ll, 00115: partsUsed | 0x8l); 00116: if(!(puzzle & 0x480080090ll)) 00117: doSolve(5, 0x20ll, puzzle | 0x480080090ll, 00118: partsUsed | 0x8l); 00119: if(!(puzzle & 0x1930ll)) 00120: doSolve(5, 0x20ll, puzzle | 0x1930ll, 00121: partsUsed | 0x8l); 00122: if(!(puzzle & 0x1390ll)) 00123: doSolve(5, 0x20ll, puzzle | 0x1390ll, 00124: partsUsed | 0x8l); 00125: if(!(puzzle & 0x40070010ll)) 00126: doSolve(5, 0x20ll, puzzle | 0x40070010ll, 00127: partsUsed | 0x8l); 00128: if(!(puzzle & 0x60020030ll)) 00129: doSolve(5, 0x20ll, puzzle | 0x60020030ll, 00130: partsUsed | 0x8l); 00131: piece4at4: 00132: if (partsUsed & 0x10l) goto piece5at4; 00133: if (!(puzzle & 0x2490ll)) { 00134: if(!(puzzle & 0x6590ll)) 00135: doSolve(5, 0x20ll, puzzle | 0x6590ll, 00136: partsUsed | 0x10l); 00137: if(!(puzzle & 0x2082490ll)) 00138: doSolve(5, 0x20ll, puzzle | 0x2082490ll, 00139: partsUsed | 0x10l); 00140: if(!(puzzle & 0x2cb0ll)) 00141: doSolve(5, 0x20ll, puzzle | 0x2cb0ll, 00142: partsUsed | 0x10l); 00143: } 00144: if(!(puzzle & 0x90010090010ll)) 00145: doSolve(5, 0x20ll, puzzle | 0x90010090010ll, 00146: partsUsed | 0x10l); 00147: if(!(puzzle & 0x80090080090ll)) 00148: doSolve(5, 0x20ll, puzzle | 0x80090080090ll, 00149: partsUsed | 0x10l); 00150: if(!(puzzle & 0x412490ll)) 00151: doSolve(5, 0x20ll, puzzle | 0x412490ll, 00152: partsUsed | 0x10l); 00153: if(!(puzzle & 0x10090010090ll)) 00154: doSolve(5, 0x20ll, puzzle | 0x10090010090ll, 00155: partsUsed | 0x10l); 00156: if(!(puzzle & 0x4d30ll)) 00157: doSolve(5, 0x20ll, puzzle | 0x4d30ll, 00158: partsUsed | 0x10l); 00159: if(!(puzzle & 0x2490410ll)) 00160: doSolve(5, 0x20ll, puzzle | 0x2490410ll, 00161: partsUsed | 0x10l); 00162: if(!(puzzle & 0x30010030010ll)) 00163: doSolve(5, 0x20ll, puzzle | 0x30010030010ll, 00164: partsUsed | 0x10l); 00165: if(!(puzzle & 0x10030010030ll)) 00166: doSolve(5, 0x20ll, puzzle | 0x10030010030ll, 00167: partsUsed | 0x10l); 00168: if(!(puzzle & 0x20030020030ll)) 00169: doSolve(5, 0x20ll, puzzle | 0x20030020030ll, 00170: partsUsed | 0x10l); 00171: piece5at4: 00172: if (partsUsed & 0x20l) goto piece6at4; 00173: if (!(puzzle & 0x10010010010ll)) { 00174: if(!(puzzle & 0x10010010090ll)) 00175: doSolve(5, 0x20ll, puzzle | 0x10010010090ll, 00176: partsUsed | 0x20l); 00177: if(!(puzzle & 0x90010010010ll)) 00178: doSolve(5, 0x20ll, puzzle | 0x90010010010ll, 00179: partsUsed | 0x20l); 00180: if(!(puzzle & 0x10010010030ll)) 00181: doSolve(5, 0x20ll, puzzle | 0x10010010030ll, 00182: partsUsed | 0x20l); 00183: if(!(puzzle & 0x30010010010ll)) 00184: doSolve(5, 0x20ll, puzzle | 0x30010010010ll, 00185: partsUsed | 0x20l); 00186: } 00187: if (!(puzzle & 0x2490ll)) { 00188: if(!(puzzle & 0x2002490ll)) 00189: doSolve(5, 0x20ll, puzzle | 0x2002490ll, 00190: partsUsed | 0x20l); 00191: if(!(puzzle & 0x24b0ll)) 00192: doSolve(5, 0x20ll, puzzle | 0x24b0ll, 00193: partsUsed | 0x20l); 00194: if(!(puzzle & 0x12490ll)) 00195: doSolve(5, 0x20ll, puzzle | 0x12490ll, 00196: partsUsed | 0x20l); 00197: if(!(puzzle & 0x6490ll)) 00198: doSolve(5, 0x20ll, puzzle | 0x6490ll, 00199: partsUsed | 0x20l); 00200: } 00201: if(!(puzzle & 0x2490010ll)) 00202: doSolve(5, 0x20ll, puzzle | 0x2490010ll, 00203: partsUsed | 0x20l); 00204: if(!(puzzle & 0x4930ll)) 00205: doSolve(5, 0x20ll, puzzle | 0x4930ll, 00206: partsUsed | 0x20l); 00207: if(!(puzzle & 0x80080080090ll)) 00208: doSolve(5, 0x20ll, puzzle | 0x80080080090ll, 00209: partsUsed | 0x20l); 00210: if(!(puzzle & 0x20020020030ll)) 00211: doSolve(5, 0x20ll, puzzle | 0x20020020030ll, 00212: partsUsed | 0x20l); 00213: piece6at4: 00214: if (partsUsed & 0x40l) goto piece7at4; 00215: if (!(puzzle & 0x10010010010ll)) { 00216: if(!(puzzle & 0x10010090010ll)) 00217: doSolve(5, 0x20ll, puzzle | 0x10010090010ll, 00218: partsUsed | 0x40l); 00219: if(!(puzzle & 0x10090010010ll)) 00220: doSolve(5, 0x20ll, puzzle | 0x10090010010ll, 00221: partsUsed | 0x40l); 00222: if(!(puzzle & 0x10010030010ll)) 00223: doSolve(5, 0x20ll, puzzle | 0x10010030010ll, 00224: partsUsed | 0x40l); 00225: if(!(puzzle & 0x10030010010ll)) 00226: doSolve(5, 0x20ll, puzzle | 0x10030010010ll, 00227: partsUsed | 0x40l); 00228: } 00229: if (!(puzzle & 0x2490ll)) { 00230: if(!(puzzle & 0x402490ll)) 00231: doSolve(5, 0x20ll, puzzle | 0x402490ll, 00232: partsUsed | 0x40l); 00233: if(!(puzzle & 0x2590ll)) 00234: doSolve(5, 0x20ll, puzzle | 0x2590ll, 00235: partsUsed | 0x40l); 00236: if(!(puzzle & 0x82490ll)) 00237: doSolve(5, 0x20ll, puzzle | 0x82490ll, 00238: partsUsed | 0x40l); 00239: if(!(puzzle & 0x2c90ll)) 00240: doSolve(5, 0x20ll, puzzle | 0x2c90ll, 00241: partsUsed | 0x40l); 00242: } 00243: piece7at4: 00244: if (partsUsed & 0x80l) goto piece8at4; 00245: if(!(puzzle & 0x90010090ll)) 00246: doSolve(5, 0x20ll, puzzle | 0x90010090ll, 00247: partsUsed | 0x80l); 00248: if(!(puzzle & 0x90080090ll)) 00249: doSolve(5, 0x20ll, puzzle | 0x90080090ll, 00250: partsUsed | 0x80l); 00251: if(!(puzzle & 0x490410ll)) 00252: doSolve(5, 0x20ll, puzzle | 0x490410ll, 00253: partsUsed | 0x80l); 00254: if(!(puzzle & 0x410490ll)) 00255: doSolve(5, 0x20ll, puzzle | 0x410490ll, 00256: partsUsed | 0x80l); 00257: if(!(puzzle & 0x2f0ll)) 00258: doSolve(5, 0x20ll, puzzle | 0x2f0ll, 00259: partsUsed | 0x80l); 00260: if(!(puzzle & 0xcb0ll)) 00261: doSolve(5, 0x20ll, puzzle | 0xcb0ll, 00262: partsUsed | 0x80l); 00263: if(!(puzzle & 0xd30ll)) 00264: doSolve(5, 0x20ll, puzzle | 0xd30ll, 00265: partsUsed | 0x80l); 00266: if(!(puzzle & 0x3d0ll)) 00267: doSolve(5, 0x20ll, puzzle | 0x3d0ll, 00268: partsUsed | 0x80l); 00269: if(!(puzzle & 0x30020030ll)) 00270: doSolve(5, 0x20ll, puzzle | 0x30020030ll, 00271: partsUsed | 0x80l); 00272: if(!(puzzle & 0x30010030ll)) 00273: doSolve(5, 0x20ll, puzzle | 0x30010030ll, 00274: partsUsed | 0x80l); 00275: if(!(puzzle & 0x70050ll)) 00276: doSolve(5, 0x20ll, puzzle | 0x70050ll, 00277: partsUsed | 0x80l); 00278: if(!(puzzle & 0x50070ll)) 00279: doSolve(5, 0x20ll, puzzle | 0x50070ll, 00280: partsUsed | 0x80l); 00281: piece8at4: 00282: if (partsUsed & 0x100l) goto piece9at4; 00283: if(!(puzzle & 0x100130ll)) 00284: doSolve(5, 0x20ll, puzzle | 0x100130ll, 00285: partsUsed | 0x100l); 00286: if(!(puzzle & 0x130010ll)) 00287: doSolve(5, 0x20ll, puzzle | 0x130010ll, 00288: partsUsed | 0x100l); 00289: if(!(puzzle & 0x200b0ll)) 00290: doSolve(5, 0x20ll, puzzle | 0x200b0ll, 00291: partsUsed | 0x100l); 00292: if(!(puzzle & 0x90030ll)) 00293: doSolve(5, 0x20ll, puzzle | 0x90030ll, 00294: partsUsed | 0x100l); 00295: if(!(puzzle & 0x180090ll)) 00296: doSolve(5, 0x20ll, puzzle | 0x180090ll, 00297: partsUsed | 0x100l); 00298: if(!(puzzle & 0x10190ll)) 00299: doSolve(5, 0x20ll, puzzle | 0x10190ll, 00300: partsUsed | 0x100l); 00301: piece9at4: 00302: if (partsUsed & 0x200l) goto piece10at4; 00303: if(!(puzzle & 0x80490010ll)) 00304: doSolve(5, 0x20ll, puzzle | 0x80490010ll, 00305: partsUsed | 0x200l); 00306: if(!(puzzle & 0x80480090ll)) 00307: doSolve(5, 0x20ll, puzzle | 0x80480090ll, 00308: partsUsed | 0x200l); 00309: if(!(puzzle & 0xb30ll)) 00310: doSolve(5, 0x20ll, puzzle | 0xb30ll, 00311: partsUsed | 0x200l); 00312: if(!(puzzle & 0xb90ll)) 00313: doSolve(5, 0x20ll, puzzle | 0xb90ll, 00314: partsUsed | 0x200l); 00315: if(!(puzzle & 0x20060030ll)) 00316: doSolve(5, 0x20ll, puzzle | 0x20060030ll, 00317: partsUsed | 0x200l); 00318: if(!(puzzle & 0x20070010ll)) 00319: doSolve(5, 0x20ll, puzzle | 0x20070010ll, 00320: partsUsed | 0x200l); 00321: piece10at4: 00322: if (partsUsed & 0x400l) goto piece11at4; 00323: if (!(puzzle & 0x80090ll)) { 00324: if(!(puzzle & 0x10090090ll)) 00325: doSolve(5, 0x20ll, puzzle | 0x10090090ll, 00326: partsUsed | 0x400l); 00327: if(!(puzzle & 0x490090ll)) 00328: doSolve(5, 0x20ll, puzzle | 0x490090ll, 00329: partsUsed | 0x400l); 00330: if(!(puzzle & 0x480490ll)) 00331: doSolve(5, 0x20ll, puzzle | 0x480490ll, 00332: partsUsed | 0x400l); 00333: if(!(puzzle & 0x90490ll)) 00334: doSolve(5, 0x20ll, puzzle | 0x90490ll, 00335: partsUsed | 0x400l); 00336: if(!(puzzle & 0x80090090ll)) 00337: doSolve(5, 0x20ll, puzzle | 0x80090090ll, 00338: partsUsed | 0x400l); 00339: } 00340: if (!(puzzle & 0x130ll)) { 00341: if(!(puzzle & 0x370ll)) 00342: doSolve(5, 0x20ll, puzzle | 0x370ll, 00343: partsUsed | 0x400l); 00344: if(!(puzzle & 0x1f0ll)) 00345: doSolve(5, 0x20ll, puzzle | 0x1f0ll, 00346: partsUsed | 0x400l); 00347: if(!(puzzle & 0x5b0ll)) 00348: doSolve(5, 0x20ll, puzzle | 0x5b0ll, 00349: partsUsed | 0x400l); 00350: if(!(puzzle & 0x9b0ll)) 00351: doSolve(5, 0x20ll, puzzle | 0x9b0ll, 00352: partsUsed | 0x400l); 00353: if(!(puzzle & 0x3b0ll)) 00354: doSolve(5, 0x20ll, puzzle | 0x3b0ll, 00355: partsUsed | 0x400l); 00356: } 00357: if (!(puzzle & 0x10010010ll)) { 00358: if(!(puzzle & 0x90090010ll)) 00359: doSolve(5, 0x20ll, puzzle | 0x90090010ll, 00360: partsUsed | 0x400l); 00361: if(!(puzzle & 0x10030030ll)) 00362: doSolve(5, 0x20ll, puzzle | 0x10030030ll, 00363: partsUsed | 0x400l); 00364: if(!(puzzle & 0x30030010ll)) 00365: doSolve(5, 0x20ll, puzzle | 0x30030010ll, 00366: partsUsed | 0x400l); 00367: } 00368: if (!(puzzle & 0x20030ll)) { 00369: if(!(puzzle & 0x20030030ll)) 00370: doSolve(5, 0x20ll, puzzle | 0x20030030ll, 00371: partsUsed | 0x400l); 00372: if(!(puzzle & 0x70030ll)) 00373: doSolve(5, 0x20ll, puzzle | 0x70030ll, 00374: partsUsed | 0x400l); 00375: if(!(puzzle & 0x30070ll)) 00376: doSolve(5, 0x20ll, puzzle | 0x30070ll, 00377: partsUsed | 0x400l); 00378: if(!(puzzle & 0x60070ll)) 00379: doSolve(5, 0x20ll, puzzle | 0x60070ll, 00380: partsUsed | 0x400l); 00381: } 00382: if(!(puzzle & 0xd90ll)) 00383: doSolve(5, 0x20ll, puzzle | 0xd90ll, 00384: partsUsed | 0x400l); 00385: piece11at4: 00386: if (partsUsed & 0x800l) goto piece12at4; 00387: if (!(puzzle & 0x10030ll)) { 00388: if(!(puzzle & 0x101b0ll)) 00389: doSolve(5, 0x20ll, puzzle | 0x101b0ll, 00390: partsUsed | 0x800l); 00391: if(!(puzzle & 0xb0030ll)) 00392: doSolve(5, 0x20ll, puzzle | 0xb0030ll, 00393: partsUsed | 0x800l); 00394: if(!(puzzle & 0x300b0ll)) 00395: doSolve(5, 0x20ll, puzzle | 0x300b0ll, 00396: partsUsed | 0x800l); 00397: if(!(puzzle & 0x30130ll)) 00398: doSolve(5, 0x20ll, puzzle | 0x30130ll, 00399: partsUsed | 0x800l); 00400: if(!(puzzle & 0x130030ll)) 00401: doSolve(5, 0x20ll, puzzle | 0x130030ll, 00402: partsUsed | 0x800l); 00403: if(!(puzzle & 0x900b0ll)) 00404: doSolve(5, 0x20ll, puzzle | 0x900b0ll, 00405: partsUsed | 0x800l); 00406: } 00407: if (!(puzzle & 0x100110ll)) { 00408: if(!(puzzle & 0x180190ll)) 00409: doSolve(5, 0x20ll, puzzle | 0x180190ll, 00410: partsUsed | 0x800l); 00411: if(!(puzzle & 0x120130ll)) 00412: doSolve(5, 0x20ll, puzzle | 0x120130ll, 00413: partsUsed | 0x800l); 00414: if(!(puzzle & 0x1001b0ll)) 00415: doSolve(5, 0x20ll, puzzle | 0x1001b0ll, 00416: partsUsed | 0x800l); 00417: } 00418: if (!(puzzle & 0x80090ll)) { 00419: if(!(puzzle & 0xb0090ll)) 00420: doSolve(5, 0x20ll, puzzle | 0xb0090ll, 00421: partsUsed | 0x800l); 00422: if(!(puzzle & 0x90190ll)) 00423: doSolve(5, 0x20ll, puzzle | 0x90190ll, 00424: partsUsed | 0x800l); 00425: if(!(puzzle & 0x801b0ll)) 00426: doSolve(5, 0x20ll, puzzle | 0x801b0ll, 00427: partsUsed | 0x800l); 00428: if(!(puzzle & 0x190090ll)) 00429: doSolve(5, 0x20ll, puzzle | 0x190090ll, 00430: partsUsed | 0x800l); 00431: } 00432: if(!(puzzle & 0x201b0ll)) 00433: doSolve(5, 0x20ll, puzzle | 0x201b0ll, 00434: partsUsed | 0x800l); 00435: if(!(puzzle & 0x1b0010ll)) 00436: doSolve(5, 0x20ll, puzzle | 0x1b0010ll, 00437: partsUsed | 0x800l); 00438: piece12at4: 00439: break; 00440: case 5: 00441: if (partsUsed & 0x2l) goto piece2at5; 00442: if(!(puzzle & 0x5e0ll)) 00443: doSolve(6, 0x40ll, puzzle | 0x5e0ll, 00444: partsUsed | 0x2l); 00445: if(!(puzzle & 0x10030060ll)) 00446: doSolve(6, 0x40ll, puzzle | 0x10030060ll, 00447: partsUsed | 0x2l); 00448: if(!(puzzle & 0x900120020ll)) 00449: doSolve(6, 0x40ll, puzzle | 0x900120020ll, 00450: partsUsed | 0x2l); 00451: if(!(puzzle & 0x800900120ll)) 00452: doSolve(6, 0x40ll, puzzle | 0x800900120ll, 00453: partsUsed | 0x2l); 00454: piece2at5: 00455: if (partsUsed & 0x4l) goto piece3at5; 00456: if(!(puzzle & 0x1d20ll)) 00457: doSolve(6, 0x40ll, puzzle | 0x1d20ll, 00458: partsUsed | 0x4l); 00459: if(!(puzzle & 0x100100920ll)) 00460: doSolve(6, 0x40ll, puzzle | 0x100100920ll, 00461: partsUsed | 0x4l); 00462: if(!(puzzle & 0x70020020ll)) 00463: doSolve(6, 0x40ll, puzzle | 0x70020020ll, 00464: partsUsed | 0x4l); 00465: if(!(puzzle & 0x20920020ll)) 00466: doSolve(6, 0x40ll, puzzle | 0x20920020ll, 00467: partsUsed | 0x4l); 00468: piece3at5: 00469: if (partsUsed & 0x8l) goto piece4at5; 00470: if(!(puzzle & 0xd60ll)) 00471: doSolve(6, 0x40ll, puzzle | 0xd60ll, 00472: partsUsed | 0x8l); 00473: if(!(puzzle & 0x30020060ll)) 00474: doSolve(6, 0x40ll, puzzle | 0x30020060ll, 00475: partsUsed | 0x8l); 00476: if(!(puzzle & 0x800920020ll)) 00477: doSolve(6, 0x40ll, puzzle | 0x800920020ll, 00478: partsUsed | 0x8l); 00479: if(!(puzzle & 0x900100120ll)) 00480: doSolve(6, 0x40ll, puzzle | 0x900100120ll, 00481: partsUsed | 0x8l); 00482: piece4at5: 00483: if (partsUsed & 0x10l) goto piece5at5; 00484: if (!(puzzle & 0x4920ll)) { 00485: if(!(puzzle & 0x69a0ll)) 00486: doSolve(6, 0x40ll, puzzle | 0x69a0ll, 00487: partsUsed | 0x10l); 00488: if(!(puzzle & 0x824920ll)) 00489: doSolve(6, 0x40ll, puzzle | 0x824920ll, 00490: partsUsed | 0x10l); 00491: if(!(puzzle & 0xcb20ll)) 00492: doSolve(6, 0x40ll, puzzle | 0xcb20ll, 00493: partsUsed | 0x10l); 00494: if(!(puzzle & 0x4104920ll)) 00495: doSolve(6, 0x40ll, puzzle | 0x4104920ll, 00496: partsUsed | 0x10l); 00497: if(!(puzzle & 0x5960ll)) 00498: doSolve(6, 0x40ll, puzzle | 0x5960ll, 00499: partsUsed | 0x10l); 00500: } 00501: if (!(puzzle & 0x20020020020ll)) { 00502: if(!(puzzle & 0x30020030020ll)) 00503: doSolve(6, 0x40ll, puzzle | 0x30020030020ll, 00504: partsUsed | 0x10l); 00505: if(!(puzzle & 0x120020120020ll)) 00506: doSolve(6, 0x40ll, puzzle | 0x120020120020ll, 00507: partsUsed | 0x10l); 00508: if(!(puzzle & 0x20120020120ll)) 00509: doSolve(6, 0x40ll, puzzle | 0x20120020120ll, 00510: partsUsed | 0x10l); 00511: if(!(puzzle & 0x60020060020ll)) 00512: doSolve(6, 0x40ll, puzzle | 0x60020060020ll, 00513: partsUsed | 0x10l); 00514: if(!(puzzle & 0x20060020060ll)) 00515: doSolve(6, 0x40ll, puzzle | 0x20060020060ll, 00516: partsUsed | 0x10l); 00517: } 00518: if(!(puzzle & 0x100120100120ll)) 00519: doSolve(6, 0x40ll, puzzle | 0x100120100120ll, 00520: partsUsed | 0x10l); 00521: if(!(puzzle & 0x9a60ll)) 00522: doSolve(6, 0x40ll, puzzle | 0x9a60ll, 00523: partsUsed | 0x10l); 00524: if(!(puzzle & 0x4920820ll)) 00525: doSolve(6, 0x40ll, puzzle | 0x4920820ll, 00526: partsUsed | 0x10l); 00527: if(!(puzzle & 0x40060040060ll)) 00528: doSolve(6, 0x40ll, puzzle | 0x40060040060ll, 00529: partsUsed | 0x10l); 00530: piece5at5: 00531: if (partsUsed & 0x20l) goto piece6at5; 00532: if (!(puzzle & 0x4920ll)) { 00533: if(!(puzzle & 0x6920ll)) 00534: doSolve(6, 0x40ll, puzzle | 0x6920ll, 00535: partsUsed | 0x20l); 00536: if(!(puzzle & 0x4004920ll)) 00537: doSolve(6, 0x40ll, puzzle | 0x4004920ll, 00538: partsUsed | 0x20l); 00539: if(!(puzzle & 0x4960ll)) 00540: doSolve(6, 0x40ll, puzzle | 0x4960ll, 00541: partsUsed | 0x20l); 00542: if(!(puzzle & 0x24920ll)) 00543: doSolve(6, 0x40ll, puzzle | 0x24920ll, 00544: partsUsed | 0x20l); 00545: if(!(puzzle & 0xc920ll)) 00546: doSolve(6, 0x40ll, puzzle | 0xc920ll, 00547: partsUsed | 0x20l); 00548: } 00549: if (!(puzzle & 0x20020020020ll)) { 00550: if(!(puzzle & 0x30020020020ll)) 00551: doSolve(6, 0x40ll, puzzle | 0x30020020020ll, 00552: partsUsed | 0x20l); 00553: if(!(puzzle & 0x20020020120ll)) 00554: doSolve(6, 0x40ll, puzzle | 0x20020020120ll, 00555: partsUsed | 0x20l); 00556: if(!(puzzle & 0x120020020020ll)) 00557: doSolve(6, 0x40ll, puzzle | 0x120020020020ll, 00558: partsUsed | 0x20l); 00559: if(!(puzzle & 0x20020020060ll)) 00560: doSolve(6, 0x40ll, puzzle | 0x20020020060ll, 00561: partsUsed | 0x20l); 00562: if(!(puzzle & 0x60020020020ll)) 00563: doSolve(6, 0x40ll, puzzle | 0x60020020020ll, 00564: partsUsed | 0x20l); 00565: } 00566: if(!(puzzle & 0x4920020ll)) 00567: doSolve(6, 0x40ll, puzzle | 0x4920020ll, 00568: partsUsed | 0x20l); 00569: if(!(puzzle & 0x9260ll)) 00570: doSolve(6, 0x40ll, puzzle | 0x9260ll, 00571: partsUsed | 0x20l); 00572: if(!(puzzle & 0x100100100120ll)) 00573: doSolve(6, 0x40ll, puzzle | 0x100100100120ll, 00574: partsUsed | 0x20l); 00575: if(!(puzzle & 0x40040040060ll)) 00576: doSolve(6, 0x40ll, puzzle | 0x40040040060ll, 00577: partsUsed | 0x20l); 00578: piece6at5: 00579: if (partsUsed & 0x40l) goto piece7at5; 00580: if (!(puzzle & 0x4920ll)) { 00581: if(!(puzzle & 0x49a0ll)) 00582: doSolve(6, 0x40ll, puzzle | 0x49a0ll, 00583: partsUsed | 0x40l); 00584: if(!(puzzle & 0x4d20ll)) 00585: doSolve(6, 0x40ll, puzzle | 0x4d20ll, 00586: partsUsed | 0x40l); 00587: if(!(puzzle & 0x804920ll)) 00588: doSolve(6, 0x40ll, puzzle | 0x804920ll, 00589: partsUsed | 0x40l); 00590: if(!(puzzle & 0x4b20ll)) 00591: doSolve(6, 0x40ll, puzzle | 0x4b20ll, 00592: partsUsed | 0x40l); 00593: if(!(puzzle & 0x104920ll)) 00594: doSolve(6, 0x40ll, puzzle | 0x104920ll, 00595: partsUsed | 0x40l); 00596: if(!(puzzle & 0x5920ll)) 00597: doSolve(6, 0x40ll, puzzle | 0x5920ll, 00598: partsUsed | 0x40l); 00599: } 00600: if (!(puzzle & 0x20020020020ll)) { 00601: if(!(puzzle & 0x20020030020ll)) 00602: doSolve(6, 0x40ll, puzzle | 0x20020030020ll, 00603: partsUsed | 0x40l); 00604: if(!(puzzle & 0x20030020020ll)) 00605: doSolve(6, 0x40ll, puzzle | 0x20030020020ll, 00606: partsUsed | 0x40l); 00607: if(!(puzzle & 0x20020120020ll)) 00608: doSolve(6, 0x40ll, puzzle | 0x20020120020ll, 00609: partsUsed | 0x40l); 00610: if(!(puzzle & 0x20120020020ll)) 00611: doSolve(6, 0x40ll, puzzle | 0x20120020020ll, 00612: partsUsed | 0x40l); 00613: if(!(puzzle & 0x20020060020ll)) 00614: doSolve(6, 0x40ll, puzzle | 0x20020060020ll, 00615: partsUsed | 0x40l); 00616: if(!(puzzle & 0x20060020020ll)) 00617: doSolve(6, 0x40ll, puzzle | 0x20060020020ll, 00618: partsUsed | 0x40l); 00619: } 00620: piece7at5: 00621: if (partsUsed & 0x80l) goto piece8at5; 00622: if(!(puzzle & 0x120020120ll)) 00623: doSolve(6, 0x40ll, puzzle | 0x120020120ll, 00624: partsUsed | 0x80l); 00625: if(!(puzzle & 0x120100120ll)) 00626: doSolve(6, 0x40ll, puzzle | 0x120100120ll, 00627: partsUsed | 0x80l); 00628: if(!(puzzle & 0x920820ll)) 00629: doSolve(6, 0x40ll, puzzle | 0x920820ll, 00630: partsUsed | 0x80l); 00631: if(!(puzzle & 0x820920ll)) 00632: doSolve(6, 0x40ll, puzzle | 0x820920ll, 00633: partsUsed | 0x80l); 00634: if(!(puzzle & 0x1960ll)) 00635: doSolve(6, 0x40ll, puzzle | 0x1960ll, 00636: partsUsed | 0x80l); 00637: if(!(puzzle & 0x1a60ll)) 00638: doSolve(6, 0x40ll, puzzle | 0x1a60ll, 00639: partsUsed | 0x80l); 00640: if(!(puzzle & 0x60040060ll)) 00641: doSolve(6, 0x40ll, puzzle | 0x60040060ll, 00642: partsUsed | 0x80l); 00643: if(!(puzzle & 0x60020060ll)) 00644: doSolve(6, 0x40ll, puzzle | 0x60020060ll, 00645: partsUsed | 0x80l); 00646: piece8at5: 00647: if (partsUsed & 0x100l) goto piece9at5; 00648: if(!(puzzle & 0x801a0ll)) 00649: doSolve(6, 0x40ll, puzzle | 0x801a0ll, 00650: partsUsed | 0x100l); 00651: if(!(puzzle & 0x30120ll)) 00652: doSolve(6, 0x40ll, puzzle | 0x30120ll, 00653: partsUsed | 0x100l); 00654: if(!(puzzle & 0x20320ll)) 00655: doSolve(6, 0x40ll, puzzle | 0x20320ll, 00656: partsUsed | 0x100l); 00657: if(!(puzzle & 0x1a0020ll)) 00658: doSolve(6, 0x40ll, puzzle | 0x1a0020ll, 00659: partsUsed | 0x100l); 00660: if(!(puzzle & 0x120060ll)) 00661: doSolve(6, 0x40ll, puzzle | 0x120060ll, 00662: partsUsed | 0x100l); 00663: if(!(puzzle & 0x260020ll)) 00664: doSolve(6, 0x40ll, puzzle | 0x260020ll, 00665: partsUsed | 0x100l); 00666: if(!(puzzle & 0x40160ll)) 00667: doSolve(6, 0x40ll, puzzle | 0x40160ll, 00668: partsUsed | 0x100l); 00669: if(!(puzzle & 0x300120ll)) 00670: doSolve(6, 0x40ll, puzzle | 0x300120ll, 00671: partsUsed | 0x100l); 00672: if(!(puzzle & 0x200260ll)) 00673: doSolve(6, 0x40ll, puzzle | 0x200260ll, 00674: partsUsed | 0x100l); 00675: piece9at5: 00676: if (partsUsed & 0x200l) goto piece10at5; 00677: if (!(puzzle & 0x1a0ll)) { 00678: if(!(puzzle & 0x13a0ll)) 00679: doSolve(6, 0x40ll, puzzle | 0x13a0ll, 00680: partsUsed | 0x200l); 00681: if(!(puzzle & 0x7a0ll)) 00682: doSolve(6, 0x40ll, puzzle | 0x7a0ll, 00683: partsUsed | 0x200l); 00684: if(!(puzzle & 0x9e0ll)) 00685: doSolve(6, 0x40ll, puzzle | 0x9e0ll, 00686: partsUsed | 0x200l); 00687: if(!(puzzle & 0x19a0ll)) 00688: doSolve(6, 0x40ll, puzzle | 0x19a0ll, 00689: partsUsed | 0x200l); 00690: } 00691: if (!(puzzle & 0x20020020ll)) { 00692: if(!(puzzle & 0x20030060ll)) 00693: doSolve(6, 0x40ll, puzzle | 0x20030060ll, 00694: partsUsed | 0x200l); 00695: if(!(puzzle & 0x60030020ll)) 00696: doSolve(6, 0x40ll, puzzle | 0x60030020ll, 00697: partsUsed | 0x200l); 00698: if(!(puzzle & 0x30060020ll)) 00699: doSolve(6, 0x40ll, puzzle | 0x30060020ll, 00700: partsUsed | 0x200l); 00701: } 00702: if(!(puzzle & 0xf20ll)) 00703: doSolve(6, 0x40ll, puzzle | 0xf20ll, 00704: partsUsed | 0x200l); 00705: if(!(puzzle & 0x10070020ll)) 00706: doSolve(6, 0x40ll, puzzle | 0x10070020ll, 00707: partsUsed | 0x200l); 00708: if(!(puzzle & 0x40070020ll)) 00709: doSolve(6, 0x40ll, puzzle | 0x40070020ll, 00710: partsUsed | 0x200l); 00711: if(!(puzzle & 0x100920020ll)) 00712: doSolve(6, 0x40ll, puzzle | 0x100920020ll, 00713: partsUsed | 0x200l); 00714: if(!(puzzle & 0x100900120ll)) 00715: doSolve(6, 0x40ll, puzzle | 0x100900120ll, 00716: partsUsed | 0x200l); 00717: piece10at5: 00718: if (partsUsed & 0x400l) goto piece11at5; 00719: if (!(puzzle & 0x100120ll)) { 00720: if(!(puzzle & 0x20120120ll)) 00721: doSolve(6, 0x40ll, puzzle | 0x20120120ll, 00722: partsUsed | 0x400l); 00723: if(!(puzzle & 0x920120ll)) 00724: doSolve(6, 0x40ll, puzzle | 0x920120ll, 00725: partsUsed | 0x400l); 00726: if(!(puzzle & 0x900920ll)) 00727: doSolve(6, 0x40ll, puzzle | 0x900920ll, 00728: partsUsed | 0x400l); 00729: if(!(puzzle & 0x120920ll)) 00730: doSolve(6, 0x40ll, puzzle | 0x120920ll, 00731: partsUsed | 0x400l); 00732: if(!(puzzle & 0x100120120ll)) 00733: doSolve(6, 0x40ll, puzzle | 0x100120120ll, 00734: partsUsed | 0x400l); 00735: } 00736: if (!(puzzle & 0x20020020ll)) { 00737: if(!(puzzle & 0x120120020ll)) 00738: doSolve(6, 0x40ll, puzzle | 0x120120020ll, 00739: partsUsed | 0x400l); 00740: if(!(puzzle & 0x20060060ll)) 00741: doSolve(6, 0x40ll, puzzle | 0x20060060ll, 00742: partsUsed | 0x400l); 00743: if(!(puzzle & 0x60060020ll)) 00744: doSolve(6, 0x40ll, puzzle | 0x60060020ll, 00745: partsUsed | 0x400l); 00746: } 00747: if (!(puzzle & 0x320ll)) { 00748: if(!(puzzle & 0xb60ll)) 00749: doSolve(6, 0x40ll, puzzle | 0xb60ll, 00750: partsUsed | 0x400l); 00751: if(!(puzzle & 0x1360ll)) 00752: doSolve(6, 0x40ll, puzzle | 0x1360ll, 00753: partsUsed | 0x400l); 00754: if(!(puzzle & 0x1b20ll)) 00755: doSolve(6, 0x40ll, puzzle | 0x1b20ll, 00756: partsUsed | 0x400l); 00757: } 00758: if(!(puzzle & 0x3e0ll)) 00759: doSolve(6, 0x40ll, puzzle | 0x3e0ll, 00760: partsUsed | 0x400l); 00761: if(!(puzzle & 0xda0ll)) 00762: doSolve(6, 0x40ll, puzzle | 0xda0ll, 00763: partsUsed | 0x400l); 00764: if(!(puzzle & 0x70060ll)) 00765: doSolve(6, 0x40ll, puzzle | 0x70060ll, 00766: partsUsed | 0x400l); 00767: if(!(puzzle & 0x30030020ll)) 00768: doSolve(6, 0x40ll, puzzle | 0x30030020ll, 00769: partsUsed | 0x400l); 00770: if(!(puzzle & 0x40060060ll)) 00771: doSolve(6, 0x40ll, puzzle | 0x40060060ll, 00772: partsUsed | 0x400l); 00773: piece11at5: 00774: if (partsUsed & 0x800l) goto piece12at5; 00775: if (!(puzzle & 0x180020ll)) { 00776: if(!(puzzle & 0x1b0020ll)) 00777: doSolve(6, 0x40ll, puzzle | 0x1b0020ll, 00778: partsUsed | 0x800l); 00779: if(!(puzzle & 0x1a0120ll)) 00780: doSolve(6, 0x40ll, puzzle | 0x1a0120ll, 00781: partsUsed | 0x800l); 00782: if(!(puzzle & 0x1801a0ll)) 00783: doSolve(6, 0x40ll, puzzle | 0x1801a0ll, 00784: partsUsed | 0x800l); 00785: } 00786: if (!(puzzle & 0x20120ll)) { 00787: if(!(puzzle & 0x130120ll)) 00788: doSolve(6, 0x40ll, puzzle | 0x130120ll, 00789: partsUsed | 0x800l); 00790: if(!(puzzle & 0x1201a0ll)) 00791: doSolve(6, 0x40ll, puzzle | 0x1201a0ll, 00792: partsUsed | 0x800l); 00793: if(!(puzzle & 0x20360ll)) 00794: doSolve(6, 0x40ll, puzzle | 0x20360ll, 00795: partsUsed | 0x800l); 00796: if(!(puzzle & 0x160120ll)) 00797: doSolve(6, 0x40ll, puzzle | 0x160120ll, 00798: partsUsed | 0x800l); 00799: if(!(puzzle & 0x60160ll)) 00800: doSolve(6, 0x40ll, puzzle | 0x60160ll, 00801: partsUsed | 0x800l); 00802: if(!(puzzle & 0x120320ll)) 00803: doSolve(6, 0x40ll, puzzle | 0x120320ll, 00804: partsUsed | 0x800l); 00805: if(!(puzzle & 0x320120ll)) 00806: doSolve(6, 0x40ll, puzzle | 0x320120ll, 00807: partsUsed | 0x800l); 00808: if(!(puzzle & 0x120160ll)) 00809: doSolve(6, 0x40ll, puzzle | 0x120160ll, 00810: partsUsed | 0x800l); 00811: } 00812: if (!(puzzle & 0x40060ll)) { 00813: if(!(puzzle & 0x160060ll)) 00814: doSolve(6, 0x40ll, puzzle | 0x160060ll, 00815: partsUsed | 0x800l); 00816: if(!(puzzle & 0x240260ll)) 00817: doSolve(6, 0x40ll, puzzle | 0x240260ll, 00818: partsUsed | 0x800l); 00819: if(!(puzzle & 0x60260ll)) 00820: doSolve(6, 0x40ll, puzzle | 0x60260ll, 00821: partsUsed | 0x800l); 00822: if(!(puzzle & 0x260060ll)) 00823: doSolve(6, 0x40ll, puzzle | 0x260060ll, 00824: partsUsed | 0x800l); 00825: if(!(puzzle & 0x40360ll)) 00826: doSolve(6, 0x40ll, puzzle | 0x40360ll, 00827: partsUsed | 0x800l); 00828: } 00829: if (!(puzzle & 0x320ll)) { 00830: if(!(puzzle & 0x300320ll)) 00831: doSolve(6, 0x40ll, puzzle | 0x300320ll, 00832: partsUsed | 0x800l); 00833: if(!(puzzle & 0x200360ll)) 00834: doSolve(6, 0x40ll, puzzle | 0x200360ll, 00835: partsUsed | 0x800l); 00836: if(!(puzzle & 0x100360ll)) 00837: doSolve(6, 0x40ll, puzzle | 0x100360ll, 00838: partsUsed | 0x800l); 00839: } 00840: if(!(puzzle & 0x360020ll)) 00841: doSolve(6, 0x40ll, puzzle | 0x360020ll, 00842: partsUsed | 0x800l); 00843: piece12at5: 00844: break; 00845: case 6: 00846: if (partsUsed & 0x2l) goto piece2at6; 00847: if(!(puzzle & 0xf40ll)) 00848: doSolve(7, 0x80ll, puzzle | 0xf40ll, 00849: partsUsed | 0x2l); 00850: if(!(puzzle & 0x30060040ll)) 00851: doSolve(7, 0x80ll, puzzle | 0x30060040ll, 00852: partsUsed | 0x2l); 00853: if(!(puzzle & 0x1200240040ll)) 00854: doSolve(7, 0x80ll, puzzle | 0x1200240040ll, 00855: partsUsed | 0x2l); 00856: if(!(puzzle & 0x1001200240ll)) 00857: doSolve(7, 0x80ll, puzzle | 0x1001200240ll, 00858: partsUsed | 0x2l); 00859: piece2at6: 00860: if (partsUsed & 0x4l) goto piece3at6; 00861: if(!(puzzle & 0x13c0ll)) 00862: doSolve(7, 0x80ll, puzzle | 0x13c0ll, 00863: partsUsed | 0x4l); 00864: if(!(puzzle & 0x200201240ll)) 00865: doSolve(7, 0x80ll, puzzle | 0x200201240ll, 00866: partsUsed | 0x4l); 00867: if(!(puzzle & 0x40070040ll)) 00868: doSolve(7, 0x80ll, puzzle | 0x40070040ll, 00869: partsUsed | 0x4l); 00870: if(!(puzzle & 0x41240040ll)) 00871: doSolve(7, 0x80ll, puzzle | 0x41240040ll, 00872: partsUsed | 0x4l); 00873: piece3at6: 00874: if (partsUsed & 0x8l) goto piece4at6; 00875: if(!(puzzle & 0x7c0ll)) 00876: doSolve(7, 0x80ll, puzzle | 0x7c0ll, 00877: partsUsed | 0x8l); 00878: if(!(puzzle & 0x10070040ll)) 00879: doSolve(7, 0x80ll, puzzle | 0x10070040ll, 00880: partsUsed | 0x8l); 00881: if(!(puzzle & 0x1001240040ll)) 00882: doSolve(7, 0x80ll, puzzle | 0x1001240040ll, 00883: partsUsed | 0x8l); 00884: if(!(puzzle & 0x1200200240ll)) 00885: doSolve(7, 0x80ll, puzzle | 0x1200200240ll, 00886: partsUsed | 0x8l); 00887: piece4at6: 00888: if (partsUsed & 0x10l) goto piece5at6; 00889: if (!(puzzle & 0x9240ll)) { 00890: if(!(puzzle & 0xd340ll)) 00891: doSolve(7, 0x80ll, puzzle | 0xd340ll, 00892: partsUsed | 0x10l); 00893: if(!(puzzle & 0x1049240ll)) 00894: doSolve(7, 0x80ll, puzzle | 0x1049240ll, 00895: partsUsed | 0x10l); 00896: if(!(puzzle & 0x8209240ll)) 00897: doSolve(7, 0x80ll, puzzle | 0x8209240ll, 00898: partsUsed | 0x10l); 00899: } 00900: if (!(puzzle & 0x40040040040ll)) { 00901: if(!(puzzle & 0x60040060040ll)) 00902: doSolve(7, 0x80ll, puzzle | 0x60040060040ll, 00903: partsUsed | 0x10l); 00904: if(!(puzzle & 0x240040240040ll)) 00905: doSolve(7, 0x80ll, puzzle | 0x240040240040ll, 00906: partsUsed | 0x10l); 00907: if(!(puzzle & 0x40240040240ll)) 00908: doSolve(7, 0x80ll, puzzle | 0x40240040240ll, 00909: partsUsed | 0x10l); 00910: } 00911: if(!(puzzle & 0x200240200240ll)) 00912: doSolve(7, 0x80ll, puzzle | 0x200240200240ll, 00913: partsUsed | 0x10l); 00914: if(!(puzzle & 0x9241040ll)) 00915: doSolve(7, 0x80ll, puzzle | 0x9241040ll, 00916: partsUsed | 0x10l); 00917: piece5at6: 00918: if (partsUsed & 0x20l) goto piece6at6; 00919: if (!(puzzle & 0x9240ll)) { 00920: if(!(puzzle & 0xd240ll)) 00921: doSolve(7, 0x80ll, puzzle | 0xd240ll, 00922: partsUsed | 0x20l); 00923: if(!(puzzle & 0x8009240ll)) 00924: doSolve(7, 0x80ll, puzzle | 0x8009240ll, 00925: partsUsed | 0x20l); 00926: if(!(puzzle & 0x49240ll)) 00927: doSolve(7, 0x80ll, puzzle | 0x49240ll, 00928: partsUsed | 0x20l); 00929: } 00930: if (!(puzzle & 0x40040040040ll)) { 00931: if(!(puzzle & 0x60040040040ll)) 00932: doSolve(7, 0x80ll, puzzle | 0x60040040040ll, 00933: partsUsed | 0x20l); 00934: if(!(puzzle & 0x40040040240ll)) 00935: doSolve(7, 0x80ll, puzzle | 0x40040040240ll, 00936: partsUsed | 0x20l); 00937: if(!(puzzle & 0x240040040040ll)) 00938: doSolve(7, 0x80ll, puzzle | 0x240040040040ll, 00939: partsUsed | 0x20l); 00940: } 00941: if(!(puzzle & 0x9240040ll)) 00942: doSolve(7, 0x80ll, puzzle | 0x9240040ll, 00943: partsUsed | 0x20l); 00944: if(!(puzzle & 0x200200200240ll)) 00945: doSolve(7, 0x80ll, puzzle | 0x200200200240ll, 00946: partsUsed | 0x20l); 00947: piece6at6: 00948: if (partsUsed & 0x40l) goto piece7at6; 00949: if (!(puzzle & 0x9240ll)) { 00950: if(!(puzzle & 0x9340ll)) 00951: doSolve(7, 0x80ll, puzzle | 0x9340ll, 00952: partsUsed | 0x40l); 00953: if(!(puzzle & 0x9a40ll)) 00954: doSolve(7, 0x80ll, puzzle | 0x9a40ll, 00955: partsUsed | 0x40l); 00956: if(!(puzzle & 0x1009240ll)) 00957: doSolve(7, 0x80ll, puzzle | 0x1009240ll, 00958: partsUsed | 0x40l); 00959: if(!(puzzle & 0x209240ll)) 00960: doSolve(7, 0x80ll, puzzle | 0x209240ll, 00961: partsUsed | 0x40l); 00962: } 00963: if (!(puzzle & 0x40040040040ll)) { 00964: if(!(puzzle & 0x40040060040ll)) 00965: doSolve(7, 0x80ll, puzzle | 0x40040060040ll, 00966: partsUsed | 0x40l); 00967: if(!(puzzle & 0x40060040040ll)) 00968: doSolve(7, 0x80ll, puzzle | 0x40060040040ll, 00969: partsUsed | 0x40l); 00970: if(!(puzzle & 0x40040240040ll)) 00971: doSolve(7, 0x80ll, puzzle | 0x40040240040ll, 00972: partsUsed | 0x40l); 00973: if(!(puzzle & 0x40240040040ll)) 00974: doSolve(7, 0x80ll, puzzle | 0x40240040040ll, 00975: partsUsed | 0x40l); 00976: } 00977: piece7at6: 00978: if (partsUsed & 0x80l) goto piece8at6; 00979: if(!(puzzle & 0x240040240ll)) 00980: doSolve(7, 0x80ll, puzzle | 0x240040240ll, 00981: partsUsed | 0x80l); 00982: if(!(puzzle & 0x240200240ll)) 00983: doSolve(7, 0x80ll, puzzle | 0x240200240ll, 00984: partsUsed | 0x80l); 00985: if(!(puzzle & 0x1241040ll)) 00986: doSolve(7, 0x80ll, puzzle | 0x1241040ll, 00987: partsUsed | 0x80l); 00988: if(!(puzzle & 0x1041240ll)) 00989: doSolve(7, 0x80ll, puzzle | 0x1041240ll, 00990: partsUsed | 0x80l); 00991: piece8at6: 00992: if (partsUsed & 0x100l) goto piece9at6; 00993: if(!(puzzle & 0x340040ll)) 00994: doSolve(7, 0x80ll, puzzle | 0x340040ll, 00995: partsUsed | 0x100l); 00996: if(!(puzzle & 0x100340ll)) 00997: doSolve(7, 0x80ll, puzzle | 0x100340ll, 00998: partsUsed | 0x100l); 00999: if(!(puzzle & 0x60240ll)) 01000: doSolve(7, 0x80ll, puzzle | 0x60240ll, 01001: partsUsed | 0x100l); 01002: piece9at6: 01003: if (partsUsed & 0x200l) goto piece10at6; 01004: if(!(puzzle & 0xbc0ll)) 01005: doSolve(7, 0x80ll, puzzle | 0xbc0ll, 01006: partsUsed | 0x200l); 01007: if(!(puzzle & 0x20070040ll)) 01008: doSolve(7, 0x80ll, puzzle | 0x20070040ll, 01009: partsUsed | 0x200l); 01010: if(!(puzzle & 0x201240040ll)) 01011: doSolve(7, 0x80ll, puzzle | 0x201240040ll, 01012: partsUsed | 0x200l); 01013: if(!(puzzle & 0x201200240ll)) 01014: doSolve(7, 0x80ll, puzzle | 0x201200240ll, 01015: partsUsed | 0x200l); 01016: piece10at6: 01017: if (partsUsed & 0x400l) goto piece11at6; 01018: if (!(puzzle & 0x1240ll)) { 01019: if(!(puzzle & 0x1b40ll)) 01020: doSolve(7, 0x80ll, puzzle | 0x1b40ll, 01021: partsUsed | 0x400l); 01022: if(!(puzzle & 0x1201240ll)) 01023: doSolve(7, 0x80ll, puzzle | 0x1201240ll, 01024: partsUsed | 0x400l); 01025: if(!(puzzle & 0x241240ll)) 01026: doSolve(7, 0x80ll, puzzle | 0x241240ll, 01027: partsUsed | 0x400l); 01028: } 01029: if (!(puzzle & 0x40040040ll)) { 01030: if(!(puzzle & 0x60060040ll)) 01031: doSolve(7, 0x80ll, puzzle | 0x60060040ll, 01032: partsUsed | 0x400l); 01033: if(!(puzzle & 0x40240240ll)) 01034: doSolve(7, 0x80ll, puzzle | 0x40240240ll, 01035: partsUsed | 0x400l); 01036: if(!(puzzle & 0x240240040ll)) 01037: doSolve(7, 0x80ll, puzzle | 0x240240040ll, 01038: partsUsed | 0x400l); 01039: } 01040: if(!(puzzle & 0x1240240ll)) 01041: doSolve(7, 0x80ll, puzzle | 0x1240240ll, 01042: partsUsed | 0x400l); 01043: if(!(puzzle & 0x200240240ll)) 01044: doSolve(7, 0x80ll, puzzle | 0x200240240ll, 01045: partsUsed | 0x400l); 01046: piece11at6: 01047: if (partsUsed & 0x800l) goto piece12at6; 01048: if (!(puzzle & 0x300040ll)) { 01049: if(!(puzzle & 0x360040ll)) 01050: doSolve(7, 0x80ll, puzzle | 0x360040ll, 01051: partsUsed | 0x800l); 01052: if(!(puzzle & 0x340240ll)) 01053: doSolve(7, 0x80ll, puzzle | 0x340240ll, 01054: partsUsed | 0x800l); 01055: if(!(puzzle & 0x300340ll)) 01056: doSolve(7, 0x80ll, puzzle | 0x300340ll, 01057: partsUsed | 0x800l); 01058: } 01059: if(!(puzzle & 0x260240ll)) 01060: doSolve(7, 0x80ll, puzzle | 0x260240ll, 01061: partsUsed | 0x800l); 01062: if(!(puzzle & 0x240340ll)) 01063: doSolve(7, 0x80ll, puzzle | 0x240340ll, 01064: partsUsed | 0x800l); 01065: piece12at6: 01066: break; 01067: case 7: 01068: if (partsUsed & 0x2l) goto piece2at7; 01069: if(!(puzzle & 0x10090480ll)) 01070: doSolve(8, 0x100ll, puzzle | 0x10090480ll, 01071: partsUsed | 0x2l); 01072: if(!(puzzle & 0x2400480080ll)) 01073: doSolve(8, 0x100ll, puzzle | 0x2400480080ll, 01074: partsUsed | 0x2l); 01075: if(!(puzzle & 0x2002400480ll)) 01076: doSolve(8, 0x100ll, puzzle | 0x2002400480ll, 01077: partsUsed | 0x2l); 01078: if(!(puzzle & 0x9980ll)) 01079: doSolve(8, 0x100ll, puzzle | 0x9980ll, 01080: partsUsed | 0x2l); 01081: if(!(puzzle & 0xcc80ll)) 01082: doSolve(8, 0x100ll, puzzle | 0xcc80ll, 01083: partsUsed | 0x2l); 01084: if(!(puzzle & 0x200300180ll)) 01085: doSolve(8, 0x100ll, puzzle | 0x200300180ll, 01086: partsUsed | 0x2l); 01087: if(!(puzzle & 0x300180080ll)) 01088: doSolve(8, 0x100ll, puzzle | 0x300180080ll, 01089: partsUsed | 0x2l); 01090: piece2at7: 01091: if (partsUsed & 0x4l) goto piece3at7; 01092: if (!(puzzle & 0x80080080ll)) { 01093: if(!(puzzle & 0x490080080ll)) 01094: doSolve(8, 0x100ll, puzzle | 0x490080080ll, 01095: partsUsed | 0x4l); 01096: if(!(puzzle & 0x82480080ll)) 01097: doSolve(8, 0x100ll, puzzle | 0x82480080ll, 01098: partsUsed | 0x4l); 01099: if(!(puzzle & 0x80380080ll)) 01100: doSolve(8, 0x100ll, puzzle | 0x80380080ll, 01101: partsUsed | 0x4l); 01102: } 01103: if(!(puzzle & 0x400402480ll)) 01104: doSolve(8, 0x100ll, puzzle | 0x400402480ll, 01105: partsUsed | 0x4l); 01106: if(!(puzzle & 0x3c80ll)) 01107: doSolve(8, 0x100ll, puzzle | 0x3c80ll, 01108: partsUsed | 0x4l); 01109: if(!(puzzle & 0x4b80ll)) 01110: doSolve(8, 0x100ll, puzzle | 0x4b80ll, 01111: partsUsed | 0x4l); 01112: if(!(puzzle & 0x100100380ll)) 01113: doSolve(8, 0x100ll, puzzle | 0x100100380ll, 01114: partsUsed | 0x4l); 01115: piece3at7: 01116: if (partsUsed & 0x8l) goto piece4at7; 01117: if(!(puzzle & 0x90080480ll)) 01118: doSolve(8, 0x100ll, puzzle | 0x90080480ll, 01119: partsUsed | 0x8l); 01120: if(!(puzzle & 0x2002480080ll)) 01121: doSolve(8, 0x100ll, puzzle | 0x2002480080ll, 01122: partsUsed | 0x8l); 01123: if(!(puzzle & 0x2400400480ll)) 01124: doSolve(8, 0x100ll, puzzle | 0x2400400480ll, 01125: partsUsed | 0x8l); 01126: if(!(puzzle & 0xc980ll)) 01127: doSolve(8, 0x100ll, puzzle | 0xc980ll, 01128: partsUsed | 0x8l); 01129: if(!(puzzle & 0x9c80ll)) 01130: doSolve(8, 0x100ll, puzzle | 0x9c80ll, 01131: partsUsed | 0x8l); 01132: if(!(puzzle & 0x200380080ll)) 01133: doSolve(8, 0x100ll, puzzle | 0x200380080ll, 01134: partsUsed | 0x8l); 01135: if(!(puzzle & 0x300100180ll)) 01136: doSolve(8, 0x100ll, puzzle | 0x300100180ll, 01137: partsUsed | 0x8l); 01138: piece4at7: 01139: if (partsUsed & 0x10l) goto piece5at7; 01140: if (!(puzzle & 0x80080080080ll)) { 01141: if(!(puzzle & 0x80480080480ll)) 01142: doSolve(8, 0x100ll, puzzle | 0x80480080480ll, 01143: partsUsed | 0x10l); 01144: if(!(puzzle & 0x180080180080ll)) 01145: doSolve(8, 0x100ll, puzzle | 0x180080180080ll, 01146: partsUsed | 0x10l); 01147: if(!(puzzle & 0x80180080180ll)) 01148: doSolve(8, 0x100ll, puzzle | 0x80180080180ll, 01149: partsUsed | 0x10l); 01150: } 01151: if(!(puzzle & 0x2492080ll)) 01152: doSolve(8, 0x100ll, puzzle | 0x2492080ll, 01153: partsUsed | 0x10l); 01154: if(!(puzzle & 0x90080090080ll)) 01155: doSolve(8, 0x100ll, puzzle | 0x90080090080ll, 01156: partsUsed | 0x10l); 01157: if(!(puzzle & 0x480080480080ll)) 01158: doSolve(8, 0x100ll, puzzle | 0x480080480080ll, 01159: partsUsed | 0x10l); 01160: if(!(puzzle & 0x400480400480ll)) 01161: doSolve(8, 0x100ll, puzzle | 0x400480400480ll, 01162: partsUsed | 0x10l); 01163: if(!(puzzle & 0x100180100180ll)) 01164: doSolve(8, 0x100ll, puzzle | 0x100180100180ll, 01165: partsUsed | 0x10l); 01166: piece5at7: 01167: if (partsUsed & 0x20l) goto piece6at7; 01168: if (!(puzzle & 0x80080080080ll)) { 01169: if(!(puzzle & 0x90080080080ll)) 01170: doSolve(8, 0x100ll, puzzle | 0x90080080080ll, 01171: partsUsed | 0x20l); 01172: if(!(puzzle & 0x80080080480ll)) 01173: doSolve(8, 0x100ll, puzzle | 0x80080080480ll, 01174: partsUsed | 0x20l); 01175: if(!(puzzle & 0x480080080080ll)) 01176: doSolve(8, 0x100ll, puzzle | 0x480080080080ll, 01177: partsUsed | 0x20l); 01178: if(!(puzzle & 0x80080080180ll)) 01179: doSolve(8, 0x100ll, puzzle | 0x80080080180ll, 01180: partsUsed | 0x20l); 01181: if(!(puzzle & 0x180080080080ll)) 01182: doSolve(8, 0x100ll, puzzle | 0x180080080080ll, 01183: partsUsed | 0x20l); 01184: } 01185: if(!(puzzle & 0x400400400480ll)) 01186: doSolve(8, 0x100ll, puzzle | 0x400400400480ll, 01187: partsUsed | 0x20l); 01188: if(!(puzzle & 0x100100100180ll)) 01189: doSolve(8, 0x100ll, puzzle | 0x100100100180ll, 01190: partsUsed | 0x20l); 01191: piece6at7: 01192: if (partsUsed & 0x40l) goto piece7at7; 01193: if (!(puzzle & 0x80080080080ll)) { 01194: if(!(puzzle & 0x80090080080ll)) 01195: doSolve(8, 0x100ll, puzzle | 0x80090080080ll, 01196: partsUsed | 0x40l); 01197: if(!(puzzle & 0x80080480080ll)) 01198: doSolve(8, 0x100ll, puzzle | 0x80080480080ll, 01199: partsUsed | 0x40l); 01200: if(!(puzzle & 0x80480080080ll)) 01201: doSolve(8, 0x100ll, puzzle | 0x80480080080ll, 01202: partsUsed | 0x40l); 01203: if(!(puzzle & 0x80080180080ll)) 01204: doSolve(8, 0x100ll, puzzle | 0x80080180080ll, 01205: partsUsed | 0x40l); 01206: if(!(puzzle & 0x80180080080ll)) 01207: doSolve(8, 0x100ll, puzzle | 0x80180080080ll, 01208: partsUsed | 0x40l); 01209: } 01210: if(!(puzzle & 0x2490080ll)) 01211: doSolve(8, 0x100ll, puzzle | 0x2490080ll, 01212: partsUsed | 0x40l); 01213: if(!(puzzle & 0x80080090080ll)) 01214: doSolve(8, 0x100ll, puzzle | 0x80080090080ll, 01215: partsUsed | 0x40l); 01216: piece7at7: 01217: if (partsUsed & 0x80l) goto piece8at7; 01218: if(!(puzzle & 0x480080480ll)) 01219: doSolve(8, 0x100ll, puzzle | 0x480080480ll, 01220: partsUsed | 0x80l); 01221: if(!(puzzle & 0x480400480ll)) 01222: doSolve(8, 0x100ll, puzzle | 0x480400480ll, 01223: partsUsed | 0x80l); 01224: if(!(puzzle & 0x2482080ll)) 01225: doSolve(8, 0x100ll, puzzle | 0x2482080ll, 01226: partsUsed | 0x80l); 01227: if(!(puzzle & 0x2082480ll)) 01228: doSolve(8, 0x100ll, puzzle | 0x2082480ll, 01229: partsUsed | 0x80l); 01230: if(!(puzzle & 0x1780ll)) 01231: doSolve(8, 0x100ll, puzzle | 0x1780ll, 01232: partsUsed | 0x80l); 01233: if(!(puzzle & 0x6580ll)) 01234: doSolve(8, 0x100ll, puzzle | 0x6580ll, 01235: partsUsed | 0x80l); 01236: if(!(puzzle & 0x6980ll)) 01237: doSolve(8, 0x100ll, puzzle | 0x6980ll, 01238: partsUsed | 0x80l); 01239: if(!(puzzle & 0x1e80ll)) 01240: doSolve(8, 0x100ll, puzzle | 0x1e80ll, 01241: partsUsed | 0x80l); 01242: if(!(puzzle & 0x180100180ll)) 01243: doSolve(8, 0x100ll, puzzle | 0x180100180ll, 01244: partsUsed | 0x80l); 01245: if(!(puzzle & 0x180080180ll)) 01246: doSolve(8, 0x100ll, puzzle | 0x180080180ll, 01247: partsUsed | 0x80l); 01248: if(!(puzzle & 0x380280ll)) 01249: doSolve(8, 0x100ll, puzzle | 0x380280ll, 01250: partsUsed | 0x80l); 01251: if(!(puzzle & 0x280380ll)) 01252: doSolve(8, 0x100ll, puzzle | 0x280380ll, 01253: partsUsed | 0x80l); 01254: piece8at7: 01255: if (partsUsed & 0x100l) goto piece9at7; 01256: if(!(puzzle & 0x120180ll)) 01257: doSolve(8, 0x100ll, puzzle | 0x120180ll, 01258: partsUsed | 0x100l); 01259: if(!(puzzle & 0x100580ll)) 01260: doSolve(8, 0x100ll, puzzle | 0x100580ll, 01261: partsUsed | 0x100l); 01262: if(!(puzzle & 0xb0080ll)) 01263: doSolve(8, 0x100ll, puzzle | 0xb0080ll, 01264: partsUsed | 0x100l); 01265: if(!(puzzle & 0x980080ll)) 01266: doSolve(8, 0x100ll, puzzle | 0x980080ll, 01267: partsUsed | 0x100l); 01268: if(!(puzzle & 0x480180ll)) 01269: doSolve(8, 0x100ll, puzzle | 0x480180ll, 01270: partsUsed | 0x100l); 01271: if(!(puzzle & 0xc00480ll)) 01272: doSolve(8, 0x100ll, puzzle | 0xc00480ll, 01273: partsUsed | 0x100l); 01274: if(!(puzzle & 0x80c80ll)) 01275: doSolve(8, 0x100ll, puzzle | 0x80c80ll, 01276: partsUsed | 0x100l); 01277: if(!(puzzle & 0x800980ll)) 01278: doSolve(8, 0x100ll, puzzle | 0x800980ll, 01279: partsUsed | 0x100l); 01280: piece9at7: 01281: if (partsUsed & 0x200l) goto piece10at7; 01282: if (!(puzzle & 0x80080080ll)) { 01283: if(!(puzzle & 0x80090480ll)) 01284: doSolve(8, 0x100ll, puzzle | 0x80090480ll, 01285: partsUsed | 0x200l); 01286: if(!(puzzle & 0x90480080ll)) 01287: doSolve(8, 0x100ll, puzzle | 0x90480080ll, 01288: partsUsed | 0x200l); 01289: if(!(puzzle & 0x480090080ll)) 01290: doSolve(8, 0x100ll, puzzle | 0x480090080ll, 01291: partsUsed | 0x200l); 01292: } 01293: if (!(puzzle & 0x480080ll)) { 01294: if(!(puzzle & 0x400490080ll)) 01295: doSolve(8, 0x100ll, puzzle | 0x400490080ll, 01296: partsUsed | 0x200l); 01297: if(!(puzzle & 0x10490080ll)) 01298: doSolve(8, 0x100ll, puzzle | 0x10490080ll, 01299: partsUsed | 0x200l); 01300: if(!(puzzle & 0x402480080ll)) 01301: doSolve(8, 0x100ll, puzzle | 0x402480080ll, 01302: partsUsed | 0x200l); 01303: } 01304: if(!(puzzle & 0x5980ll)) 01305: doSolve(8, 0x100ll, puzzle | 0x5980ll, 01306: partsUsed | 0x200l); 01307: if(!(puzzle & 0x5c80ll)) 01308: doSolve(8, 0x100ll, puzzle | 0x5c80ll, 01309: partsUsed | 0x200l); 01310: if(!(puzzle & 0x402400480ll)) 01311: doSolve(8, 0x100ll, puzzle | 0x402400480ll, 01312: partsUsed | 0x200l); 01313: if(!(puzzle & 0x100300180ll)) 01314: doSolve(8, 0x100ll, puzzle | 0x100300180ll, 01315: partsUsed | 0x200l); 01316: if(!(puzzle & 0x100380080ll)) 01317: doSolve(8, 0x100ll, puzzle | 0x100380080ll, 01318: partsUsed | 0x200l); 01319: piece10at7: 01320: if (partsUsed & 0x400l) goto piece11at7; 01321: if (!(puzzle & 0x400480ll)) { 01322: if(!(puzzle & 0x80480480ll)) 01323: doSolve(8, 0x100ll, puzzle | 0x80480480ll, 01324: partsUsed | 0x400l); 01325: if(!(puzzle & 0x2480480ll)) 01326: doSolve(8, 0x100ll, puzzle | 0x2480480ll, 01327: partsUsed | 0x400l); 01328: if(!(puzzle & 0x2402480ll)) 01329: doSolve(8, 0x100ll, puzzle | 0x2402480ll, 01330: partsUsed | 0x400l); 01331: if(!(puzzle & 0x482480ll)) 01332: doSolve(8, 0x100ll, puzzle | 0x482480ll, 01333: partsUsed | 0x400l); 01334: if(!(puzzle & 0x400480480ll)) 01335: doSolve(8, 0x100ll, puzzle | 0x400480480ll, 01336: partsUsed | 0x400l); 01337: } 01338: if (!(puzzle & 0x980ll)) { 01339: if(!(puzzle & 0x1b80ll)) 01340: doSolve(8, 0x100ll, puzzle | 0x1b80ll, 01341: partsUsed | 0x400l); 01342: if(!(puzzle & 0xf80ll)) 01343: doSolve(8, 0x100ll, puzzle | 0xf80ll, 01344: partsUsed | 0x400l); 01345: if(!(puzzle & 0x2d80ll)) 01346: doSolve(8, 0x100ll, puzzle | 0x2d80ll, 01347: partsUsed | 0x400l); 01348: if(!(puzzle & 0x4d80ll)) 01349: doSolve(8, 0x100ll, puzzle | 0x4d80ll, 01350: partsUsed | 0x400l); 01351: if(!(puzzle & 0x1d80ll)) 01352: doSolve(8, 0x100ll, puzzle | 0x1d80ll, 01353: partsUsed | 0x400l); 01354: } 01355: if (!(puzzle & 0x80080080ll)) { 01356: if(!(puzzle & 0x480480080ll)) 01357: doSolve(8, 0x100ll, puzzle | 0x480480080ll, 01358: partsUsed | 0x400l); 01359: if(!(puzzle & 0x80180180ll)) 01360: doSolve(8, 0x100ll, puzzle | 0x80180180ll, 01361: partsUsed | 0x400l); 01362: if(!(puzzle & 0x180180080ll)) 01363: doSolve(8, 0x100ll, puzzle | 0x180180080ll, 01364: partsUsed | 0x400l); 01365: } 01366: if (!(puzzle & 0x100180ll)) { 01367: if(!(puzzle & 0x100180180ll)) 01368: doSolve(8, 0x100ll, puzzle | 0x100180180ll, 01369: partsUsed | 0x400l); 01370: if(!(puzzle & 0x380180ll)) 01371: doSolve(8, 0x100ll, puzzle | 0x380180ll, 01372: partsUsed | 0x400l); 01373: if(!(puzzle & 0x180380ll)) 01374: doSolve(8, 0x100ll, puzzle | 0x180380ll, 01375: partsUsed | 0x400l); 01376: if(!(puzzle & 0x300380ll)) 01377: doSolve(8, 0x100ll, puzzle | 0x300380ll, 01378: partsUsed | 0x400l); 01379: } 01380: if(!(puzzle & 0x90090080ll)) 01381: doSolve(8, 0x100ll, puzzle | 0x90090080ll, 01382: partsUsed | 0x400l); 01383: if(!(puzzle & 0x490480ll)) 01384: doSolve(8, 0x100ll, puzzle | 0x490480ll, 01385: partsUsed | 0x400l); 01386: if(!(puzzle & 0x6c80ll)) 01387: doSolve(8, 0x100ll, puzzle | 0x6c80ll, 01388: partsUsed | 0x400l); 01389: piece11at7: 01390: if (partsUsed & 0x800l) goto piece12at7; 01391: if (!(puzzle & 0x180080ll)) { 01392: if(!(puzzle & 0x1b0080ll)) 01393: doSolve(8, 0x100ll, puzzle | 0x1b0080ll, 01394: partsUsed | 0x800l); 01395: if(!(puzzle & 0x1a0180ll)) 01396: doSolve(8, 0x100ll, puzzle | 0x1a0180ll, 01397: partsUsed | 0x800l); 01398: if(!(puzzle & 0x190180ll)) 01399: doSolve(8, 0x100ll, puzzle | 0x190180ll, 01400: partsUsed | 0x800l); 01401: if(!(puzzle & 0x580180ll)) 01402: doSolve(8, 0x100ll, puzzle | 0x580180ll, 01403: partsUsed | 0x800l); 01404: if(!(puzzle & 0x580480ll)) 01405: doSolve(8, 0x100ll, puzzle | 0x580480ll, 01406: partsUsed | 0x800l); 01407: if(!(puzzle & 0x180580ll)) 01408: doSolve(8, 0x100ll, puzzle | 0x180580ll, 01409: partsUsed | 0x800l); 01410: if(!(puzzle & 0x180980ll)) 01411: doSolve(8, 0x100ll, puzzle | 0x180980ll, 01412: partsUsed | 0x800l); 01413: if(!(puzzle & 0x980180ll)) 01414: doSolve(8, 0x100ll, puzzle | 0x980180ll, 01415: partsUsed | 0x800l); 01416: if(!(puzzle & 0xd80080ll)) 01417: doSolve(8, 0x100ll, puzzle | 0xd80080ll, 01418: partsUsed | 0x800l); 01419: } 01420: if (!(puzzle & 0xc80ll)) { 01421: if(!(puzzle & 0x80d80ll)) 01422: doSolve(8, 0x100ll, puzzle | 0x80d80ll, 01423: partsUsed | 0x800l); 01424: if(!(puzzle & 0xc00c80ll)) 01425: doSolve(8, 0x100ll, puzzle | 0xc00c80ll, 01426: partsUsed | 0x800l); 01427: if(!(puzzle & 0x480c80ll)) 01428: doSolve(8, 0x100ll, puzzle | 0x480c80ll, 01429: partsUsed | 0x800l); 01430: if(!(puzzle & 0x800d80ll)) 01431: doSolve(8, 0x100ll, puzzle | 0x800d80ll, 01432: partsUsed | 0x800l); 01433: if(!(puzzle & 0x100d80ll)) 01434: doSolve(8, 0x100ll, puzzle | 0x100d80ll, 01435: partsUsed | 0x800l); 01436: if(!(puzzle & 0x400d80ll)) 01437: doSolve(8, 0x100ll, puzzle | 0x400d80ll, 01438: partsUsed | 0x800l); 01439: } 01440: if(!(puzzle & 0x900980ll)) 01441: doSolve(8, 0x100ll, puzzle | 0x900980ll, 01442: partsUsed | 0x800l); 01443: if(!(puzzle & 0xc80480ll)) 01444: doSolve(8, 0x100ll, puzzle | 0xc80480ll, 01445: partsUsed | 0x800l); 01446: if(!(puzzle & 0x480580ll)) 01447: doSolve(8, 0x100ll, puzzle | 0x480580ll, 01448: partsUsed | 0x800l); 01449: piece12at7: 01450: break; 01451: case 8: 01452: if (partsUsed & 0x2l) goto piece2at8; 01453: if(!(puzzle & 0x20120900ll)) 01454: doSolve(9, 0x200ll, puzzle | 0x20120900ll, 01455: partsUsed | 0x2l); 01456: if(!(puzzle & 0x2f00ll)) 01457: doSolve(9, 0x200ll, puzzle | 0x2f00ll, 01458: partsUsed | 0x2l); 01459: if(!(puzzle & 0x80180300ll)) 01460: doSolve(9, 0x200ll, puzzle | 0x80180300ll, 01461: partsUsed | 0x2l); 01462: if(!(puzzle & 0x4800900100ll)) 01463: doSolve(9, 0x200ll, puzzle | 0x4800900100ll, 01464: partsUsed | 0x2l); 01465: if(!(puzzle & 0x4004800900ll)) 01466: doSolve(9, 0x200ll, puzzle | 0x4004800900ll, 01467: partsUsed | 0x2l); 01468: piece2at8: 01469: if (partsUsed & 0x4l) goto piece3at8; 01470: if (!(puzzle & 0x100100100ll)) { 01471: if(!(puzzle & 0x920100100ll)) 01472: doSolve(9, 0x200ll, puzzle | 0x920100100ll, 01473: partsUsed | 0x4l); 01474: if(!(puzzle & 0x380100100ll)) 01475: doSolve(9, 0x200ll, puzzle | 0x380100100ll, 01476: partsUsed | 0x4l); 01477: if(!(puzzle & 0x104900100ll)) 01478: doSolve(9, 0x200ll, puzzle | 0x104900100ll, 01479: partsUsed | 0x4l); 01480: } 01481: if(!(puzzle & 0xe900ll)) 01482: doSolve(9, 0x200ll, puzzle | 0xe900ll, 01483: partsUsed | 0x4l); 01484: if(!(puzzle & 0x800804900ll)) 01485: doSolve(9, 0x200ll, puzzle | 0x800804900ll, 01486: partsUsed | 0x4l); 01487: piece3at8: 01488: if (partsUsed & 0x8l) goto piece4at8; 01489: if(!(puzzle & 0x120100900ll)) 01490: doSolve(9, 0x200ll, puzzle | 0x120100900ll, 01491: partsUsed | 0x8l); 01492: if(!(puzzle & 0x180100300ll)) 01493: doSolve(9, 0x200ll, puzzle | 0x180100300ll, 01494: partsUsed | 0x8l); 01495: if(!(puzzle & 0x6b00ll)) 01496: doSolve(9, 0x200ll, puzzle | 0x6b00ll, 01497: partsUsed | 0x8l); 01498: if(!(puzzle & 0x4004900100ll)) 01499: doSolve(9, 0x200ll, puzzle | 0x4004900100ll, 01500: partsUsed | 0x8l); 01501: if(!(puzzle & 0x4800800900ll)) 01502: doSolve(9, 0x200ll, puzzle | 0x4800800900ll, 01503: partsUsed | 0x8l); 01504: piece4at8: 01505: if (partsUsed & 0x10l) goto piece5at8; 01506: if (!(puzzle & 0x100100100100ll)) { 01507: if(!(puzzle & 0x180100180100ll)) 01508: doSolve(9, 0x200ll, puzzle | 0x180100180100ll, 01509: partsUsed | 0x10l); 01510: if(!(puzzle & 0x900100900100ll)) 01511: doSolve(9, 0x200ll, puzzle | 0x900100900100ll, 01512: partsUsed | 0x10l); 01513: if(!(puzzle & 0x100900100900ll)) 01514: doSolve(9, 0x200ll, puzzle | 0x100900100900ll, 01515: partsUsed | 0x10l); 01516: if(!(puzzle & 0x300100300100ll)) 01517: doSolve(9, 0x200ll, puzzle | 0x300100300100ll, 01518: partsUsed | 0x10l); 01519: if(!(puzzle & 0x100300100300ll)) 01520: doSolve(9, 0x200ll, puzzle | 0x100300100300ll, 01521: partsUsed | 0x10l); 01522: } 01523: if(!(puzzle & 0x4924100ll)) 01524: doSolve(9, 0x200ll, puzzle | 0x4924100ll, 01525: partsUsed | 0x10l); 01526: if(!(puzzle & 0x120100120100ll)) 01527: doSolve(9, 0x200ll, puzzle | 0x120100120100ll, 01528: partsUsed | 0x10l); 01529: if(!(puzzle & 0x800900800900ll)) 01530: doSolve(9, 0x200ll, puzzle | 0x800900800900ll, 01531: partsUsed | 0x10l); 01532: if(!(puzzle & 0x200300200300ll)) 01533: doSolve(9, 0x200ll, puzzle | 0x200300200300ll, 01534: partsUsed | 0x10l); 01535: piece5at8: 01536: if (partsUsed & 0x20l) goto piece6at8; 01537: if (!(puzzle & 0x100100100100ll)) { 01538: if(!(puzzle & 0x120100100100ll)) 01539: doSolve(9, 0x200ll, puzzle | 0x120100100100ll, 01540: partsUsed | 0x20l); 01541: if(!(puzzle & 0x180100100100ll)) 01542: doSolve(9, 0x200ll, puzzle | 0x180100100100ll, 01543: partsUsed | 0x20l); 01544: if(!(puzzle & 0x100100100900ll)) 01545: doSolve(9, 0x200ll, puzzle | 0x100100100900ll, 01546: partsUsed | 0x20l); 01547: if(!(puzzle & 0x900100100100ll)) 01548: doSolve(9, 0x200ll, puzzle | 0x900100100100ll, 01549: partsUsed | 0x20l); 01550: if(!(puzzle & 0x100100100300ll)) 01551: doSolve(9, 0x200ll, puzzle | 0x100100100300ll, 01552: partsUsed | 0x20l); 01553: if(!(puzzle & 0x300100100100ll)) 01554: doSolve(9, 0x200ll, puzzle | 0x300100100100ll, 01555: partsUsed | 0x20l); 01556: } 01557: if(!(puzzle & 0x800800800900ll)) 01558: doSolve(9, 0x200ll, puzzle | 0x800800800900ll, 01559: partsUsed | 0x20l); 01560: if(!(puzzle & 0x200200200300ll)) 01561: doSolve(9, 0x200ll, puzzle | 0x200200200300ll, 01562: partsUsed | 0x20l); 01563: piece6at8: 01564: if (partsUsed & 0x40l) goto piece7at8; 01565: if (!(puzzle & 0x100100100100ll)) { 01566: if(!(puzzle & 0x100120100100ll)) 01567: doSolve(9, 0x200ll, puzzle | 0x100120100100ll, 01568: partsUsed | 0x40l); 01569: if(!(puzzle & 0x100100180100ll)) 01570: doSolve(9, 0x200ll, puzzle | 0x100100180100ll, 01571: partsUsed | 0x40l); 01572: if(!(puzzle & 0x100180100100ll)) 01573: doSolve(9, 0x200ll, puzzle | 0x100180100100ll, 01574: partsUsed | 0x40l); 01575: if(!(puzzle & 0x100100900100ll)) 01576: doSolve(9, 0x200ll, puzzle | 0x100100900100ll, 01577: partsUsed | 0x40l); 01578: if(!(puzzle & 0x100900100100ll)) 01579: doSolve(9, 0x200ll, puzzle | 0x100900100100ll, 01580: partsUsed | 0x40l); 01581: if(!(puzzle & 0x100100300100ll)) 01582: doSolve(9, 0x200ll, puzzle | 0x100100300100ll, 01583: partsUsed | 0x40l); 01584: if(!(puzzle & 0x100300100100ll)) 01585: doSolve(9, 0x200ll, puzzle | 0x100300100100ll, 01586: partsUsed | 0x40l); 01587: } 01588: if(!(puzzle & 0x4920100ll)) 01589: doSolve(9, 0x200ll, puzzle | 0x4920100ll, 01590: partsUsed | 0x40l); 01591: if(!(puzzle & 0x100100120100ll)) 01592: doSolve(9, 0x200ll, puzzle | 0x100100120100ll, 01593: partsUsed | 0x40l); 01594: piece7at8: 01595: if (partsUsed & 0x80l) goto piece8at8; 01596: if(!(puzzle & 0x900100900ll)) 01597: doSolve(9, 0x200ll, puzzle | 0x900100900ll, 01598: partsUsed | 0x80l); 01599: if(!(puzzle & 0x900800900ll)) 01600: doSolve(9, 0x200ll, puzzle | 0x900800900ll, 01601: partsUsed | 0x80l); 01602: if(!(puzzle & 0x4904100ll)) 01603: doSolve(9, 0x200ll, puzzle | 0x4904100ll, 01604: partsUsed | 0x80l); 01605: if(!(puzzle & 0x4104900ll)) 01606: doSolve(9, 0x200ll, puzzle | 0x4104900ll, 01607: partsUsed | 0x80l); 01608: if(!(puzzle & 0xcb00ll)) 01609: doSolve(9, 0x200ll, puzzle | 0xcb00ll, 01610: partsUsed | 0x80l); 01611: if(!(puzzle & 0xd300ll)) 01612: doSolve(9, 0x200ll, puzzle | 0xd300ll, 01613: partsUsed | 0x80l); 01614: if(!(puzzle & 0x300200300ll)) 01615: doSolve(9, 0x200ll, puzzle | 0x300200300ll, 01616: partsUsed | 0x80l); 01617: if(!(puzzle & 0x300100300ll)) 01618: doSolve(9, 0x200ll, puzzle | 0x300100300ll, 01619: partsUsed | 0x80l); 01620: piece8at8: 01621: if (partsUsed & 0x100l) goto piece9at8; 01622: if(!(puzzle & 0x190100ll)) 01623: doSolve(9, 0x200ll, puzzle | 0x190100ll, 01624: partsUsed | 0x100l); 01625: if(!(puzzle & 0x180900ll)) 01626: doSolve(9, 0x200ll, puzzle | 0x180900ll, 01627: partsUsed | 0x100l); 01628: if(!(puzzle & 0x240300ll)) 01629: doSolve(9, 0x200ll, puzzle | 0x240300ll, 01630: partsUsed | 0x100l); 01631: if(!(puzzle & 0x200b00ll)) 01632: doSolve(9, 0x200ll, puzzle | 0x200b00ll, 01633: partsUsed | 0x100l); 01634: if(!(puzzle & 0x160100ll)) 01635: doSolve(9, 0x200ll, puzzle | 0x160100ll, 01636: partsUsed | 0x100l); 01637: if(!(puzzle & 0x400d00ll)) 01638: doSolve(9, 0x200ll, puzzle | 0x400d00ll, 01639: partsUsed | 0x100l); 01640: if(!(puzzle & 0xd00100ll)) 01641: doSolve(9, 0x200ll, puzzle | 0xd00100ll, 01642: partsUsed | 0x100l); 01643: if(!(puzzle & 0x900300ll)) 01644: doSolve(9, 0x200ll, puzzle | 0x900300ll, 01645: partsUsed | 0x100l); 01646: if(!(puzzle & 0x1300100ll)) 01647: doSolve(9, 0x200ll, puzzle | 0x1300100ll, 01648: partsUsed | 0x100l); 01649: if(!(puzzle & 0x1800900ll)) 01650: doSolve(9, 0x200ll, puzzle | 0x1800900ll, 01651: partsUsed | 0x100l); 01652: if(!(puzzle & 0x101900ll)) 01653: doSolve(9, 0x200ll, puzzle | 0x101900ll, 01654: partsUsed | 0x100l); 01655: if(!(puzzle & 0x1001300ll)) 01656: doSolve(9, 0x200ll, puzzle | 0x1001300ll, 01657: partsUsed | 0x100l); 01658: piece9at8: 01659: if (partsUsed & 0x200l) goto piece10at8; 01660: if (!(puzzle & 0x100100100ll)) { 01661: if(!(puzzle & 0x100120900ll)) 01662: doSolve(9, 0x200ll, puzzle | 0x100120900ll, 01663: partsUsed | 0x200l); 01664: if(!(puzzle & 0x120900100ll)) 01665: doSolve(9, 0x200ll, puzzle | 0x120900100ll, 01666: partsUsed | 0x200l); 01667: if(!(puzzle & 0x900120100ll)) 01668: doSolve(9, 0x200ll, puzzle | 0x900120100ll, 01669: partsUsed | 0x200l); 01670: if(!(puzzle & 0x100180300ll)) 01671: doSolve(9, 0x200ll, puzzle | 0x100180300ll, 01672: partsUsed | 0x200l); 01673: if(!(puzzle & 0x300180100ll)) 01674: doSolve(9, 0x200ll, puzzle | 0x300180100ll, 01675: partsUsed | 0x200l); 01676: if(!(puzzle & 0x180300100ll)) 01677: doSolve(9, 0x200ll, puzzle | 0x180300100ll, 01678: partsUsed | 0x200l); 01679: } 01680: if (!(puzzle & 0x900100ll)) { 01681: if(!(puzzle & 0x800920100ll)) 01682: doSolve(9, 0x200ll, puzzle | 0x800920100ll, 01683: partsUsed | 0x200l); 01684: if(!(puzzle & 0x20920100ll)) 01685: doSolve(9, 0x200ll, puzzle | 0x20920100ll, 01686: partsUsed | 0x200l); 01687: if(!(puzzle & 0x804900100ll)) 01688: doSolve(9, 0x200ll, puzzle | 0x804900100ll, 01689: partsUsed | 0x200l); 01690: } 01691: if (!(puzzle & 0xd00ll)) { 01692: if(!(puzzle & 0x9d00ll)) 01693: doSolve(9, 0x200ll, puzzle | 0x9d00ll, 01694: partsUsed | 0x200l); 01695: if(!(puzzle & 0x3d00ll)) 01696: doSolve(9, 0x200ll, puzzle | 0x3d00ll, 01697: partsUsed | 0x200l); 01698: if(!(puzzle & 0x4f00ll)) 01699: doSolve(9, 0x200ll, puzzle | 0x4f00ll, 01700: partsUsed | 0x200l); 01701: if(!(puzzle & 0xcd00ll)) 01702: doSolve(9, 0x200ll, puzzle | 0xcd00ll, 01703: partsUsed | 0x200l); 01704: } 01705: if(!(puzzle & 0x7900ll)) 01706: doSolve(9, 0x200ll, puzzle | 0x7900ll, 01707: partsUsed | 0x200l); 01708: if(!(puzzle & 0x80380100ll)) 01709: doSolve(9, 0x200ll, puzzle | 0x80380100ll, 01710: partsUsed | 0x200l); 01711: if(!(puzzle & 0x200380100ll)) 01712: doSolve(9, 0x200ll, puzzle | 0x200380100ll, 01713: partsUsed | 0x200l); 01714: if(!(puzzle & 0x804800900ll)) 01715: doSolve(9, 0x200ll, puzzle | 0x804800900ll, 01716: partsUsed | 0x200l); 01717: piece10at8: 01718: if (partsUsed & 0x400l) goto piece11at8; 01719: if (!(puzzle & 0x800900ll)) { 01720: if(!(puzzle & 0x100900900ll)) 01721: doSolve(9, 0x200ll, puzzle | 0x100900900ll, 01722: partsUsed | 0x400l); 01723: if(!(puzzle & 0x4900900ll)) 01724: doSolve(9, 0x200ll, puzzle | 0x4900900ll, 01725: partsUsed | 0x400l); 01726: if(!(puzzle & 0x4804900ll)) 01727: doSolve(9, 0x200ll, puzzle | 0x4804900ll, 01728: partsUsed | 0x400l); 01729: if(!(puzzle & 0x904900ll)) 01730: doSolve(9, 0x200ll, puzzle | 0x904900ll, 01731: partsUsed | 0x400l); 01732: if(!(puzzle & 0x800900900ll)) 01733: doSolve(9, 0x200ll, puzzle | 0x800900900ll, 01734: partsUsed | 0x400l); 01735: } 01736: if (!(puzzle & 0x100100100ll)) { 01737: if(!(puzzle & 0x900900100ll)) 01738: doSolve(9, 0x200ll, puzzle | 0x900900100ll, 01739: partsUsed | 0x400l); 01740: if(!(puzzle & 0x100300300ll)) 01741: doSolve(9, 0x200ll, puzzle | 0x100300300ll, 01742: partsUsed | 0x400l); 01743: if(!(puzzle & 0x300300100ll)) 01744: doSolve(9, 0x200ll, puzzle | 0x300300100ll, 01745: partsUsed | 0x400l); 01746: } 01747: if (!(puzzle & 0x1900ll)) { 01748: if(!(puzzle & 0x5b00ll)) 01749: doSolve(9, 0x200ll, puzzle | 0x5b00ll, 01750: partsUsed | 0x400l); 01751: if(!(puzzle & 0x9b00ll)) 01752: doSolve(9, 0x200ll, puzzle | 0x9b00ll, 01753: partsUsed | 0x400l); 01754: if(!(puzzle & 0xd900ll)) 01755: doSolve(9, 0x200ll, puzzle | 0xd900ll, 01756: partsUsed | 0x400l); 01757: } 01758: if(!(puzzle & 0x120120100ll)) 01759: doSolve(9, 0x200ll, puzzle | 0x120120100ll, 01760: partsUsed | 0x400l); 01761: if(!(puzzle & 0x920900ll)) 01762: doSolve(9, 0x200ll, puzzle | 0x920900ll, 01763: partsUsed | 0x400l); 01764: if(!(puzzle & 0x1f00ll)) 01765: doSolve(9, 0x200ll, puzzle | 0x1f00ll, 01766: partsUsed | 0x400l); 01767: if(!(puzzle & 0x6d00ll)) 01768: doSolve(9, 0x200ll, puzzle | 0x6d00ll, 01769: partsUsed | 0x400l); 01770: if(!(puzzle & 0x380300ll)) 01771: doSolve(9, 0x200ll, puzzle | 0x380300ll, 01772: partsUsed | 0x400l); 01773: if(!(puzzle & 0x180180100ll)) 01774: doSolve(9, 0x200ll, puzzle | 0x180180100ll, 01775: partsUsed | 0x400l); 01776: if(!(puzzle & 0x200300300ll)) 01777: doSolve(9, 0x200ll, puzzle | 0x200300300ll, 01778: partsUsed | 0x400l); 01779: piece11at8: 01780: if (partsUsed & 0x800l) goto piece12at8; 01781: if (!(puzzle & 0x120100ll)) { 01782: if(!(puzzle & 0x1b0100ll)) 01783: doSolve(9, 0x200ll, puzzle | 0x1b0100ll, 01784: partsUsed | 0x800l); 01785: if(!(puzzle & 0x360100ll)) 01786: doSolve(9, 0x200ll, puzzle | 0x360100ll, 01787: partsUsed | 0x800l); 01788: if(!(puzzle & 0x320300ll)) 01789: doSolve(9, 0x200ll, puzzle | 0x320300ll, 01790: partsUsed | 0x800l); 01791: } 01792: if (!(puzzle & 0x100300ll)) { 01793: if(!(puzzle & 0x340300ll)) 01794: doSolve(9, 0x200ll, puzzle | 0x340300ll, 01795: partsUsed | 0x800l); 01796: if(!(puzzle & 0x101b00ll)) 01797: doSolve(9, 0x200ll, puzzle | 0x101b00ll, 01798: partsUsed | 0x800l); 01799: if(!(puzzle & 0xb00300ll)) 01800: doSolve(9, 0x200ll, puzzle | 0xb00300ll, 01801: partsUsed | 0x800l); 01802: if(!(puzzle & 0x300b00ll)) 01803: doSolve(9, 0x200ll, puzzle | 0x300b00ll, 01804: partsUsed | 0x800l); 01805: if(!(puzzle & 0x301300ll)) 01806: doSolve(9, 0x200ll, puzzle | 0x301300ll, 01807: partsUsed | 0x800l); 01808: if(!(puzzle & 0x1300300ll)) 01809: doSolve(9, 0x200ll, puzzle | 0x1300300ll, 01810: partsUsed | 0x800l); 01811: if(!(puzzle & 0x900b00ll)) 01812: doSolve(9, 0x200ll, puzzle | 0x900b00ll, 01813: partsUsed | 0x800l); 01814: } 01815: if (!(puzzle & 0xc00100ll)) { 01816: if(!(puzzle & 0xd80100ll)) 01817: doSolve(9, 0x200ll, puzzle | 0xd80100ll, 01818: partsUsed | 0x800l); 01819: if(!(puzzle & 0xd00900ll)) 01820: doSolve(9, 0x200ll, puzzle | 0xd00900ll, 01821: partsUsed | 0x800l); 01822: if(!(puzzle & 0xc00d00ll)) 01823: doSolve(9, 0x200ll, puzzle | 0xc00d00ll, 01824: partsUsed | 0x800l); 01825: } 01826: if (!(puzzle & 0x800900ll)) { 01827: if(!(puzzle & 0x980900ll)) 01828: doSolve(9, 0x200ll, puzzle | 0x980900ll, 01829: partsUsed | 0x800l); 01830: if(!(puzzle & 0x900d00ll)) 01831: doSolve(9, 0x200ll, puzzle | 0x900d00ll, 01832: partsUsed | 0x800l); 01833: if(!(puzzle & 0x1801900ll)) 01834: doSolve(9, 0x200ll, puzzle | 0x1801900ll, 01835: partsUsed | 0x800l); 01836: if(!(puzzle & 0xb00900ll)) 01837: doSolve(9, 0x200ll, puzzle | 0xb00900ll, 01838: partsUsed | 0x800l); 01839: if(!(puzzle & 0x901900ll)) 01840: doSolve(9, 0x200ll, puzzle | 0x901900ll, 01841: partsUsed | 0x800l); 01842: if(!(puzzle & 0x801b00ll)) 01843: doSolve(9, 0x200ll, puzzle | 0x801b00ll, 01844: partsUsed | 0x800l); 01845: if(!(puzzle & 0x1900900ll)) 01846: doSolve(9, 0x200ll, puzzle | 0x1900900ll, 01847: partsUsed | 0x800l); 01848: } 01849: if (!(puzzle & 0x1300ll)) { 01850: if(!(puzzle & 0x1201300ll)) 01851: doSolve(9, 0x200ll, puzzle | 0x1201300ll, 01852: partsUsed | 0x800l); 01853: if(!(puzzle & 0x1001b00ll)) 01854: doSolve(9, 0x200ll, puzzle | 0x1001b00ll, 01855: partsUsed | 0x800l); 01856: if(!(puzzle & 0x201b00ll)) 01857: doSolve(9, 0x200ll, puzzle | 0x201b00ll, 01858: partsUsed | 0x800l); 01859: } 01860: if(!(puzzle & 0x1b00100ll)) 01861: doSolve(9, 0x200ll, puzzle | 0x1b00100ll, 01862: partsUsed | 0x800l); 01863: piece12at8: 01864: break; 01865: case 9: 01866: if (partsUsed & 0x2l) goto piece2at9; 01867: if(!(puzzle & 0x40241200ll)) 01868: doSolve(10, 0x400ll, puzzle | 0x40241200ll, 01869: partsUsed | 0x2l); 01870: if(!(puzzle & 0x7a00ll)) 01871: doSolve(10, 0x400ll, puzzle | 0x7a00ll, 01872: partsUsed | 0x2l); 01873: if(!(puzzle & 0x180300200ll)) 01874: doSolve(10, 0x400ll, puzzle | 0x180300200ll, 01875: partsUsed | 0x2l); 01876: if(!(puzzle & 0x9001200200ll)) 01877: doSolve(10, 0x400ll, puzzle | 0x9001200200ll, 01878: partsUsed | 0x2l); 01879: if(!(puzzle & 0x8009001200ll)) 01880: doSolve(10, 0x400ll, puzzle | 0x8009001200ll, 01881: partsUsed | 0x2l); 01882: piece2at9: 01883: if (partsUsed & 0x4l) goto piece3at9; 01884: if (!(puzzle & 0x200200200ll)) { 01885: if(!(puzzle & 0x1240200200ll)) 01886: doSolve(10, 0x400ll, puzzle | 0x1240200200ll, 01887: partsUsed | 0x4l); 01888: if(!(puzzle & 0x200380200ll)) 01889: doSolve(10, 0x400ll, puzzle | 0x200380200ll, 01890: partsUsed | 0x4l); 01891: if(!(puzzle & 0x209200200ll)) 01892: doSolve(10, 0x400ll, puzzle | 0x209200200ll, 01893: partsUsed | 0x4l); 01894: } 01895: if(!(puzzle & 0x9e00ll)) 01896: doSolve(10, 0x400ll, puzzle | 0x9e00ll, 01897: partsUsed | 0x4l); 01898: if(!(puzzle & 0x1001009200ll)) 01899: doSolve(10, 0x400ll, puzzle | 0x1001009200ll, 01900: partsUsed | 0x4l); 01901: piece3at9: 01902: if (partsUsed & 0x8l) goto piece4at9; 01903: if(!(puzzle & 0x240201200ll)) 01904: doSolve(10, 0x400ll, puzzle | 0x240201200ll, 01905: partsUsed | 0x8l); 01906: if(!(puzzle & 0x3e00ll)) 01907: doSolve(10, 0x400ll, puzzle | 0x3e00ll, 01908: partsUsed | 0x8l); 01909: if(!(puzzle & 0x80380200ll)) 01910: doSolve(10, 0x400ll, puzzle | 0x80380200ll, 01911: partsUsed | 0x8l); 01912: if(!(puzzle & 0x8009200200ll)) 01913: doSolve(10, 0x400ll, puzzle | 0x8009200200ll, 01914: partsUsed | 0x8l); 01915: if(!(puzzle & 0x9001001200ll)) 01916: doSolve(10, 0x400ll, puzzle | 0x9001001200ll, 01917: partsUsed | 0x8l); 01918: piece4at9: 01919: if (partsUsed & 0x10l) goto piece5at9; 01920: if (!(puzzle & 0x200200200200ll)) { 01921: if(!(puzzle & 0x300200300200ll)) 01922: doSolve(10, 0x400ll, puzzle | 0x300200300200ll, 01923: partsUsed | 0x10l); 01924: if(!(puzzle & 0x1200201200200ll)) 01925: doSolve(10, 0x400ll, puzzle | 0x1200201200200ll, 01926: partsUsed | 0x10l); 01927: if(!(puzzle & 0x201200201200ll)) 01928: doSolve(10, 0x400ll, puzzle | 0x201200201200ll, 01929: partsUsed | 0x10l); 01930: } 01931: if(!(puzzle & 0x9248200ll)) 01932: doSolve(10, 0x400ll, puzzle | 0x9248200ll, 01933: partsUsed | 0x10l); 01934: if(!(puzzle & 0x240200240200ll)) 01935: doSolve(10, 0x400ll, puzzle | 0x240200240200ll, 01936: partsUsed | 0x10l); 01937: if(!(puzzle & 0x1001201001200ll)) 01938: doSolve(10, 0x400ll, puzzle | 0x1001201001200ll, 01939: partsUsed | 0x10l); 01940: piece5at9: 01941: if (partsUsed & 0x20l) goto piece6at9; 01942: if (!(puzzle & 0x200200200200ll)) { 01943: if(!(puzzle & 0x240200200200ll)) 01944: doSolve(10, 0x400ll, puzzle | 0x240200200200ll, 01945: partsUsed | 0x20l); 01946: if(!(puzzle & 0x300200200200ll)) 01947: doSolve(10, 0x400ll, puzzle | 0x300200200200ll, 01948: partsUsed | 0x20l); 01949: if(!(puzzle & 0x200200201200ll)) 01950: doSolve(10, 0x400ll, puzzle | 0x200200201200ll, 01951: partsUsed | 0x20l); 01952: if(!(puzzle & 0x1200200200200ll)) 01953: doSolve(10, 0x400ll, puzzle | 0x1200200200200ll, 01954: partsUsed | 0x20l); 01955: } 01956: if(!(puzzle & 0x1001001001200ll)) 01957: doSolve(10, 0x400ll, puzzle | 0x1001001001200ll, 01958: partsUsed | 0x20l); 01959: piece6at9: 01960: if (partsUsed & 0x40l) goto piece7at9; 01961: if (!(puzzle & 0x200200200200ll)) { 01962: if(!(puzzle & 0x200240200200ll)) 01963: doSolve(10, 0x400ll, puzzle | 0x200240200200ll, 01964: partsUsed | 0x40l); 01965: if(!(puzzle & 0x200200300200ll)) 01966: doSolve(10, 0x400ll, puzzle | 0x200200300200ll, 01967: partsUsed | 0x40l); 01968: if(!(puzzle & 0x200300200200ll)) 01969: doSolve(10, 0x400ll, puzzle | 0x200300200200ll, 01970: partsUsed | 0x40l); 01971: if(!(puzzle & 0x200201200200ll)) 01972: doSolve(10, 0x400ll, puzzle | 0x200201200200ll, 01973: partsUsed | 0x40l); 01974: if(!(puzzle & 0x201200200200ll)) 01975: doSolve(10, 0x400ll, puzzle | 0x201200200200ll, 01976: partsUsed | 0x40l); 01977: } 01978: if(!(puzzle & 0x9240200ll)) 01979: doSolve(10, 0x400ll, puzzle | 0x9240200ll, 01980: partsUsed | 0x40l); 01981: if(!(puzzle & 0x200200240200ll)) 01982: doSolve(10, 0x400ll, puzzle | 0x200200240200ll, 01983: partsUsed | 0x40l); 01984: piece7at9: 01985: if (partsUsed & 0x80l) goto piece8at9; 01986: if(!(puzzle & 0x1200201200ll)) 01987: doSolve(10, 0x400ll, puzzle | 0x1200201200ll, 01988: partsUsed | 0x80l); 01989: if(!(puzzle & 0x1201001200ll)) 01990: doSolve(10, 0x400ll, puzzle | 0x1201001200ll, 01991: partsUsed | 0x80l); 01992: if(!(puzzle & 0x9208200ll)) 01993: doSolve(10, 0x400ll, puzzle | 0x9208200ll, 01994: partsUsed | 0x80l); 01995: if(!(puzzle & 0x8209200ll)) 01996: doSolve(10, 0x400ll, puzzle | 0x8209200ll, 01997: partsUsed | 0x80l); 01998: piece8at9: 01999: if (partsUsed & 0x100l) goto piece9at9; 02000: if(!(puzzle & 0x320200ll)) 02001: doSolve(10, 0x400ll, puzzle | 0x320200ll, 02002: partsUsed | 0x100l); 02003: if(!(puzzle & 0x301200ll)) 02004: doSolve(10, 0x400ll, puzzle | 0x301200ll, 02005: partsUsed | 0x100l); 02006: if(!(puzzle & 0x801a00ll)) 02007: doSolve(10, 0x400ll, puzzle | 0x801a00ll, 02008: partsUsed | 0x100l); 02009: if(!(puzzle & 0x1a00200ll)) 02010: doSolve(10, 0x400ll, puzzle | 0x1a00200ll, 02011: partsUsed | 0x100l); 02012: piece9at9: 02013: if (partsUsed & 0x200l) goto piece10at9; 02014: if (!(puzzle & 0x200200200ll)) { 02015: if(!(puzzle & 0x200241200ll)) 02016: doSolve(10, 0x400ll, puzzle | 0x200241200ll, 02017: partsUsed | 0x200l); 02018: if(!(puzzle & 0x241200200ll)) 02019: doSolve(10, 0x400ll, puzzle | 0x241200200ll, 02020: partsUsed | 0x200l); 02021: if(!(puzzle & 0x1200240200ll)) 02022: doSolve(10, 0x400ll, puzzle | 0x1200240200ll, 02023: partsUsed | 0x200l); 02024: } 02025: if (!(puzzle & 0x1200200ll)) { 02026: if(!(puzzle & 0x1001240200ll)) 02027: doSolve(10, 0x400ll, puzzle | 0x1001240200ll, 02028: partsUsed | 0x200l); 02029: if(!(puzzle & 0x41240200ll)) 02030: doSolve(10, 0x400ll, puzzle | 0x41240200ll, 02031: partsUsed | 0x200l); 02032: if(!(puzzle & 0x1009200200ll)) 02033: doSolve(10, 0x400ll, puzzle | 0x1009200200ll, 02034: partsUsed | 0x200l); 02035: } 02036: if(!(puzzle & 0x5e00ll)) 02037: doSolve(10, 0x400ll, puzzle | 0x5e00ll, 02038: partsUsed | 0x200l); 02039: if(!(puzzle & 0x100380200ll)) 02040: doSolve(10, 0x400ll, puzzle | 0x100380200ll, 02041: partsUsed | 0x200l); 02042: if(!(puzzle & 0x1009001200ll)) 02043: doSolve(10, 0x400ll, puzzle | 0x1009001200ll, 02044: partsUsed | 0x200l); 02045: piece10at9: 02046: if (partsUsed & 0x400l) goto piece11at9; 02047: if (!(puzzle & 0x9200ll)) { 02048: if(!(puzzle & 0xda00ll)) 02049: doSolve(10, 0x400ll, puzzle | 0xda00ll, 02050: partsUsed | 0x400l); 02051: if(!(puzzle & 0x9009200ll)) 02052: doSolve(10, 0x400ll, puzzle | 0x9009200ll, 02053: partsUsed | 0x400l); 02054: if(!(puzzle & 0x1209200ll)) 02055: doSolve(10, 0x400ll, puzzle | 0x1209200ll, 02056: partsUsed | 0x400l); 02057: } 02058: if (!(puzzle & 0x200200200ll)) { 02059: if(!(puzzle & 0x300300200ll)) 02060: doSolve(10, 0x400ll, puzzle | 0x300300200ll, 02061: partsUsed | 0x400l); 02062: if(!(puzzle & 0x201201200ll)) 02063: doSolve(10, 0x400ll, puzzle | 0x201201200ll, 02064: partsUsed | 0x400l); 02065: if(!(puzzle & 0x1201200200ll)) 02066: doSolve(10, 0x400ll, puzzle | 0x1201200200ll, 02067: partsUsed | 0x400l); 02068: } 02069: if(!(puzzle & 0x240240200ll)) 02070: doSolve(10, 0x400ll, puzzle | 0x240240200ll, 02071: partsUsed | 0x400l); 02072: if(!(puzzle & 0x1241200ll)) 02073: doSolve(10, 0x400ll, puzzle | 0x1241200ll, 02074: partsUsed | 0x400l); 02075: if(!(puzzle & 0x9201200ll)) 02076: doSolve(10, 0x400ll, puzzle | 0x9201200ll, 02077: partsUsed | 0x400l); 02078: if(!(puzzle & 0x1001201200ll)) 02079: doSolve(10, 0x400ll, puzzle | 0x1001201200ll, 02080: partsUsed | 0x400l); 02081: piece11at9: 02082: if (partsUsed & 0x800l) goto piece12at9; 02083: if (!(puzzle & 0x300200ll)) { 02084: if(!(puzzle & 0x360200ll)) 02085: doSolve(10, 0x400ll, puzzle | 0x360200ll, 02086: partsUsed | 0x800l); 02087: if(!(puzzle & 0x1b00200ll)) 02088: doSolve(10, 0x400ll, puzzle | 0x1b00200ll, 02089: partsUsed | 0x800l); 02090: if(!(puzzle & 0x1301200ll)) 02091: doSolve(10, 0x400ll, puzzle | 0x1301200ll, 02092: partsUsed | 0x800l); 02093: } 02094: if (!(puzzle & 0x1001200ll)) { 02095: if(!(puzzle & 0x1a01200ll)) 02096: doSolve(10, 0x400ll, puzzle | 0x1a01200ll, 02097: partsUsed | 0x800l); 02098: if(!(puzzle & 0x1801a00ll)) 02099: doSolve(10, 0x400ll, puzzle | 0x1801a00ll, 02100: partsUsed | 0x800l); 02101: if(!(puzzle & 0x1201a00ll)) 02102: doSolve(10, 0x400ll, puzzle | 0x1201a00ll, 02103: partsUsed | 0x800l); 02104: } 02105: piece12at9: 02106: break; 02107: case 10: 02108: if (partsUsed & 0x2l) goto piece2at10; 02109: if(!(puzzle & 0x90480400ll)) 02110: doSolve(11, 0x800ll, puzzle | 0x90480400ll, 02111: partsUsed | 0x2l); 02112: if(!(puzzle & 0x80482400ll)) 02113: doSolve(11, 0x800ll, puzzle | 0x80482400ll, 02114: partsUsed | 0x2l); 02115: if(!(puzzle & 0x1001800c00ll)) 02116: doSolve(11, 0x800ll, puzzle | 0x1001800c00ll, 02117: partsUsed | 0x2l); 02118: if(!(puzzle & 0x1800c00400ll)) 02119: doSolve(11, 0x800ll, puzzle | 0x1800c00400ll, 02120: partsUsed | 0x2l); 02121: piece2at10: 02122: if (partsUsed & 0x4l) goto piece3at10; 02123: if (!(puzzle & 0x400400400ll)) { 02124: if(!(puzzle & 0x400490400ll)) 02125: doSolve(11, 0x800ll, puzzle | 0x400490400ll, 02126: partsUsed | 0x4l); 02127: if(!(puzzle & 0x2480400400ll)) 02128: doSolve(11, 0x800ll, puzzle | 0x2480400400ll, 02129: partsUsed | 0x4l); 02130: if(!(puzzle & 0x401c00400ll)) 02131: doSolve(11, 0x800ll, puzzle | 0x401c00400ll, 02132: partsUsed | 0x4l); 02133: } 02134: if(!(puzzle & 0x800801c00ll)) 02135: doSolve(11, 0x800ll, puzzle | 0x800801c00ll, 02136: partsUsed | 0x4l); 02137: piece3at10: 02138: if (partsUsed & 0x8l) goto piece4at10; 02139: if(!(puzzle & 0x10490400ll)) 02140: doSolve(11, 0x800ll, puzzle | 0x10490400ll, 02141: partsUsed | 0x8l); 02142: if(!(puzzle & 0x480402400ll)) 02143: doSolve(11, 0x800ll, puzzle | 0x480402400ll, 02144: partsUsed | 0x8l); 02145: if(!(puzzle & 0x1001c00400ll)) 02146: doSolve(11, 0x800ll, puzzle | 0x1001c00400ll, 02147: partsUsed | 0x8l); 02148: if(!(puzzle & 0x1800800c00ll)) 02149: doSolve(11, 0x800ll, puzzle | 0x1800800c00ll, 02150: partsUsed | 0x8l); 02151: piece4at10: 02152: if (partsUsed & 0x10l) goto piece5at10; 02153: if (!(puzzle & 0x400400400400ll)) { 02154: if(!(puzzle & 0x480400480400ll)) 02155: doSolve(11, 0x800ll, puzzle | 0x480400480400ll, 02156: partsUsed | 0x10l); 02157: if(!(puzzle & 0x2400402400400ll)) 02158: doSolve(11, 0x800ll, puzzle | 0x2400402400400ll, 02159: partsUsed | 0x10l); 02160: if(!(puzzle & 0x402400402400ll)) 02161: doSolve(11, 0x800ll, puzzle | 0x402400402400ll, 02162: partsUsed | 0x10l); 02163: if(!(puzzle & 0xc00400c00400ll)) 02164: doSolve(11, 0x800ll, puzzle | 0xc00400c00400ll, 02165: partsUsed | 0x10l); 02166: if(!(puzzle & 0x400c00400c00ll)) 02167: doSolve(11, 0x800ll, puzzle | 0x400c00400c00ll, 02168: partsUsed | 0x10l); 02169: } 02170: if(!(puzzle & 0x2002402002400ll)) 02171: doSolve(11, 0x800ll, puzzle | 0x2002402002400ll, 02172: partsUsed | 0x10l); 02173: if(!(puzzle & 0x800c00800c00ll)) 02174: doSolve(11, 0x800ll, puzzle | 0x800c00800c00ll, 02175: partsUsed | 0x10l); 02176: piece5at10: 02177: if (partsUsed & 0x20l) goto piece6at10; 02178: if (!(puzzle & 0x400400400400ll)) { 02179: if(!(puzzle & 0x480400400400ll)) 02180: doSolve(11, 0x800ll, puzzle | 0x480400400400ll, 02181: partsUsed | 0x20l); 02182: if(!(puzzle & 0x400400402400ll)) 02183: doSolve(11, 0x800ll, puzzle | 0x400400402400ll, 02184: partsUsed | 0x20l); 02185: if(!(puzzle & 0x2400400400400ll)) 02186: doSolve(11, 0x800ll, puzzle | 0x2400400400400ll, 02187: partsUsed | 0x20l); 02188: if(!(puzzle & 0x400400400c00ll)) 02189: doSolve(11, 0x800ll, puzzle | 0x400400400c00ll, 02190: partsUsed | 0x20l); 02191: if(!(puzzle & 0xc00400400400ll)) 02192: doSolve(11, 0x800ll, puzzle | 0xc00400400400ll, 02193: partsUsed | 0x20l); 02194: } 02195: if(!(puzzle & 0x2002002002400ll)) 02196: doSolve(11, 0x800ll, puzzle | 0x2002002002400ll, 02197: partsUsed | 0x20l); 02198: if(!(puzzle & 0x800800800c00ll)) 02199: doSolve(11, 0x800ll, puzzle | 0x800800800c00ll, 02200: partsUsed | 0x20l); 02201: piece6at10: 02202: if (partsUsed & 0x40l) goto piece7at10; 02203: if (!(puzzle & 0x400400400400ll)) { 02204: if(!(puzzle & 0x400480400400ll)) 02205: doSolve(11, 0x800ll, puzzle | 0x400480400400ll, 02206: partsUsed | 0x40l); 02207: if(!(puzzle & 0x400402400400ll)) 02208: doSolve(11, 0x800ll, puzzle | 0x400402400400ll, 02209: partsUsed | 0x40l); 02210: if(!(puzzle & 0x402400400400ll)) 02211: doSolve(11, 0x800ll, puzzle | 0x402400400400ll, 02212: partsUsed | 0x40l); 02213: if(!(puzzle & 0x400400c00400ll)) 02214: doSolve(11, 0x800ll, puzzle | 0x400400c00400ll, 02215: partsUsed | 0x40l); 02216: if(!(puzzle & 0x400c00400400ll)) 02217: doSolve(11, 0x800ll, puzzle | 0x400c00400400ll, 02218: partsUsed | 0x40l); 02219: } 02220: if(!(puzzle & 0x2490400ll)) 02221: doSolve(11, 0x800ll, puzzle | 0x2490400ll, 02222: partsUsed | 0x40l); 02223: if(!(puzzle & 0x400400480400ll)) 02224: doSolve(11, 0x800ll, puzzle | 0x400400480400ll, 02225: partsUsed | 0x40l); 02226: piece7at10: 02227: if (partsUsed & 0x80l) goto piece8at10; 02228: if(!(puzzle & 0x2400402400ll)) 02229: doSolve(11, 0x800ll, puzzle | 0x2400402400ll, 02230: partsUsed | 0x80l); 02231: if(!(puzzle & 0x2402002400ll)) 02232: doSolve(11, 0x800ll, puzzle | 0x2402002400ll, 02233: partsUsed | 0x80l); 02234: if(!(puzzle & 0xbc00ll)) 02235: doSolve(11, 0x800ll, puzzle | 0xbc00ll, 02236: partsUsed | 0x80l); 02237: if(!(puzzle & 0xf400ll)) 02238: doSolve(11, 0x800ll, puzzle | 0xf400ll, 02239: partsUsed | 0x80l); 02240: if(!(puzzle & 0xc00800c00ll)) 02241: doSolve(11, 0x800ll, puzzle | 0xc00800c00ll, 02242: partsUsed | 0x80l); 02243: if(!(puzzle & 0xc00400c00ll)) 02244: doSolve(11, 0x800ll, puzzle | 0xc00400c00ll, 02245: partsUsed | 0x80l); 02246: if(!(puzzle & 0x1c01400ll)) 02247: doSolve(11, 0x800ll, puzzle | 0x1c01400ll, 02248: partsUsed | 0x80l); 02249: if(!(puzzle & 0x1401c00ll)) 02250: doSolve(11, 0x800ll, puzzle | 0x1401c00ll, 02251: partsUsed | 0x80l); 02252: piece8at10: 02253: if (partsUsed & 0x100l) goto piece9at10; 02254: if(!(puzzle & 0x900c00ll)) 02255: doSolve(11, 0x800ll, puzzle | 0x900c00ll, 02256: partsUsed | 0x100l); 02257: if(!(puzzle & 0x802c00ll)) 02258: doSolve(11, 0x800ll, puzzle | 0x802c00ll, 02259: partsUsed | 0x100l); 02260: if(!(puzzle & 0x580400ll)) 02261: doSolve(11, 0x800ll, puzzle | 0x580400ll, 02262: partsUsed | 0x100l); 02263: if(!(puzzle & 0x4c00400ll)) 02264: doSolve(11, 0x800ll, puzzle | 0x4c00400ll, 02265: partsUsed | 0x100l); 02266: if(!(puzzle & 0x2400c00ll)) 02267: doSolve(11, 0x800ll, puzzle | 0x2400c00ll, 02268: partsUsed | 0x100l); 02269: if(!(puzzle & 0x6002400ll)) 02270: doSolve(11, 0x800ll, puzzle | 0x6002400ll, 02271: partsUsed | 0x100l); 02272: if(!(puzzle & 0x406400ll)) 02273: doSolve(11, 0x800ll, puzzle | 0x406400ll, 02274: partsUsed | 0x100l); 02275: if(!(puzzle & 0x4004c00ll)) 02276: doSolve(11, 0x800ll, puzzle | 0x4004c00ll, 02277: partsUsed | 0x100l); 02278: piece9at10: 02279: if (partsUsed & 0x200l) goto piece10at10; 02280: if (!(puzzle & 0x480400ll)) { 02281: if(!(puzzle & 0x80490400ll)) 02282: doSolve(11, 0x800ll, puzzle | 0x80490400ll, 02283: partsUsed | 0x200l); 02284: if(!(puzzle & 0x400482400ll)) 02285: doSolve(11, 0x800ll, puzzle | 0x400482400ll, 02286: partsUsed | 0x200l); 02287: if(!(puzzle & 0x2002480400ll)) 02288: doSolve(11, 0x800ll, puzzle | 0x2002480400ll, 02289: partsUsed | 0x200l); 02290: if(!(puzzle & 0x2400480400ll)) 02291: doSolve(11, 0x800ll, puzzle | 0x2400480400ll, 02292: partsUsed | 0x200l); 02293: if(!(puzzle & 0x82480400ll)) 02294: doSolve(11, 0x800ll, puzzle | 0x82480400ll, 02295: partsUsed | 0x200l); 02296: } 02297: if(!(puzzle & 0x482400400ll)) 02298: doSolve(11, 0x800ll, puzzle | 0x482400400ll, 02299: partsUsed | 0x200l); 02300: if(!(puzzle & 0x801800c00ll)) 02301: doSolve(11, 0x800ll, puzzle | 0x801800c00ll, 02302: partsUsed | 0x200l); 02303: if(!(puzzle & 0x801c00400ll)) 02304: doSolve(11, 0x800ll, puzzle | 0x801c00400ll, 02305: partsUsed | 0x200l); 02306: piece10at10: 02307: if (partsUsed & 0x400l) goto piece11at10; 02308: if (!(puzzle & 0x2400400ll)) { 02309: if(!(puzzle & 0x402402400ll)) 02310: doSolve(11, 0x800ll, puzzle | 0x402402400ll, 02311: partsUsed | 0x400l); 02312: if(!(puzzle & 0x2402400400ll)) 02313: doSolve(11, 0x800ll, puzzle | 0x2402400400ll, 02314: partsUsed | 0x400l); 02315: if(!(puzzle & 0x2002402400ll)) 02316: doSolve(11, 0x800ll, puzzle | 0x2002402400ll, 02317: partsUsed | 0x400l); 02318: } 02319: if (!(puzzle & 0x4c00ll)) { 02320: if(!(puzzle & 0xdc00ll)) 02321: doSolve(11, 0x800ll, puzzle | 0xdc00ll, 02322: partsUsed | 0x400l); 02323: if(!(puzzle & 0x7c00ll)) 02324: doSolve(11, 0x800ll, puzzle | 0x7c00ll, 02325: partsUsed | 0x400l); 02326: if(!(puzzle & 0xec00ll)) 02327: doSolve(11, 0x800ll, puzzle | 0xec00ll, 02328: partsUsed | 0x400l); 02329: } 02330: if (!(puzzle & 0xc00400ll)) { 02331: if(!(puzzle & 0x800c00c00ll)) 02332: doSolve(11, 0x800ll, puzzle | 0x800c00c00ll, 02333: partsUsed | 0x400l); 02334: if(!(puzzle & 0x400c00c00ll)) 02335: doSolve(11, 0x800ll, puzzle | 0x400c00c00ll, 02336: partsUsed | 0x400l); 02337: if(!(puzzle & 0x1c00c00ll)) 02338: doSolve(11, 0x800ll, puzzle | 0x1c00c00ll, 02339: partsUsed | 0x400l); 02340: if(!(puzzle & 0xc00c00400ll)) 02341: doSolve(11, 0x800ll, puzzle | 0xc00c00400ll, 02342: partsUsed | 0x400l); 02343: if(!(puzzle & 0xc01c00ll)) 02344: doSolve(11, 0x800ll, puzzle | 0xc01c00ll, 02345: partsUsed | 0x400l); 02346: } 02347: if(!(puzzle & 0x480480400ll)) 02348: doSolve(11, 0x800ll, puzzle | 0x480480400ll, 02349: partsUsed | 0x400l); 02350: if(!(puzzle & 0x2482400ll)) 02351: doSolve(11, 0x800ll, puzzle | 0x2482400ll, 02352: partsUsed | 0x400l); 02353: if(!(puzzle & 0x1801c00ll)) 02354: doSolve(11, 0x800ll, puzzle | 0x1801c00ll, 02355: partsUsed | 0x400l); 02356: piece11at10: 02357: if (partsUsed & 0x800l) goto piece12at10; 02358: if (!(puzzle & 0xc00400ll)) { 02359: if(!(puzzle & 0xd80400ll)) 02360: doSolve(11, 0x800ll, puzzle | 0xd80400ll, 02361: partsUsed | 0x800l); 02362: if(!(puzzle & 0xd00c00ll)) 02363: doSolve(11, 0x800ll, puzzle | 0xd00c00ll, 02364: partsUsed | 0x800l); 02365: if(!(puzzle & 0xc80c00ll)) 02366: doSolve(11, 0x800ll, puzzle | 0xc80c00ll, 02367: partsUsed | 0x800l); 02368: if(!(puzzle & 0x2c00c00ll)) 02369: doSolve(11, 0x800ll, puzzle | 0x2c00c00ll, 02370: partsUsed | 0x800l); 02371: if(!(puzzle & 0x2c02400ll)) 02372: doSolve(11, 0x800ll, puzzle | 0x2c02400ll, 02373: partsUsed | 0x800l); 02374: if(!(puzzle & 0xc02c00ll)) 02375: doSolve(11, 0x800ll, puzzle | 0xc02c00ll, 02376: partsUsed | 0x800l); 02377: if(!(puzzle & 0xc04c00ll)) 02378: doSolve(11, 0x800ll, puzzle | 0xc04c00ll, 02379: partsUsed | 0x800l); 02380: if(!(puzzle & 0x4c00c00ll)) 02381: doSolve(11, 0x800ll, puzzle | 0x4c00c00ll, 02382: partsUsed | 0x800l); 02383: if(!(puzzle & 0x6c00400ll)) 02384: doSolve(11, 0x800ll, puzzle | 0x6c00400ll, 02385: partsUsed | 0x800l); 02386: } 02387: if (!(puzzle & 0x6400ll)) { 02388: if(!(puzzle & 0x406c00ll)) 02389: doSolve(11, 0x800ll, puzzle | 0x406c00ll, 02390: partsUsed | 0x800l); 02391: if(!(puzzle & 0x6006400ll)) 02392: doSolve(11, 0x800ll, puzzle | 0x6006400ll, 02393: partsUsed | 0x800l); 02394: if(!(puzzle & 0x2406400ll)) 02395: doSolve(11, 0x800ll, puzzle | 0x2406400ll, 02396: partsUsed | 0x800l); 02397: if(!(puzzle & 0x4006c00ll)) 02398: doSolve(11, 0x800ll, puzzle | 0x4006c00ll, 02399: partsUsed | 0x800l); 02400: if(!(puzzle & 0x806c00ll)) 02401: doSolve(11, 0x800ll, puzzle | 0x806c00ll, 02402: partsUsed | 0x800l); 02403: if(!(puzzle & 0x2006c00ll)) 02404: doSolve(11, 0x800ll, puzzle | 0x2006c00ll, 02405: partsUsed | 0x800l); 02406: } 02407: if(!(puzzle & 0x4804c00ll)) 02408: doSolve(11, 0x800ll, puzzle | 0x4804c00ll, 02409: partsUsed | 0x800l); 02410: if(!(puzzle & 0x6402400ll)) 02411: doSolve(11, 0x800ll, puzzle | 0x6402400ll, 02412: partsUsed | 0x800l); 02413: if(!(puzzle & 0x2402c00ll)) 02414: doSolve(11, 0x800ll, puzzle | 0x2402c00ll, 02415: partsUsed | 0x800l); 02416: piece12at10: 02417: break; 02418: case 11: 02419: if (partsUsed & 0x2l) goto piece2at11; 02420: if(!(puzzle & 0x400c01800ll)) 02421: doSolve(12, 0x1000ll, puzzle | 0x400c01800ll, 02422: partsUsed | 0x2l); 02423: if(!(puzzle & 0x120900800ll)) 02424: doSolve(12, 0x1000ll, puzzle | 0x120900800ll, 02425: partsUsed | 0x2l); 02426: if(!(puzzle & 0x100904800ll)) 02427: doSolve(12, 0x1000ll, puzzle | 0x100904800ll, 02428: partsUsed | 0x2l); 02429: piece2at11: 02430: if (partsUsed & 0x4l) goto piece3at11; 02431: if (!(puzzle & 0x800800800ll)) { 02432: if(!(puzzle & 0x800920800ll)) 02433: doSolve(12, 0x1000ll, puzzle | 0x800920800ll, 02434: partsUsed | 0x4l); 02435: if(!(puzzle & 0x4900800800ll)) 02436: doSolve(12, 0x1000ll, puzzle | 0x4900800800ll, 02437: partsUsed | 0x4l); 02438: if(!(puzzle & 0x1c00800800ll)) 02439: doSolve(12, 0x1000ll, puzzle | 0x1c00800800ll, 02440: partsUsed | 0x4l); 02441: } 02442: piece3at11: 02443: if (partsUsed & 0x8l) goto piece4at11; 02444: if(!(puzzle & 0x20920800ll)) 02445: doSolve(12, 0x1000ll, puzzle | 0x20920800ll, 02446: partsUsed | 0x8l); 02447: if(!(puzzle & 0x900804800ll)) 02448: doSolve(12, 0x1000ll, puzzle | 0x900804800ll, 02449: partsUsed | 0x8l); 02450: if(!(puzzle & 0xc00801800ll)) 02451: doSolve(12, 0x1000ll, puzzle | 0xc00801800ll, 02452: partsUsed | 0x8l); 02453: piece4at11: 02454: if (partsUsed & 0x10l) goto piece5at11; 02455: if (!(puzzle & 0x800800800800ll)) { 02456: if(!(puzzle & 0x900800900800ll)) 02457: doSolve(12, 0x1000ll, puzzle | 0x900800900800ll, 02458: partsUsed | 0x10l); 02459: if(!(puzzle & 0xc00800c00800ll)) 02460: doSolve(12, 0x1000ll, puzzle | 0xc00800c00800ll, 02461: partsUsed | 0x10l); 02462: if(!(puzzle & 0x4800804800800ll)) 02463: doSolve(12, 0x1000ll, puzzle | 0x4800804800800ll, 02464: partsUsed | 0x10l); 02465: if(!(puzzle & 0x804800804800ll)) 02466: doSolve(12, 0x1000ll, puzzle | 0x804800804800ll, 02467: partsUsed | 0x10l); 02468: if(!(puzzle & 0x1800801800800ll)) 02469: doSolve(12, 0x1000ll, puzzle | 0x1800801800800ll, 02470: partsUsed | 0x10l); 02471: if(!(puzzle & 0x801800801800ll)) 02472: doSolve(12, 0x1000ll, puzzle | 0x801800801800ll, 02473: partsUsed | 0x10l); 02474: } 02475: if(!(puzzle & 0x4004804004800ll)) 02476: doSolve(12, 0x1000ll, puzzle | 0x4004804004800ll, 02477: partsUsed | 0x10l); 02478: if(!(puzzle & 0x1001801001800ll)) 02479: doSolve(12, 0x1000ll, puzzle | 0x1001801001800ll, 02480: partsUsed | 0x10l); 02481: piece5at11: 02482: if (partsUsed & 0x20l) goto piece6at11; 02483: if (!(puzzle & 0x800800800800ll)) { 02484: if(!(puzzle & 0x900800800800ll)) 02485: doSolve(12, 0x1000ll, puzzle | 0x900800800800ll, 02486: partsUsed | 0x20l); 02487: if(!(puzzle & 0xc00800800800ll)) 02488: doSolve(12, 0x1000ll, puzzle | 0xc00800800800ll, 02489: partsUsed | 0x20l); 02490: if(!(puzzle & 0x800800804800ll)) 02491: doSolve(12, 0x1000ll, puzzle | 0x800800804800ll, 02492: partsUsed | 0x20l); 02493: if(!(puzzle & 0x4800800800800ll)) 02494: doSolve(12, 0x1000ll, puzzle | 0x4800800800800ll, 02495: partsUsed | 0x20l); 02496: if(!(puzzle & 0x800800801800ll)) 02497: doSolve(12, 0x1000ll, puzzle | 0x800800801800ll, 02498: partsUsed | 0x20l); 02499: if(!(puzzle & 0x1800800800800ll)) 02500: doSolve(12, 0x1000ll, puzzle | 0x1800800800800ll, 02501: partsUsed | 0x20l); 02502: } 02503: if(!(puzzle & 0x4004004004800ll)) 02504: doSolve(12, 0x1000ll, puzzle | 0x4004004004800ll, 02505: partsUsed | 0x20l); 02506: if(!(puzzle & 0x1001001001800ll)) 02507: doSolve(12, 0x1000ll, puzzle | 0x1001001001800ll, 02508: partsUsed | 0x20l); 02509: piece6at11: 02510: if (partsUsed & 0x40l) goto piece7at11; 02511: if (!(puzzle & 0x800800800800ll)) { 02512: if(!(puzzle & 0x800900800800ll)) 02513: doSolve(12, 0x1000ll, puzzle | 0x800900800800ll, 02514: partsUsed | 0x40l); 02515: if(!(puzzle & 0x800800c00800ll)) 02516: doSolve(12, 0x1000ll, puzzle | 0x800800c00800ll, 02517: partsUsed | 0x40l); 02518: if(!(puzzle & 0x800c00800800ll)) 02519: doSolve(12, 0x1000ll, puzzle | 0x800c00800800ll, 02520: partsUsed | 0x40l); 02521: if(!(puzzle & 0x800804800800ll)) 02522: doSolve(12, 0x1000ll, puzzle | 0x800804800800ll, 02523: partsUsed | 0x40l); 02524: if(!(puzzle & 0x804800800800ll)) 02525: doSolve(12, 0x1000ll, puzzle | 0x804800800800ll, 02526: partsUsed | 0x40l); 02527: if(!(puzzle & 0x800801800800ll)) 02528: doSolve(12, 0x1000ll, puzzle | 0x800801800800ll, 02529: partsUsed | 0x40l); 02530: if(!(puzzle & 0x801800800800ll)) 02531: doSolve(12, 0x1000ll, puzzle | 0x801800800800ll, 02532: partsUsed | 0x40l); 02533: } 02534: if(!(puzzle & 0x4920800ll)) 02535: doSolve(12, 0x1000ll, puzzle | 0x4920800ll, 02536: partsUsed | 0x40l); 02537: if(!(puzzle & 0x800800900800ll)) 02538: doSolve(12, 0x1000ll, puzzle | 0x800800900800ll, 02539: partsUsed | 0x40l); 02540: piece7at11: 02541: if (partsUsed & 0x80l) goto piece8at11; 02542: if(!(puzzle & 0x4800804800ll)) 02543: doSolve(12, 0x1000ll, puzzle | 0x4800804800ll, 02544: partsUsed | 0x80l); 02545: if(!(puzzle & 0x4804004800ll)) 02546: doSolve(12, 0x1000ll, puzzle | 0x4804004800ll, 02547: partsUsed | 0x80l); 02548: if(!(puzzle & 0x1801001800ll)) 02549: doSolve(12, 0x1000ll, puzzle | 0x1801001800ll, 02550: partsUsed | 0x80l); 02551: if(!(puzzle & 0x1800801800ll)) 02552: doSolve(12, 0x1000ll, puzzle | 0x1800801800ll, 02553: partsUsed | 0x80l); 02554: piece8at11: 02555: if (partsUsed & 0x100l) goto piece9at11; 02556: if(!(puzzle & 0xc80800ll)) 02557: doSolve(12, 0x1000ll, puzzle | 0xc80800ll, 02558: partsUsed | 0x100l); 02559: if(!(puzzle & 0xc04800ll)) 02560: doSolve(12, 0x1000ll, puzzle | 0xc04800ll, 02561: partsUsed | 0x100l); 02562: if(!(puzzle & 0x1201800ll)) 02563: doSolve(12, 0x1000ll, puzzle | 0x1201800ll, 02564: partsUsed | 0x100l); 02565: if(!(puzzle & 0x1005800ll)) 02566: doSolve(12, 0x1000ll, puzzle | 0x1005800ll, 02567: partsUsed | 0x100l); 02568: if(!(puzzle & 0xb00800ll)) 02569: doSolve(12, 0x1000ll, puzzle | 0xb00800ll, 02570: partsUsed | 0x100l); 02571: if(!(puzzle & 0x2006800ll)) 02572: doSolve(12, 0x1000ll, puzzle | 0x2006800ll, 02573: partsUsed | 0x100l); 02574: if(!(puzzle & 0x6800800ll)) 02575: doSolve(12, 0x1000ll, puzzle | 0x6800800ll, 02576: partsUsed | 0x100l); 02577: if(!(puzzle & 0x4801800ll)) 02578: doSolve(12, 0x1000ll, puzzle | 0x4801800ll, 02579: partsUsed | 0x100l); 02580: if(!(puzzle & 0x9800800ll)) 02581: doSolve(12, 0x1000ll, puzzle | 0x9800800ll, 02582: partsUsed | 0x100l); 02583: if(!(puzzle & 0xc004800ll)) 02584: doSolve(12, 0x1000ll, puzzle | 0xc004800ll, 02585: partsUsed | 0x100l); 02586: if(!(puzzle & 0x80c800ll)) 02587: doSolve(12, 0x1000ll, puzzle | 0x80c800ll, 02588: partsUsed | 0x100l); 02589: if(!(puzzle & 0x8009800ll)) 02590: doSolve(12, 0x1000ll, puzzle | 0x8009800ll, 02591: partsUsed | 0x100l); 02592: piece9at11: 02593: if (partsUsed & 0x200l) goto piece10at11; 02594: if (!(puzzle & 0x900800ll)) { 02595: if(!(puzzle & 0x100920800ll)) 02596: doSolve(12, 0x1000ll, puzzle | 0x100920800ll, 02597: partsUsed | 0x200l); 02598: if(!(puzzle & 0x800904800ll)) 02599: doSolve(12, 0x1000ll, puzzle | 0x800904800ll, 02600: partsUsed | 0x200l); 02601: if(!(puzzle & 0x4004900800ll)) 02602: doSolve(12, 0x1000ll, puzzle | 0x4004900800ll, 02603: partsUsed | 0x200l); 02604: if(!(puzzle & 0x4800900800ll)) 02605: doSolve(12, 0x1000ll, puzzle | 0x4800900800ll, 02606: partsUsed | 0x200l); 02607: if(!(puzzle & 0x104900800ll)) 02608: doSolve(12, 0x1000ll, puzzle | 0x104900800ll, 02609: partsUsed | 0x200l); 02610: } 02611: if (!(puzzle & 0x800800800ll)) { 02612: if(!(puzzle & 0x904800800ll)) 02613: doSolve(12, 0x1000ll, puzzle | 0x904800800ll, 02614: partsUsed | 0x200l); 02615: if(!(puzzle & 0x800c01800ll)) 02616: doSolve(12, 0x1000ll, puzzle | 0x800c01800ll, 02617: partsUsed | 0x200l); 02618: if(!(puzzle & 0x1800c00800ll)) 02619: doSolve(12, 0x1000ll, puzzle | 0x1800c00800ll, 02620: partsUsed | 0x200l); 02621: if(!(puzzle & 0xc01800800ll)) 02622: doSolve(12, 0x1000ll, puzzle | 0xc01800800ll, 02623: partsUsed | 0x200l); 02624: } 02625: if(!(puzzle & 0x401c00800ll)) 02626: doSolve(12, 0x1000ll, puzzle | 0x401c00800ll, 02627: partsUsed | 0x200l); 02628: if(!(puzzle & 0x1001c00800ll)) 02629: doSolve(12, 0x1000ll, puzzle | 0x1001c00800ll, 02630: partsUsed | 0x200l); 02631: piece10at11: 02632: if (partsUsed & 0x400l) goto piece11at11; 02633: if (!(puzzle & 0x4800800ll)) { 02634: if(!(puzzle & 0x804804800ll)) 02635: doSolve(12, 0x1000ll, puzzle | 0x804804800ll, 02636: partsUsed | 0x400l); 02637: if(!(puzzle & 0x4804800800ll)) 02638: doSolve(12, 0x1000ll, puzzle | 0x4804800800ll, 02639: partsUsed | 0x400l); 02640: if(!(puzzle & 0x4004804800ll)) 02641: doSolve(12, 0x1000ll, puzzle | 0x4004804800ll, 02642: partsUsed | 0x400l); 02643: } 02644: if (!(puzzle & 0x1800800ll)) { 02645: if(!(puzzle & 0x1001801800ll)) 02646: doSolve(12, 0x1000ll, puzzle | 0x1001801800ll, 02647: partsUsed | 0x400l); 02648: if(!(puzzle & 0x801801800ll)) 02649: doSolve(12, 0x1000ll, puzzle | 0x801801800ll, 02650: partsUsed | 0x400l); 02651: if(!(puzzle & 0x1801800800ll)) 02652: doSolve(12, 0x1000ll, puzzle | 0x1801800800ll, 02653: partsUsed | 0x400l); 02654: } 02655: if(!(puzzle & 0x900900800ll)) 02656: doSolve(12, 0x1000ll, puzzle | 0x900900800ll, 02657: partsUsed | 0x400l); 02658: if(!(puzzle & 0x4904800ll)) 02659: doSolve(12, 0x1000ll, puzzle | 0x4904800ll, 02660: partsUsed | 0x400l); 02661: if(!(puzzle & 0xf800ll)) 02662: doSolve(12, 0x1000ll, puzzle | 0xf800ll, 02663: partsUsed | 0x400l); 02664: if(!(puzzle & 0x1c01800ll)) 02665: doSolve(12, 0x1000ll, puzzle | 0x1c01800ll, 02666: partsUsed | 0x400l); 02667: if(!(puzzle & 0xc00c00800ll)) 02668: doSolve(12, 0x1000ll, puzzle | 0xc00c00800ll, 02669: partsUsed | 0x400l); 02670: piece11at11: 02671: if (partsUsed & 0x800l) goto piece12at11; 02672: if (!(puzzle & 0x900800ll)) { 02673: if(!(puzzle & 0xd80800ll)) 02674: doSolve(12, 0x1000ll, puzzle | 0xd80800ll, 02675: partsUsed | 0x800l); 02676: if(!(puzzle & 0x1b00800ll)) 02677: doSolve(12, 0x1000ll, puzzle | 0x1b00800ll, 02678: partsUsed | 0x800l); 02679: if(!(puzzle & 0x1901800ll)) 02680: doSolve(12, 0x1000ll, puzzle | 0x1901800ll, 02681: partsUsed | 0x800l); 02682: } 02683: if (!(puzzle & 0x801800ll)) { 02684: if(!(puzzle & 0x1a01800ll)) 02685: doSolve(12, 0x1000ll, puzzle | 0x1a01800ll, 02686: partsUsed | 0x800l); 02687: if(!(puzzle & 0x80d800ll)) 02688: doSolve(12, 0x1000ll, puzzle | 0x80d800ll, 02689: partsUsed | 0x800l); 02690: if(!(puzzle & 0x5801800ll)) 02691: doSolve(12, 0x1000ll, puzzle | 0x5801800ll, 02692: partsUsed | 0x800l); 02693: if(!(puzzle & 0x1805800ll)) 02694: doSolve(12, 0x1000ll, puzzle | 0x1805800ll, 02695: partsUsed | 0x800l); 02696: if(!(puzzle & 0x1809800ll)) 02697: doSolve(12, 0x1000ll, puzzle | 0x1809800ll, 02698: partsUsed | 0x800l); 02699: if(!(puzzle & 0x9801800ll)) 02700: doSolve(12, 0x1000ll, puzzle | 0x9801800ll, 02701: partsUsed | 0x800l); 02702: if(!(puzzle & 0x4805800ll)) 02703: doSolve(12, 0x1000ll, puzzle | 0x4805800ll, 02704: partsUsed | 0x800l); 02705: } 02706: if (!(puzzle & 0x6000800ll)) { 02707: if(!(puzzle & 0x6c00800ll)) 02708: doSolve(12, 0x1000ll, puzzle | 0x6c00800ll, 02709: partsUsed | 0x800l); 02710: if(!(puzzle & 0x6804800ll)) 02711: doSolve(12, 0x1000ll, puzzle | 0x6804800ll, 02712: partsUsed | 0x800l); 02713: if(!(puzzle & 0x6006800ll)) 02714: doSolve(12, 0x1000ll, puzzle | 0x6006800ll, 02715: partsUsed | 0x800l); 02716: } 02717: if (!(puzzle & 0x4004800ll)) { 02718: if(!(puzzle & 0x4c04800ll)) 02719: doSolve(12, 0x1000ll, puzzle | 0x4c04800ll, 02720: partsUsed | 0x800l); 02721: if(!(puzzle & 0x4806800ll)) 02722: doSolve(12, 0x1000ll, puzzle | 0x4806800ll, 02723: partsUsed | 0x800l); 02724: if(!(puzzle & 0xc00c800ll)) 02725: doSolve(12, 0x1000ll, puzzle | 0xc00c800ll, 02726: partsUsed | 0x800l); 02727: if(!(puzzle & 0x5804800ll)) 02728: doSolve(12, 0x1000ll, puzzle | 0x5804800ll, 02729: partsUsed | 0x800l); 02730: if(!(puzzle & 0x480c800ll)) 02731: doSolve(12, 0x1000ll, puzzle | 0x480c800ll, 02732: partsUsed | 0x800l); 02733: if(!(puzzle & 0x400d800ll)) 02734: doSolve(12, 0x1000ll, puzzle | 0x400d800ll, 02735: partsUsed | 0x800l); 02736: if(!(puzzle & 0xc804800ll)) 02737: doSolve(12, 0x1000ll, puzzle | 0xc804800ll, 02738: partsUsed | 0x800l); 02739: } 02740: if (!(puzzle & 0x9800ll)) { 02741: if(!(puzzle & 0x9009800ll)) 02742: doSolve(12, 0x1000ll, puzzle | 0x9009800ll, 02743: partsUsed | 0x800l); 02744: if(!(puzzle & 0x800d800ll)) 02745: doSolve(12, 0x1000ll, puzzle | 0x800d800ll, 02746: partsUsed | 0x800l); 02747: if(!(puzzle & 0x100d800ll)) 02748: doSolve(12, 0x1000ll, puzzle | 0x100d800ll, 02749: partsUsed | 0x800l); 02750: } 02751: if(!(puzzle & 0xd800800ll)) 02752: doSolve(12, 0x1000ll, puzzle | 0xd800800ll, 02753: partsUsed | 0x800l); 02754: piece12at11: 02755: break; 02756: case 12: 02757: if (partsUsed & 0x2l) goto piece2at12; 02758: if(!(puzzle & 0xc01801000ll)) 02759: doSolve(13, 0x2000ll, puzzle | 0xc01801000ll, 02760: partsUsed | 0x2l); 02761: if(!(puzzle & 0x241201000ll)) 02762: doSolve(13, 0x2000ll, puzzle | 0x241201000ll, 02763: partsUsed | 0x2l); 02764: if(!(puzzle & 0x201209000ll)) 02765: doSolve(13, 0x2000ll, puzzle | 0x201209000ll, 02766: partsUsed | 0x2l); 02767: piece2at12: 02768: if (partsUsed & 0x4l) goto piece3at12; 02769: if (!(puzzle & 0x1001001000ll)) { 02770: if(!(puzzle & 0x1001241000ll)) 02771: doSolve(13, 0x2000ll, puzzle | 0x1001241000ll, 02772: partsUsed | 0x4l); 02773: if(!(puzzle & 0x9201001000ll)) 02774: doSolve(13, 0x2000ll, puzzle | 0x9201001000ll, 02775: partsUsed | 0x4l); 02776: if(!(puzzle & 0x1001c01000ll)) 02777: doSolve(13, 0x2000ll, puzzle | 0x1001c01000ll, 02778: partsUsed | 0x4l); 02779: } 02780: piece3at12: 02781: if (partsUsed & 0x8l) goto piece4at12; 02782: if(!(puzzle & 0x401c01000ll)) 02783: doSolve(13, 0x2000ll, puzzle | 0x401c01000ll, 02784: partsUsed | 0x8l); 02785: if(!(puzzle & 0x41241000ll)) 02786: doSolve(13, 0x2000ll, puzzle | 0x41241000ll, 02787: partsUsed | 0x8l); 02788: if(!(puzzle & 0x1201009000ll)) 02789: doSolve(13, 0x2000ll, puzzle | 0x1201009000ll, 02790: partsUsed | 0x8l); 02791: piece4at12: 02792: if (partsUsed & 0x10l) goto piece5at12; 02793: if (!(puzzle & 0x1001001001000ll)) { 02794: if(!(puzzle & 0x1201001201000ll)) 02795: doSolve(13, 0x2000ll, puzzle | 0x1201001201000ll, 02796: partsUsed | 0x10l); 02797: if(!(puzzle & 0x1801001801000ll)) 02798: doSolve(13, 0x2000ll, puzzle | 0x1801001801000ll, 02799: partsUsed | 0x10l); 02800: if(!(puzzle & 0x9001009001000ll)) 02801: doSolve(13, 0x2000ll, puzzle | 0x9001009001000ll, 02802: partsUsed | 0x10l); 02803: if(!(puzzle & 0x1009001009000ll)) 02804: doSolve(13, 0x2000ll, puzzle | 0x1009001009000ll, 02805: partsUsed | 0x10l); 02806: } 02807: if(!(puzzle & 0x8009008009000ll)) 02808: doSolve(13, 0x2000ll, puzzle | 0x8009008009000ll, 02809: partsUsed | 0x10l); 02810: piece5at12: 02811: if (partsUsed & 0x20l) goto piece6at12; 02812: if (!(puzzle & 0x1001001001000ll)) { 02813: if(!(puzzle & 0x1201001001000ll)) 02814: doSolve(13, 0x2000ll, puzzle | 0x1201001001000ll, 02815: partsUsed | 0x20l); 02816: if(!(puzzle & 0x1801001001000ll)) 02817: doSolve(13, 0x2000ll, puzzle | 0x1801001001000ll, 02818: partsUsed | 0x20l); 02819: if(!(puzzle & 0x1001001009000ll)) 02820: doSolve(13, 0x2000ll, puzzle | 0x1001001009000ll, 02821: partsUsed | 0x20l); 02822: if(!(puzzle & 0x9001001001000ll)) 02823: doSolve(13, 0x2000ll, puzzle | 0x9001001001000ll, 02824: partsUsed | 0x20l); 02825: } 02826: if(!(puzzle & 0x8008008009000ll)) 02827: doSolve(13, 0x2000ll, puzzle | 0x8008008009000ll, 02828: partsUsed | 0x20l); 02829: piece6at12: 02830: if (partsUsed & 0x40l) goto piece7at12; 02831: if (!(puzzle & 0x1001001001000ll)) { 02832: if(!(puzzle & 0x1001201001000ll)) 02833: doSolve(13, 0x2000ll, puzzle | 0x1001201001000ll, 02834: partsUsed | 0x40l); 02835: if(!(puzzle & 0x1001001801000ll)) 02836: doSolve(13, 0x2000ll, puzzle | 0x1001001801000ll, 02837: partsUsed | 0x40l); 02838: if(!(puzzle & 0x1001801001000ll)) 02839: doSolve(13, 0x2000ll, puzzle | 0x1001801001000ll, 02840: partsUsed | 0x40l); 02841: if(!(puzzle & 0x1001009001000ll)) 02842: doSolve(13, 0x2000ll, puzzle | 0x1001009001000ll, 02843: partsUsed | 0x40l); 02844: if(!(puzzle & 0x1009001001000ll)) 02845: doSolve(13, 0x2000ll, puzzle | 0x1009001001000ll, 02846: partsUsed | 0x40l); 02847: } 02848: if(!(puzzle & 0x9241000ll)) 02849: doSolve(13, 0x2000ll, puzzle | 0x9241000ll, 02850: partsUsed | 0x40l); 02851: if(!(puzzle & 0x1001001201000ll)) 02852: doSolve(13, 0x2000ll, puzzle | 0x1001001201000ll, 02853: partsUsed | 0x40l); 02854: piece7at12: 02855: if (partsUsed & 0x80l) goto piece8at12; 02856: if(!(puzzle & 0x9001009000ll)) 02857: doSolve(13, 0x2000ll, puzzle | 0x9001009000ll, 02858: partsUsed | 0x80l); 02859: if(!(puzzle & 0x9008009000ll)) 02860: doSolve(13, 0x2000ll, puzzle | 0x9008009000ll, 02861: partsUsed | 0x80l); 02862: piece8at12: 02863: if (partsUsed & 0x100l) goto piece9at12; 02864: if(!(puzzle & 0x1901000ll)) 02865: doSolve(13, 0x2000ll, puzzle | 0x1901000ll, 02866: partsUsed | 0x100l); 02867: if(!(puzzle & 0x1809000ll)) 02868: doSolve(13, 0x2000ll, puzzle | 0x1809000ll, 02869: partsUsed | 0x100l); 02870: if(!(puzzle & 0x400d000ll)) 02871: doSolve(13, 0x2000ll, puzzle | 0x400d000ll, 02872: partsUsed | 0x100l); 02873: if(!(puzzle & 0xd001000ll)) 02874: doSolve(13, 0x2000ll, puzzle | 0xd001000ll, 02875: partsUsed | 0x100l); 02876: piece9at12: 02877: if (partsUsed & 0x200l) goto piece10at12; 02878: if (!(puzzle & 0x1201000ll)) { 02879: if(!(puzzle & 0x201241000ll)) 02880: doSolve(13, 0x2000ll, puzzle | 0x201241000ll, 02881: partsUsed | 0x200l); 02882: if(!(puzzle & 0x1001209000ll)) 02883: doSolve(13, 0x2000ll, puzzle | 0x1001209000ll, 02884: partsUsed | 0x200l); 02885: if(!(puzzle & 0x8009201000ll)) 02886: doSolve(13, 0x2000ll, puzzle | 0x8009201000ll, 02887: partsUsed | 0x200l); 02888: if(!(puzzle & 0x9001201000ll)) 02889: doSolve(13, 0x2000ll, puzzle | 0x9001201000ll, 02890: partsUsed | 0x200l); 02891: if(!(puzzle & 0x209201000ll)) 02892: doSolve(13, 0x2000ll, puzzle | 0x209201000ll, 02893: partsUsed | 0x200l); 02894: } 02895: if(!(puzzle & 0x1209001000ll)) 02896: doSolve(13, 0x2000ll, puzzle | 0x1209001000ll, 02897: partsUsed | 0x200l); 02898: if(!(puzzle & 0x801c01000ll)) 02899: doSolve(13, 0x2000ll, puzzle | 0x801c01000ll, 02900: partsUsed | 0x200l); 02901: piece10at12: 02902: if (partsUsed & 0x400l) goto piece11at12; 02903: if (!(puzzle & 0x1001001000ll)) { 02904: if(!(puzzle & 0x1801801000ll)) 02905: doSolve(13, 0x2000ll, puzzle | 0x1801801000ll, 02906: partsUsed | 0x400l); 02907: if(!(puzzle & 0x1009009000ll)) 02908: doSolve(13, 0x2000ll, puzzle | 0x1009009000ll, 02909: partsUsed | 0x400l); 02910: if(!(puzzle & 0x9009001000ll)) 02911: doSolve(13, 0x2000ll, puzzle | 0x9009001000ll, 02912: partsUsed | 0x400l); 02913: } 02914: if(!(puzzle & 0x1201201000ll)) 02915: doSolve(13, 0x2000ll, puzzle | 0x1201201000ll, 02916: partsUsed | 0x400l); 02917: if(!(puzzle & 0x9209000ll)) 02918: doSolve(13, 0x2000ll, puzzle | 0x9209000ll, 02919: partsUsed | 0x400l); 02920: if(!(puzzle & 0x8009009000ll)) 02921: doSolve(13, 0x2000ll, puzzle | 0x8009009000ll, 02922: partsUsed | 0x400l); 02923: piece11at12: 02924: if (partsUsed & 0x800l) goto piece12at12; 02925: if (!(puzzle & 0x1801000ll)) { 02926: if(!(puzzle & 0x1b01000ll)) 02927: doSolve(13, 0x2000ll, puzzle | 0x1b01000ll, 02928: partsUsed | 0x800l); 02929: if(!(puzzle & 0xd801000ll)) 02930: doSolve(13, 0x2000ll, puzzle | 0xd801000ll, 02931: partsUsed | 0x800l); 02932: if(!(puzzle & 0x9809000ll)) 02933: doSolve(13, 0x2000ll, puzzle | 0x9809000ll, 02934: partsUsed | 0x800l); 02935: } 02936: if (!(puzzle & 0x8009000ll)) { 02937: if(!(puzzle & 0xd009000ll)) 02938: doSolve(13, 0x2000ll, puzzle | 0xd009000ll, 02939: partsUsed | 0x800l); 02940: if(!(puzzle & 0xc00d000ll)) 02941: doSolve(13, 0x2000ll, puzzle | 0xc00d000ll, 02942: partsUsed | 0x800l); 02943: if(!(puzzle & 0x900d000ll)) 02944: doSolve(13, 0x2000ll, puzzle | 0x900d000ll, 02945: partsUsed | 0x800l); 02946: } 02947: piece12at12: 02948: break; 02949: case 13: 02950: if (partsUsed & 0x2l) goto piece2at13; 02951: if(!(puzzle & 0x482402000ll)) 02952: doSolve(14, 0x4000ll, puzzle | 0x482402000ll, 02953: partsUsed | 0x2l); 02954: if(!(puzzle & 0x800c006000ll)) 02955: doSolve(14, 0x4000ll, puzzle | 0x800c006000ll, 02956: partsUsed | 0x2l); 02957: if(!(puzzle & 0xc006002000ll)) 02958: doSolve(14, 0x4000ll, puzzle | 0xc006002000ll, 02959: partsUsed | 0x2l); 02960: piece2at13: 02961: if (partsUsed & 0x4l) goto piece3at13; 02962: if(!(puzzle & 0x400400e000ll)) 02963: doSolve(14, 0x4000ll, puzzle | 0x400400e000ll, 02964: partsUsed | 0x4l); 02965: if(!(puzzle & 0x2002482000ll)) 02966: doSolve(14, 0x4000ll, puzzle | 0x2002482000ll, 02967: partsUsed | 0x4l); 02968: if(!(puzzle & 0x200e002000ll)) 02969: doSolve(14, 0x4000ll, puzzle | 0x200e002000ll, 02970: partsUsed | 0x4l); 02971: piece3at13: 02972: if (partsUsed & 0x8l) goto piece4at13; 02973: if(!(puzzle & 0x82482000ll)) 02974: doSolve(14, 0x4000ll, puzzle | 0x82482000ll, 02975: partsUsed | 0x8l); 02976: if(!(puzzle & 0x800e002000ll)) 02977: doSolve(14, 0x4000ll, puzzle | 0x800e002000ll, 02978: partsUsed | 0x8l); 02979: if(!(puzzle & 0xc004006000ll)) 02980: doSolve(14, 0x4000ll, puzzle | 0xc004006000ll, 02981: partsUsed | 0x8l); 02982: piece4at13: 02983: if (partsUsed & 0x10l) goto piece5at13; 02984: if (!(puzzle & 0x2002002002000ll)) { 02985: if(!(puzzle & 0x2402002402000ll)) 02986: doSolve(14, 0x4000ll, puzzle | 0x2402002402000ll, 02987: partsUsed | 0x10l); 02988: if(!(puzzle & 0x6002006002000ll)) 02989: doSolve(14, 0x4000ll, puzzle | 0x6002006002000ll, 02990: partsUsed | 0x10l); 02991: if(!(puzzle & 0x2006002006000ll)) 02992: doSolve(14, 0x4000ll, puzzle | 0x2006002006000ll, 02993: partsUsed | 0x10l); 02994: } 02995: if(!(puzzle & 0x4006004006000ll)) 02996: doSolve(14, 0x4000ll, puzzle | 0x4006004006000ll, 02997: partsUsed | 0x10l); 02998: piece5at13: 02999: if (partsUsed & 0x20l) goto piece6at13; 03000: if (!(puzzle & 0x2002002002000ll)) { 03001: if(!(puzzle & 0x2402002002000ll)) 03002: doSolve(14, 0x4000ll, puzzle | 0x2402002002000ll, 03003: partsUsed | 0x20l); 03004: if(!(puzzle & 0x2002002006000ll)) 03005: doSolve(14, 0x4000ll, puzzle | 0x2002002006000ll, 03006: partsUsed | 0x20l); 03007: if(!(puzzle & 0x6002002002000ll)) 03008: doSolve(14, 0x4000ll, puzzle | 0x6002002002000ll, 03009: partsUsed | 0x20l); 03010: } 03011: if(!(puzzle & 0x2492000ll)) 03012: doSolve(14, 0x4000ll, puzzle | 0x2492000ll, 03013: partsUsed | 0x20l); 03014: if(!(puzzle & 0x4004004006000ll)) 03015: doSolve(14, 0x4000ll, puzzle | 0x4004004006000ll, 03016: partsUsed | 0x20l); 03017: piece6at13: 03018: if (partsUsed & 0x40l) goto piece7at13; 03019: if (!(puzzle & 0x2002002002000ll)) { 03020: if(!(puzzle & 0x2002402002000ll)) 03021: doSolve(14, 0x4000ll, puzzle | 0x2002402002000ll, 03022: partsUsed | 0x40l); 03023: if(!(puzzle & 0x2002002402000ll)) 03024: doSolve(14, 0x4000ll, puzzle | 0x2002002402000ll, 03025: partsUsed | 0x40l); 03026: if(!(puzzle & 0x2002006002000ll)) 03027: doSolve(14, 0x4000ll, puzzle | 0x2002006002000ll, 03028: partsUsed | 0x40l); 03029: if(!(puzzle & 0x2006002002000ll)) 03030: doSolve(14, 0x4000ll, puzzle | 0x2006002002000ll, 03031: partsUsed | 0x40l); 03032: } 03033: piece7at13: 03034: if (partsUsed & 0x80l) goto piece8at13; 03035: if(!(puzzle & 0x6004006000ll)) 03036: doSolve(14, 0x4000ll, puzzle | 0x6004006000ll, 03037: partsUsed | 0x80l); 03038: if(!(puzzle & 0x6002006000ll)) 03039: doSolve(14, 0x4000ll, puzzle | 0x6002006000ll, 03040: partsUsed | 0x80l); 03041: if(!(puzzle & 0xe00a000ll)) 03042: doSolve(14, 0x4000ll, puzzle | 0xe00a000ll, 03043: partsUsed | 0x80l); 03044: if(!(puzzle & 0xa00e000ll)) 03045: doSolve(14, 0x4000ll, puzzle | 0xa00e000ll, 03046: partsUsed | 0x80l); 03047: piece8at13: 03048: if (partsUsed & 0x100l) goto piece9at13; 03049: if(!(puzzle & 0x4806000ll)) 03050: doSolve(14, 0x4000ll, puzzle | 0x4806000ll, 03051: partsUsed | 0x100l); 03052: if(!(puzzle & 0x2c02000ll)) 03053: doSolve(14, 0x4000ll, puzzle | 0x2c02000ll, 03054: partsUsed | 0x100l); 03055: piece9at13: 03056: if (partsUsed & 0x200l) goto piece10at13; 03057: if(!(puzzle & 0x402482000ll)) 03058: doSolve(14, 0x4000ll, puzzle | 0x402482000ll, 03059: partsUsed | 0x200l); 03060: if(!(puzzle & 0x400c006000ll)) 03061: doSolve(14, 0x4000ll, puzzle | 0x400c006000ll, 03062: partsUsed | 0x200l); 03063: if(!(puzzle & 0x400e002000ll)) 03064: doSolve(14, 0x4000ll, puzzle | 0x400e002000ll, 03065: partsUsed | 0x200l); 03066: piece10at13: 03067: if (partsUsed & 0x400l) goto piece11at13; 03068: if (!(puzzle & 0x2002002000ll)) { 03069: if(!(puzzle & 0x2402402000ll)) 03070: doSolve(14, 0x4000ll, puzzle | 0x2402402000ll, 03071: partsUsed | 0x400l); 03072: if(!(puzzle & 0x2006006000ll)) 03073: doSolve(14, 0x4000ll, puzzle | 0x2006006000ll, 03074: partsUsed | 0x400l); 03075: if(!(puzzle & 0x6006002000ll)) 03076: doSolve(14, 0x4000ll, puzzle | 0x6006002000ll, 03077: partsUsed | 0x400l); 03078: } 03079: if (!(puzzle & 0x4006000ll)) { 03080: if(!(puzzle & 0x4006006000ll)) 03081: doSolve(14, 0x4000ll, puzzle | 0x4006006000ll, 03082: partsUsed | 0x400l); 03083: if(!(puzzle & 0xe006000ll)) 03084: doSolve(14, 0x4000ll, puzzle | 0xe006000ll, 03085: partsUsed | 0x400l); 03086: if(!(puzzle & 0x600e000ll)) 03087: doSolve(14, 0x4000ll, puzzle | 0x600e000ll, 03088: partsUsed | 0x400l); 03089: if(!(puzzle & 0xc00e000ll)) 03090: doSolve(14, 0x4000ll, puzzle | 0xc00e000ll, 03091: partsUsed | 0x400l); 03092: } 03093: piece11at13: 03094: if (partsUsed & 0x800l) goto piece12at13; 03095: if (!(puzzle & 0x6002000ll)) { 03096: if(!(puzzle & 0x6c02000ll)) 03097: doSolve(14, 0x4000ll, puzzle | 0x6c02000ll, 03098: partsUsed | 0x800l); 03099: if(!(puzzle & 0x6806000ll)) 03100: doSolve(14, 0x4000ll, puzzle | 0x6806000ll, 03101: partsUsed | 0x800l); 03102: if(!(puzzle & 0x6406000ll)) 03103: doSolve(14, 0x4000ll, puzzle | 0x6406000ll, 03104: partsUsed | 0x800l); 03105: } 03106: piece12at13: 03107: break; 03108: case 14: 03109: if (partsUsed & 0x2l) goto piece2at14; 03110: if(!(puzzle & 0x904804000ll)) 03111: doSolve(15, 0x8000ll, puzzle | 0x904804000ll, 03112: partsUsed | 0x2l); 03113: if(!(puzzle & 0x200600c000ll)) 03114: doSolve(15, 0x8000ll, puzzle | 0x200600c000ll, 03115: partsUsed | 0x2l); 03116: piece2at14: 03117: if (partsUsed & 0x4l) goto piece3at14; 03118: if(!(puzzle & 0x4004904000ll)) 03119: doSolve(15, 0x8000ll, puzzle | 0x4004904000ll, 03120: partsUsed | 0x4l); 03121: if(!(puzzle & 0xe004004000ll)) 03122: doSolve(15, 0x8000ll, puzzle | 0xe004004000ll, 03123: partsUsed | 0x4l); 03124: piece3at14: 03125: if (partsUsed & 0x8l) goto piece4at14; 03126: if(!(puzzle & 0x104904000ll)) 03127: doSolve(15, 0x8000ll, puzzle | 0x104904000ll, 03128: partsUsed | 0x8l); 03129: if(!(puzzle & 0x600400c000ll)) 03130: doSolve(15, 0x8000ll, puzzle | 0x600400c000ll, 03131: partsUsed | 0x8l); 03132: piece4at14: 03133: if (partsUsed & 0x10l) goto piece5at14; 03134: if (!(puzzle & 0x4004004004000ll)) { 03135: if(!(puzzle & 0x4804004804000ll)) 03136: doSolve(15, 0x8000ll, puzzle | 0x4804004804000ll, 03137: partsUsed | 0x10l); 03138: if(!(puzzle & 0x6004006004000ll)) 03139: doSolve(15, 0x8000ll, puzzle | 0x6004006004000ll, 03140: partsUsed | 0x10l); 03141: if(!(puzzle & 0xc00400c004000ll)) 03142: doSolve(15, 0x8000ll, puzzle | 0xc00400c004000ll, 03143: partsUsed | 0x10l); 03144: if(!(puzzle & 0x400c00400c000ll)) 03145: doSolve(15, 0x8000ll, puzzle | 0x400c00400c000ll, 03146: partsUsed | 0x10l); 03147: } 03148: if(!(puzzle & 0x800c00800c000ll)) 03149: doSolve(15, 0x8000ll, puzzle | 0x800c00800c000ll, 03150: partsUsed | 0x10l); 03151: piece5at14: 03152: if (partsUsed & 0x20l) goto piece6at14; 03153: if (!(puzzle & 0x4004004004000ll)) { 03154: if(!(puzzle & 0x4804004004000ll)) 03155: doSolve(15, 0x8000ll, puzzle | 0x4804004004000ll, 03156: partsUsed | 0x20l); 03157: if(!(puzzle & 0x6004004004000ll)) 03158: doSolve(15, 0x8000ll, puzzle | 0x6004004004000ll, 03159: partsUsed | 0x20l); 03160: if(!(puzzle & 0x400400400c000ll)) 03161: doSolve(15, 0x8000ll, puzzle | 0x400400400c000ll, 03162: partsUsed | 0x20l); 03163: if(!(puzzle & 0xc004004004000ll)) 03164: doSolve(15, 0x8000ll, puzzle | 0xc004004004000ll, 03165: partsUsed | 0x20l); 03166: } 03167: if(!(puzzle & 0x4924000ll)) 03168: doSolve(15, 0x8000ll, puzzle | 0x4924000ll, 03169: partsUsed | 0x20l); 03170: if(!(puzzle & 0x800800800c000ll)) 03171: doSolve(15, 0x8000ll, puzzle | 0x800800800c000ll, 03172: partsUsed | 0x20l); 03173: piece6at14: 03174: if (partsUsed & 0x40l) goto piece7at14; 03175: if (!(puzzle & 0x4004004004000ll)) { 03176: if(!(puzzle & 0x4004804004000ll)) 03177: doSolve(15, 0x8000ll, puzzle | 0x4004804004000ll, 03178: partsUsed | 0x40l); 03179: if(!(puzzle & 0x4004004804000ll)) 03180: doSolve(15, 0x8000ll, puzzle | 0x4004004804000ll, 03181: partsUsed | 0x40l); 03182: if(!(puzzle & 0x4004006004000ll)) 03183: doSolve(15, 0x8000ll, puzzle | 0x4004006004000ll, 03184: partsUsed | 0x40l); 03185: if(!(puzzle & 0x4006004004000ll)) 03186: doSolve(15, 0x8000ll, puzzle | 0x4006004004000ll, 03187: partsUsed | 0x40l); 03188: if(!(puzzle & 0x400400c004000ll)) 03189: doSolve(15, 0x8000ll, puzzle | 0x400400c004000ll, 03190: partsUsed | 0x40l); 03191: if(!(puzzle & 0x400c004004000ll)) 03192: doSolve(15, 0x8000ll, puzzle | 0x400c004004000ll, 03193: partsUsed | 0x40l); 03194: } 03195: piece7at14: 03196: if (partsUsed & 0x80l) goto piece8at14; 03197: if(!(puzzle & 0xc00800c000ll)) 03198: doSolve(15, 0x8000ll, puzzle | 0xc00800c000ll, 03199: partsUsed | 0x80l); 03200: if(!(puzzle & 0xc00400c000ll)) 03201: doSolve(15, 0x8000ll, puzzle | 0xc00400c000ll, 03202: partsUsed | 0x80l); 03203: piece8at14: 03204: if (partsUsed & 0x100l) goto piece9at14; 03205: if(!(puzzle & 0x5804000ll)) 03206: doSolve(15, 0x8000ll, puzzle | 0x5804000ll, 03207: partsUsed | 0x100l); 03208: if(!(puzzle & 0x6404000ll)) 03209: doSolve(15, 0x8000ll, puzzle | 0x6404000ll, 03210: partsUsed | 0x100l); 03211: if(!(puzzle & 0x900c000ll)) 03212: doSolve(15, 0x8000ll, puzzle | 0x900c000ll, 03213: partsUsed | 0x100l); 03214: piece9at14: 03215: if (partsUsed & 0x200l) goto piece10at14; 03216: if (!(puzzle & 0x4004004000ll)) { 03217: if(!(puzzle & 0x400600c000ll)) 03218: doSolve(15, 0x8000ll, puzzle | 0x400600c000ll, 03219: partsUsed | 0x200l); 03220: if(!(puzzle & 0xc006004000ll)) 03221: doSolve(15, 0x8000ll, puzzle | 0xc006004000ll, 03222: partsUsed | 0x200l); 03223: if(!(puzzle & 0x600c004000ll)) 03224: doSolve(15, 0x8000ll, puzzle | 0x600c004000ll, 03225: partsUsed | 0x200l); 03226: } 03227: if(!(puzzle & 0x804904000ll)) 03228: doSolve(15, 0x8000ll, puzzle | 0x804904000ll, 03229: partsUsed | 0x200l); 03230: if(!(puzzle & 0x200e004000ll)) 03231: doSolve(15, 0x8000ll, puzzle | 0x200e004000ll, 03232: partsUsed | 0x200l); 03233: if(!(puzzle & 0x800e004000ll)) 03234: doSolve(15, 0x8000ll, puzzle | 0x800e004000ll, 03235: partsUsed | 0x200l); 03236: piece10at14: 03237: if (partsUsed & 0x400l) goto piece11at14; 03238: if (!(puzzle & 0x4004004000ll)) { 03239: if(!(puzzle & 0x4804804000ll)) 03240: doSolve(15, 0x8000ll, puzzle | 0x4804804000ll, 03241: partsUsed | 0x400l); 03242: if(!(puzzle & 0x6006004000ll)) 03243: doSolve(15, 0x8000ll, puzzle | 0x6006004000ll, 03244: partsUsed | 0x400l); 03245: if(!(puzzle & 0x400c00c000ll)) 03246: doSolve(15, 0x8000ll, puzzle | 0x400c00c000ll, 03247: partsUsed | 0x400l); 03248: if(!(puzzle & 0xc00c004000ll)) 03249: doSolve(15, 0x8000ll, puzzle | 0xc00c004000ll, 03250: partsUsed | 0x400l); 03251: } 03252: if(!(puzzle & 0xe00c000ll)) 03253: doSolve(15, 0x8000ll, puzzle | 0xe00c000ll, 03254: partsUsed | 0x400l); 03255: if(!(puzzle & 0x800c00c000ll)) 03256: doSolve(15, 0x8000ll, puzzle | 0x800c00c000ll, 03257: partsUsed | 0x400l); 03258: piece11at14: 03259: if (partsUsed & 0x800l) goto piece12at14; 03260: if (!(puzzle & 0x4804000ll)) { 03261: if(!(puzzle & 0x6c04000ll)) 03262: doSolve(15, 0x8000ll, puzzle | 0x6c04000ll, 03263: partsUsed | 0x800l); 03264: if(!(puzzle & 0xd804000ll)) 03265: doSolve(15, 0x8000ll, puzzle | 0xd804000ll, 03266: partsUsed | 0x800l); 03267: if(!(puzzle & 0xc80c000ll)) 03268: doSolve(15, 0x8000ll, puzzle | 0xc80c000ll, 03269: partsUsed | 0x800l); 03270: } 03271: if(!(puzzle & 0xd00c000ll)) 03272: doSolve(15, 0x8000ll, puzzle | 0xd00c000ll, 03273: partsUsed | 0x800l); 03274: piece12at14: 03275: break; 03276: case 15: 03277: if (partsUsed & 0x2l) goto piece2at15; 03278: if(!(puzzle & 0x1209008000ll)) 03279: doSolve(16, 0x10000ll, puzzle | 0x1209008000ll, 03280: partsUsed | 0x2l); 03281: if(!(puzzle & 0x600c008000ll)) 03282: doSolve(16, 0x10000ll, puzzle | 0x600c008000ll, 03283: partsUsed | 0x2l); 03284: piece2at15: 03285: if (partsUsed & 0x4l) goto piece3at15; 03286: if(!(puzzle & 0x8009208000ll)) 03287: doSolve(16, 0x10000ll, puzzle | 0x8009208000ll, 03288: partsUsed | 0x4l); 03289: if(!(puzzle & 0x800e008000ll)) 03290: doSolve(16, 0x10000ll, puzzle | 0x800e008000ll, 03291: partsUsed | 0x4l); 03292: piece3at15: 03293: if (partsUsed & 0x8l) goto piece4at15; 03294: if(!(puzzle & 0x209208000ll)) 03295: doSolve(16, 0x10000ll, puzzle | 0x209208000ll, 03296: partsUsed | 0x8l); 03297: if(!(puzzle & 0x200e008000ll)) 03298: doSolve(16, 0x10000ll, puzzle | 0x200e008000ll, 03299: partsUsed | 0x8l); 03300: piece4at15: 03301: if (partsUsed & 0x10l) goto piece5at15; 03302: if(!(puzzle & 0x9008009008000ll)) 03303: doSolve(16, 0x10000ll, puzzle | 0x9008009008000ll, 03304: partsUsed | 0x10l); 03305: if(!(puzzle & 0xc00800c008000ll)) 03306: doSolve(16, 0x10000ll, puzzle | 0xc00800c008000ll, 03307: partsUsed | 0x10l); 03308: piece5at15: 03309: if (partsUsed & 0x20l) goto piece6at15; 03310: if(!(puzzle & 0x9248000ll)) 03311: doSolve(16, 0x10000ll, puzzle | 0x9248000ll, 03312: partsUsed | 0x20l); 03313: if(!(puzzle & 0x9008008008000ll)) 03314: doSolve(16, 0x10000ll, puzzle | 0x9008008008000ll, 03315: partsUsed | 0x20l); 03316: if(!(puzzle & 0xc008008008000ll)) 03317: doSolve(16, 0x10000ll, puzzle | 0xc008008008000ll, 03318: partsUsed | 0x20l); 03319: piece6at15: 03320: if (partsUsed & 0x40l) goto piece7at15; 03321: if (!(puzzle & 0x8008008008000ll)) { 03322: if(!(puzzle & 0x8009008008000ll)) 03323: doSolve(16, 0x10000ll, puzzle | 0x8009008008000ll, 03324: partsUsed | 0x40l); 03325: if(!(puzzle & 0x8008009008000ll)) 03326: doSolve(16, 0x10000ll, puzzle | 0x8008009008000ll, 03327: partsUsed | 0x40l); 03328: if(!(puzzle & 0x800800c008000ll)) 03329: doSolve(16, 0x10000ll, puzzle | 0x800800c008000ll, 03330: partsUsed | 0x40l); 03331: if(!(puzzle & 0x800c008008000ll)) 03332: doSolve(16, 0x10000ll, puzzle | 0x800c008008000ll, 03333: partsUsed | 0x40l); 03334: } 03335: piece7at15: 03336: if (partsUsed & 0x100l) goto piece9at15; 03337: if(!(puzzle & 0xc808000ll)) 03338: doSolve(16, 0x10000ll, puzzle | 0xc808000ll, 03339: partsUsed | 0x100l); 03340: piece9at15: 03341: if (partsUsed & 0x200l) goto piece10at15; 03342: if(!(puzzle & 0x1009208000ll)) 03343: doSolve(16, 0x10000ll, puzzle | 0x1009208000ll, 03344: partsUsed | 0x200l); 03345: if(!(puzzle & 0x400e008000ll)) 03346: doSolve(16, 0x10000ll, puzzle | 0x400e008000ll, 03347: partsUsed | 0x200l); 03348: piece10at15: 03349: if (partsUsed & 0x400l) goto piece11at15; 03350: if(!(puzzle & 0x9009008000ll)) 03351: doSolve(16, 0x10000ll, puzzle | 0x9009008000ll, 03352: partsUsed | 0x400l); 03353: if(!(puzzle & 0xc00c008000ll)) 03354: doSolve(16, 0x10000ll, puzzle | 0xc00c008000ll, 03355: partsUsed | 0x400l); 03356: piece11at15: 03357: if (partsUsed & 0x800l) goto piece12at15; 03358: if(!(puzzle & 0xd808000ll)) 03359: doSolve(16, 0x10000ll, puzzle | 0xd808000ll, 03360: partsUsed | 0x800l); 03361: piece12at15: 03362: break; 03363: case 16: 03364: if (partsUsed & 0x2l) goto piece2at16; 03365: if(!(puzzle & 0x480090010000ll)) 03366: doSolve(17, 0x20000ll, puzzle | 0x480090010000ll, 03367: partsUsed | 0x2l); 03368: if(!(puzzle & 0x400480090000ll)) 03369: doSolve(17, 0x20000ll, puzzle | 0x400480090000ll, 03370: partsUsed | 0x2l); 03371: if(!(puzzle & 0x1330000ll)) 03372: doSolve(17, 0x20000ll, puzzle | 0x1330000ll, 03373: partsUsed | 0x2l); 03374: if(!(puzzle & 0x1990000ll)) 03375: doSolve(17, 0x20000ll, puzzle | 0x1990000ll, 03376: partsUsed | 0x2l); 03377: if(!(puzzle & 0x40060030000ll)) 03378: doSolve(17, 0x20000ll, puzzle | 0x40060030000ll, 03379: partsUsed | 0x2l); 03380: if(!(puzzle & 0x60030010000ll)) 03381: doSolve(17, 0x20000ll, puzzle | 0x60030010000ll, 03382: partsUsed | 0x2l); 03383: piece2at16: 03384: if (partsUsed & 0x4l) goto piece3at16; 03385: if(!(puzzle & 0x10490010000ll)) 03386: doSolve(17, 0x20000ll, puzzle | 0x10490010000ll, 03387: partsUsed | 0x4l); 03388: if(!(puzzle & 0x10070010000ll)) 03389: doSolve(17, 0x20000ll, puzzle | 0x10070010000ll, 03390: partsUsed | 0x4l); 03391: if(!(puzzle & 0x80080490000ll)) 03392: doSolve(17, 0x20000ll, puzzle | 0x80080490000ll, 03393: partsUsed | 0x4l); 03394: if(!(puzzle & 0x790000ll)) 03395: doSolve(17, 0x20000ll, puzzle | 0x790000ll, 03396: partsUsed | 0x4l); 03397: if(!(puzzle & 0x970000ll)) 03398: doSolve(17, 0x20000ll, puzzle | 0x970000ll, 03399: partsUsed | 0x4l); 03400: if(!(puzzle & 0x20020070000ll)) 03401: doSolve(17, 0x20000ll, puzzle | 0x20020070000ll, 03402: partsUsed | 0x4l); 03403: piece3at16: 03404: if (partsUsed & 0x8l) goto piece4at16; 03405: if(!(puzzle & 0x400490010000ll)) 03406: doSolve(17, 0x20000ll, puzzle | 0x400490010000ll, 03407: partsUsed | 0x8l); 03408: if(!(puzzle & 0x480080090000ll)) 03409: doSolve(17, 0x20000ll, puzzle | 0x480080090000ll, 03410: partsUsed | 0x8l); 03411: if(!(puzzle & 0x1930000ll)) 03412: doSolve(17, 0x20000ll, puzzle | 0x1930000ll, 03413: partsUsed | 0x8l); 03414: if(!(puzzle & 0x1390000ll)) 03415: doSolve(17, 0x20000ll, puzzle | 0x1390000ll, 03416: partsUsed | 0x8l); 03417: if(!(puzzle & 0x40070010000ll)) 03418: doSolve(17, 0x20000ll, puzzle | 0x40070010000ll, 03419: partsUsed | 0x8l); 03420: if(!(puzzle & 0x60020030000ll)) 03421: doSolve(17, 0x20000ll, puzzle | 0x60020030000ll, 03422: partsUsed | 0x8l); 03423: piece4at16: 03424: if (partsUsed & 0x10l) goto piece5at16; 03425: if (!(puzzle & 0x2490000ll)) { 03426: if(!(puzzle & 0x6590000ll)) 03427: doSolve(17, 0x20000ll, puzzle | 0x6590000ll, 03428: partsUsed | 0x10l); 03429: if(!(puzzle & 0x2082490000ll)) 03430: doSolve(17, 0x20000ll, puzzle | 0x2082490000ll, 03431: partsUsed | 0x10l); 03432: if(!(puzzle & 0x2cb0000ll)) 03433: doSolve(17, 0x20000ll, puzzle | 0x2cb0000ll, 03434: partsUsed | 0x10l); 03435: } 03436: if(!(puzzle & 0x90010090010000ll)) 03437: doSolve(17, 0x20000ll, puzzle | 0x90010090010000ll, 03438: partsUsed | 0x10l); 03439: if(!(puzzle & 0x80090080090000ll)) 03440: doSolve(17, 0x20000ll, puzzle | 0x80090080090000ll, 03441: partsUsed | 0x10l); 03442: if(!(puzzle & 0x412490000ll)) 03443: doSolve(17, 0x20000ll, puzzle | 0x412490000ll, 03444: partsUsed | 0x10l); 03445: if(!(puzzle & 0x10090010090000ll)) 03446: doSolve(17, 0x20000ll, puzzle | 0x10090010090000ll, 03447: partsUsed | 0x10l); 03448: if(!(puzzle & 0x4d30000ll)) 03449: doSolve(17, 0x20000ll, puzzle | 0x4d30000ll, 03450: partsUsed | 0x10l); 03451: if(!(puzzle & 0x2490410000ll)) 03452: doSolve(17, 0x20000ll, puzzle | 0x2490410000ll, 03453: partsUsed | 0x10l); 03454: if(!(puzzle & 0x30010030010000ll)) 03455: doSolve(17, 0x20000ll, puzzle | 0x30010030010000ll, 03456: partsUsed | 0x10l); 03457: if(!(puzzle & 0x10030010030000ll)) 03458: doSolve(17, 0x20000ll, puzzle | 0x10030010030000ll, 03459: partsUsed | 0x10l); 03460: if(!(puzzle & 0x20030020030000ll)) 03461: doSolve(17, 0x20000ll, puzzle | 0x20030020030000ll, 03462: partsUsed | 0x10l); 03463: piece5at16: 03464: if (partsUsed & 0x20l) goto piece6at16; 03465: if (!(puzzle & 0x10010010010000ll)) { 03466: if(!(puzzle & 0x10010010090000ll)) 03467: doSolve(17, 0x20000ll, puzzle | 0x10010010090000ll, 03468: partsUsed | 0x20l); 03469: if(!(puzzle & 0x90010010010000ll)) 03470: doSolve(17, 0x20000ll, puzzle | 0x90010010010000ll, 03471: partsUsed | 0x20l); 03472: if(!(puzzle & 0x10010010030000ll)) 03473: doSolve(17, 0x20000ll, puzzle | 0x10010010030000ll, 03474: partsUsed | 0x20l); 03475: if(!(puzzle & 0x30010010010000ll)) 03476: doSolve(17, 0x20000ll, puzzle | 0x30010010010000ll, 03477: partsUsed | 0x20l); 03478: } 03479: if (!(puzzle & 0x2490000ll)) { 03480: if(!(puzzle & 0x2002490000ll)) 03481: doSolve(17, 0x20000ll, puzzle | 0x2002490000ll, 03482: partsUsed | 0x20l); 03483: if(!(puzzle & 0x24b0000ll)) 03484: doSolve(17, 0x20000ll, puzzle | 0x24b0000ll, 03485: partsUsed | 0x20l); 03486: if(!(puzzle & 0x12490000ll)) 03487: doSolve(17, 0x20000ll, puzzle | 0x12490000ll, 03488: partsUsed | 0x20l); 03489: if(!(puzzle & 0x6490000ll)) 03490: doSolve(17, 0x20000ll, puzzle | 0x6490000ll, 03491: partsUsed | 0x20l); 03492: } 03493: if(!(puzzle & 0x2490010000ll)) 03494: doSolve(17, 0x20000ll, puzzle | 0x2490010000ll, 03495: partsUsed | 0x20l); 03496: if(!(puzzle & 0x4930000ll)) 03497: doSolve(17, 0x20000ll, puzzle | 0x4930000ll, 03498: partsUsed | 0x20l); 03499: if(!(puzzle & 0x80080080090000ll)) 03500: doSolve(17, 0x20000ll, puzzle | 0x80080080090000ll, 03501: partsUsed | 0x20l); 03502: if(!(puzzle & 0x20020020030000ll)) 03503: doSolve(17, 0x20000ll, puzzle | 0x20020020030000ll, 03504: partsUsed | 0x20l); 03505: piece6at16: 03506: if (partsUsed & 0x40l) goto piece7at16; 03507: if (!(puzzle & 0x10010010010000ll)) { 03508: if(!(puzzle & 0x10010090010000ll)) 03509: doSolve(17, 0x20000ll, puzzle | 0x10010090010000ll, 03510: partsUsed | 0x40l); 03511: if(!(puzzle & 0x10090010010000ll)) 03512: doSolve(17, 0x20000ll, puzzle | 0x10090010010000ll, 03513: partsUsed | 0x40l); 03514: if(!(puzzle & 0x10010030010000ll)) 03515: doSolve(17, 0x20000ll, puzzle | 0x10010030010000ll, 03516: partsUsed | 0x40l); 03517: if(!(puzzle & 0x10030010010000ll)) 03518: doSolve(17, 0x20000ll, puzzle | 0x10030010010000ll, 03519: partsUsed | 0x40l); 03520: } 03521: if (!(puzzle & 0x2490000ll)) { 03522: if(!(puzzle & 0x402490000ll)) 03523: doSolve(17, 0x20000ll, puzzle | 0x402490000ll, 03524: partsUsed | 0x40l); 03525: if(!(puzzle & 0x2590000ll)) 03526: doSolve(17, 0x20000ll, puzzle | 0x2590000ll, 03527: partsUsed | 0x40l); 03528: if(!(puzzle & 0x82490000ll)) 03529: doSolve(17, 0x20000ll, puzzle | 0x82490000ll, 03530: partsUsed | 0x40l); 03531: if(!(puzzle & 0x2c90000ll)) 03532: doSolve(17, 0x20000ll, puzzle | 0x2c90000ll, 03533: partsUsed | 0x40l); 03534: } 03535: piece7at16: 03536: if (partsUsed & 0x80l) goto piece8at16; 03537: if(!(puzzle & 0x90010090000ll)) 03538: doSolve(17, 0x20000ll, puzzle | 0x90010090000ll, 03539: partsUsed | 0x80l); 03540: if(!(puzzle & 0x90080090000ll)) 03541: doSolve(17, 0x20000ll, puzzle | 0x90080090000ll, 03542: partsUsed | 0x80l); 03543: if(!(puzzle & 0x490410000ll)) 03544: doSolve(17, 0x20000ll, puzzle | 0x490410000ll, 03545: partsUsed | 0x80l); 03546: if(!(puzzle & 0x410490000ll)) 03547: doSolve(17, 0x20000ll, puzzle | 0x410490000ll, 03548: partsUsed | 0x80l); 03549: if(!(puzzle & 0x2f0000ll)) 03550: doSolve(17, 0x20000ll, puzzle | 0x2f0000ll, 03551: partsUsed | 0x80l); 03552: if(!(puzzle & 0xcb0000ll)) 03553: doSolve(17, 0x20000ll, puzzle | 0xcb0000ll, 03554: partsUsed | 0x80l); 03555: if(!(puzzle & 0xd30000ll)) 03556: doSolve(17, 0x20000ll, puzzle | 0xd30000ll, 03557: partsUsed | 0x80l); 03558: if(!(puzzle & 0x3d0000ll)) 03559: doSolve(17, 0x20000ll, puzzle | 0x3d0000ll, 03560: partsUsed | 0x80l); 03561: if(!(puzzle & 0x30020030000ll)) 03562: doSolve(17, 0x20000ll, puzzle | 0x30020030000ll, 03563: partsUsed | 0x80l); 03564: if(!(puzzle & 0x30010030000ll)) 03565: doSolve(17, 0x20000ll, puzzle | 0x30010030000ll, 03566: partsUsed | 0x80l); 03567: if(!(puzzle & 0x70050000ll)) 03568: doSolve(17, 0x20000ll, puzzle | 0x70050000ll, 03569: partsUsed | 0x80l); 03570: if(!(puzzle & 0x50070000ll)) 03571: doSolve(17, 0x20000ll, puzzle | 0x50070000ll, 03572: partsUsed | 0x80l); 03573: piece8at16: 03574: if (partsUsed & 0x100l) goto piece9at16; 03575: if(!(puzzle & 0x100130000ll)) 03576: doSolve(17, 0x20000ll, puzzle | 0x100130000ll, 03577: partsUsed | 0x100l); 03578: if(!(puzzle & 0x130010000ll)) 03579: doSolve(17, 0x20000ll, puzzle | 0x130010000ll, 03580: partsUsed | 0x100l); 03581: if(!(puzzle & 0x200b0000ll)) 03582: doSolve(17, 0x20000ll, puzzle | 0x200b0000ll, 03583: partsUsed | 0x100l); 03584: if(!(puzzle & 0x90030000ll)) 03585: doSolve(17, 0x20000ll, puzzle | 0x90030000ll, 03586: partsUsed | 0x100l); 03587: if(!(puzzle & 0x180090000ll)) 03588: doSolve(17, 0x20000ll, puzzle | 0x180090000ll, 03589: partsUsed | 0x100l); 03590: if(!(puzzle & 0x10190000ll)) 03591: doSolve(17, 0x20000ll, puzzle | 0x10190000ll, 03592: partsUsed | 0x100l); 03593: piece9at16: 03594: if (partsUsed & 0x200l) goto piece10at16; 03595: if(!(puzzle & 0x80490010000ll)) 03596: doSolve(17, 0x20000ll, puzzle | 0x80490010000ll, 03597: partsUsed | 0x200l); 03598: if(!(puzzle & 0x80480090000ll)) 03599: doSolve(17, 0x20000ll, puzzle | 0x80480090000ll, 03600: partsUsed | 0x200l); 03601: if(!(puzzle & 0xb30000ll)) 03602: doSolve(17, 0x20000ll, puzzle | 0xb30000ll, 03603: partsUsed | 0x200l); 03604: if(!(puzzle & 0xb90000ll)) 03605: doSolve(17, 0x20000ll, puzzle | 0xb90000ll, 03606: partsUsed | 0x200l); 03607: if(!(puzzle & 0x20060030000ll)) 03608: doSolve(17, 0x20000ll, puzzle | 0x20060030000ll, 03609: partsUsed | 0x200l); 03610: if(!(puzzle & 0x20070010000ll)) 03611: doSolve(17, 0x20000ll, puzzle | 0x20070010000ll, 03612: partsUsed | 0x200l); 03613: piece10at16: 03614: if (partsUsed & 0x400l) goto piece11at16; 03615: if (!(puzzle & 0x80090000ll)) { 03616: if(!(puzzle & 0x10090090000ll)) 03617: doSolve(17, 0x20000ll, puzzle | 0x10090090000ll, 03618: partsUsed | 0x400l); 03619: if(!(puzzle & 0x490090000ll)) 03620: doSolve(17, 0x20000ll, puzzle | 0x490090000ll, 03621: partsUsed | 0x400l); 03622: if(!(puzzle & 0x480490000ll)) 03623: doSolve(17, 0x20000ll, puzzle | 0x480490000ll, 03624: partsUsed | 0x400l); 03625: if(!(puzzle & 0x90490000ll)) 03626: doSolve(17, 0x20000ll, puzzle | 0x90490000ll, 03627: partsUsed | 0x400l); 03628: if(!(puzzle & 0x80090090000ll)) 03629: doSolve(17, 0x20000ll, puzzle | 0x80090090000ll, 03630: partsUsed | 0x400l); 03631: } 03632: if (!(puzzle & 0x130000ll)) { 03633: if(!(puzzle & 0x370000ll)) 03634: doSolve(17, 0x20000ll, puzzle | 0x370000ll, 03635: partsUsed | 0x400l); 03636: if(!(puzzle & 0x1f0000ll)) 03637: doSolve(17, 0x20000ll, puzzle | 0x1f0000ll, 03638: partsUsed | 0x400l); 03639: if(!(puzzle & 0x5b0000ll)) 03640: doSolve(17, 0x20000ll, puzzle | 0x5b0000ll, 03641: partsUsed | 0x400l); 03642: if(!(puzzle & 0x9b0000ll)) 03643: doSolve(17, 0x20000ll, puzzle | 0x9b0000ll, 03644: partsUsed | 0x400l); 03645: if(!(puzzle & 0x3b0000ll)) 03646: doSolve(17, 0x20000ll, puzzle | 0x3b0000ll, 03647: partsUsed | 0x400l); 03648: } 03649: if (!(puzzle & 0x10010010000ll)) { 03650: if(!(puzzle & 0x90090010000ll)) 03651: doSolve(17, 0x20000ll, puzzle | 0x90090010000ll, 03652: partsUsed | 0x400l); 03653: if(!(puzzle & 0x10030030000ll)) 03654: doSolve(17, 0x20000ll, puzzle | 0x10030030000ll, 03655: partsUsed | 0x400l); 03656: if(!(puzzle & 0x30030010000ll)) 03657: doSolve(17, 0x20000ll, puzzle | 0x30030010000ll, 03658: partsUsed | 0x400l); 03659: } 03660: if (!(puzzle & 0x20030000ll)) { 03661: if(!(puzzle & 0x20030030000ll)) 03662: doSolve(17, 0x20000ll, puzzle | 0x20030030000ll, 03663: partsUsed | 0x400l); 03664: if(!(puzzle & 0x70030000ll)) 03665: doSolve(17, 0x20000ll, puzzle | 0x70030000ll, 03666: partsUsed | 0x400l); 03667: if(!(puzzle & 0x30070000ll)) 03668: doSolve(17, 0x20000ll, puzzle | 0x30070000ll, 03669: partsUsed | 0x400l); 03670: if(!(puzzle & 0x60070000ll)) 03671: doSolve(17, 0x20000ll, puzzle | 0x60070000ll, 03672: partsUsed | 0x400l); 03673: } 03674: if(!(puzzle & 0xd90000ll)) 03675: doSolve(17, 0x20000ll, puzzle | 0xd90000ll, 03676: partsUsed | 0x400l); 03677: piece11at16: 03678: if (partsUsed & 0x800l) goto piece12at16; 03679: if (!(puzzle & 0x10030000ll)) { 03680: if(!(puzzle & 0x101b0000ll)) 03681: doSolve(17, 0x20000ll, puzzle | 0x101b0000ll, 03682: partsUsed | 0x800l); 03683: if(!(puzzle & 0xb0030000ll)) 03684: doSolve(17, 0x20000ll, puzzle | 0xb0030000ll, 03685: partsUsed | 0x800l); 03686: if(!(puzzle & 0x300b0000ll)) 03687: doSolve(17, 0x20000ll, puzzle | 0x300b0000ll, 03688: partsUsed | 0x800l); 03689: if(!(puzzle & 0x30130000ll)) 03690: doSolve(17, 0x20000ll, puzzle | 0x30130000ll, 03691: partsUsed | 0x800l); 03692: if(!(puzzle & 0x130030000ll)) 03693: doSolve(17, 0x20000ll, puzzle | 0x130030000ll, 03694: partsUsed | 0x800l); 03695: if(!(puzzle & 0x900b0000ll)) 03696: doSolve(17, 0x20000ll, puzzle | 0x900b0000ll, 03697: partsUsed | 0x800l); 03698: } 03699: if (!(puzzle & 0x100110000ll)) { 03700: if(!(puzzle & 0x180190000ll)) 03701: doSolve(17, 0x20000ll, puzzle | 0x180190000ll, 03702: partsUsed | 0x800l); 03703: if(!(puzzle & 0x120130000ll)) 03704: doSolve(17, 0x20000ll, puzzle | 0x120130000ll, 03705: partsUsed | 0x800l); 03706: if(!(puzzle & 0x1001b0000ll)) 03707: doSolve(17, 0x20000ll, puzzle | 0x1001b0000ll, 03708: partsUsed | 0x800l); 03709: } 03710: if (!(puzzle & 0x80090000ll)) { 03711: if(!(puzzle & 0xb0090000ll)) 03712: doSolve(17, 0x20000ll, puzzle | 0xb0090000ll, 03713: partsUsed | 0x800l); 03714: if(!(puzzle & 0x90190000ll)) 03715: doSolve(17, 0x20000ll, puzzle | 0x90190000ll, 03716: partsUsed | 0x800l); 03717: if(!(puzzle & 0x801b0000ll)) 03718: doSolve(17, 0x20000ll, puzzle | 0x801b0000ll, 03719: partsUsed | 0x800l); 03720: if(!(puzzle & 0x190090000ll)) 03721: doSolve(17, 0x20000ll, puzzle | 0x190090000ll, 03722: partsUsed | 0x800l); 03723: } 03724: if(!(puzzle & 0x201b0000ll)) 03725: doSolve(17, 0x20000ll, puzzle | 0x201b0000ll, 03726: partsUsed | 0x800l); 03727: if(!(puzzle & 0x1b0010000ll)) 03728: doSolve(17, 0x20000ll, puzzle | 0x1b0010000ll, 03729: partsUsed | 0x800l); 03730: piece12at16: 03731: break; 03732: case 17: 03733: if (partsUsed & 0x2l) goto piece2at17; 03734: if(!(puzzle & 0x5e0000ll)) 03735: doSolve(18, 0x40000ll, puzzle | 0x5e0000ll, 03736: partsUsed | 0x2l); 03737: if(!(puzzle & 0x10030060000ll)) 03738: doSolve(18, 0x40000ll, puzzle | 0x10030060000ll, 03739: partsUsed | 0x2l); 03740: if(!(puzzle & 0x900120020000ll)) 03741: doSolve(18, 0x40000ll, puzzle | 0x900120020000ll, 03742: partsUsed | 0x2l); 03743: if(!(puzzle & 0x800900120000ll)) 03744: doSolve(18, 0x40000ll, puzzle | 0x800900120000ll, 03745: partsUsed | 0x2l); 03746: piece2at17: 03747: if (partsUsed & 0x4l) goto piece3at17; 03748: if(!(puzzle & 0x1d20000ll)) 03749: doSolve(18, 0x40000ll, puzzle | 0x1d20000ll, 03750: partsUsed | 0x4l); 03751: if(!(puzzle & 0x100100920000ll)) 03752: doSolve(18, 0x40000ll, puzzle | 0x100100920000ll, 03753: partsUsed | 0x4l); 03754: if(!(puzzle & 0x70020020000ll)) 03755: doSolve(18, 0x40000ll, puzzle | 0x70020020000ll, 03756: partsUsed | 0x4l); 03757: if(!(puzzle & 0x20920020000ll)) 03758: doSolve(18, 0x40000ll, puzzle | 0x20920020000ll, 03759: partsUsed | 0x4l); 03760: piece3at17: 03761: if (partsUsed & 0x8l) goto piece4at17; 03762: if(!(puzzle & 0xd60000ll)) 03763: doSolve(18, 0x40000ll, puzzle | 0xd60000ll, 03764: partsUsed | 0x8l); 03765: if(!(puzzle & 0x30020060000ll)) 03766: doSolve(18, 0x40000ll, puzzle | 0x30020060000ll, 03767: partsUsed | 0x8l); 03768: if(!(puzzle & 0x800920020000ll)) 03769: doSolve(18, 0x40000ll, puzzle | 0x800920020000ll, 03770: partsUsed | 0x8l); 03771: if(!(puzzle & 0x900100120000ll)) 03772: doSolve(18, 0x40000ll, puzzle | 0x900100120000ll, 03773: partsUsed | 0x8l); 03774: piece4at17: 03775: if (partsUsed & 0x10l) goto piece5at17; 03776: if (!(puzzle & 0x4920000ll)) { 03777: if(!(puzzle & 0x69a0000ll)) 03778: doSolve(18, 0x40000ll, puzzle | 0x69a0000ll, 03779: partsUsed | 0x10l); 03780: if(!(puzzle & 0x824920000ll)) 03781: doSolve(18, 0x40000ll, puzzle | 0x824920000ll, 03782: partsUsed | 0x10l); 03783: if(!(puzzle & 0xcb20000ll)) 03784: doSolve(18, 0x40000ll, puzzle | 0xcb20000ll, 03785: partsUsed | 0x10l); 03786: if(!(puzzle & 0x4104920000ll)) 03787: doSolve(18, 0x40000ll, puzzle | 0x4104920000ll, 03788: partsUsed | 0x10l); 03789: if(!(puzzle & 0x5960000ll)) 03790: doSolve(18, 0x40000ll, puzzle | 0x5960000ll, 03791: partsUsed | 0x10l); 03792: } 03793: if (!(puzzle & 0x20020020020000ll)) { 03794: if(!(puzzle & 0x30020030020000ll)) 03795: doSolve(18, 0x40000ll, puzzle | 0x30020030020000ll, 03796: partsUsed | 0x10l); 03797: if(!(puzzle & 0x120020120020000ll)) 03798: doSolve(18, 0x40000ll, puzzle | 0x120020120020000ll, 03799: partsUsed | 0x10l); 03800: if(!(puzzle & 0x20120020120000ll)) 03801: doSolve(18, 0x40000ll, puzzle | 0x20120020120000ll, 03802: partsUsed | 0x10l); 03803: if(!(puzzle & 0x60020060020000ll)) 03804: doSolve(18, 0x40000ll, puzzle | 0x60020060020000ll, 03805: partsUsed | 0x10l); 03806: if(!(puzzle & 0x20060020060000ll)) 03807: doSolve(18, 0x40000ll, puzzle | 0x20060020060000ll, 03808: partsUsed | 0x10l); 03809: } 03810: if(!(puzzle & 0x100120100120000ll)) 03811: doSolve(18, 0x40000ll, puzzle | 0x100120100120000ll, 03812: partsUsed | 0x10l); 03813: if(!(puzzle & 0x9a60000ll)) 03814: doSolve(18, 0x40000ll, puzzle | 0x9a60000ll, 03815: partsUsed | 0x10l); 03816: if(!(puzzle & 0x4920820000ll)) 03817: doSolve(18, 0x40000ll, puzzle | 0x4920820000ll, 03818: partsUsed | 0x10l); 03819: if(!(puzzle & 0x40060040060000ll)) 03820: doSolve(18, 0x40000ll, puzzle | 0x40060040060000ll, 03821: partsUsed | 0x10l); 03822: piece5at17: 03823: if (partsUsed & 0x20l) goto piece6at17; 03824: if (!(puzzle & 0x4920000ll)) { 03825: if(!(puzzle & 0x6920000ll)) 03826: doSolve(18, 0x40000ll, puzzle | 0x6920000ll, 03827: partsUsed | 0x20l); 03828: if(!(puzzle & 0x4004920000ll)) 03829: doSolve(18, 0x40000ll, puzzle | 0x4004920000ll, 03830: partsUsed | 0x20l); 03831: if(!(puzzle & 0x4960000ll)) 03832: doSolve(18, 0x40000ll, puzzle | 0x4960000ll, 03833: partsUsed | 0x20l); 03834: if(!(puzzle & 0x24920000ll)) 03835: doSolve(18, 0x40000ll, puzzle | 0x24920000ll, 03836: partsUsed | 0x20l); 03837: if(!(puzzle & 0xc920000ll)) 03838: doSolve(18, 0x40000ll, puzzle | 0xc920000ll, 03839: partsUsed | 0x20l); 03840: } 03841: if (!(puzzle & 0x20020020020000ll)) { 03842: if(!(puzzle & 0x30020020020000ll)) 03843: doSolve(18, 0x40000ll, puzzle | 0x30020020020000ll, 03844: partsUsed | 0x20l); 03845: if(!(puzzle & 0x20020020120000ll)) 03846: doSolve(18, 0x40000ll, puzzle | 0x20020020120000ll, 03847: partsUsed | 0x20l); 03848: if(!(puzzle & 0x120020020020000ll)) 03849: doSolve(18, 0x40000ll, puzzle | 0x120020020020000ll, 03850: partsUsed | 0x20l); 03851: if(!(puzzle & 0x20020020060000ll)) 03852: doSolve(18, 0x40000ll, puzzle | 0x20020020060000ll, 03853: partsUsed | 0x20l); 03854: if(!(puzzle & 0x60020020020000ll)) 03855: doSolve(18, 0x40000ll, puzzle | 0x60020020020000ll, 03856: partsUsed | 0x20l); 03857: } 03858: if(!(puzzle & 0x4920020000ll)) 03859: doSolve(18, 0x40000ll, puzzle | 0x4920020000ll, 03860: partsUsed | 0x20l); 03861: if(!(puzzle & 0x9260000ll)) 03862: doSolve(18, 0x40000ll, puzzle | 0x9260000ll, 03863: partsUsed | 0x20l); 03864: if(!(puzzle & 0x100100100120000ll)) 03865: doSolve(18, 0x40000ll, puzzle | 0x100100100120000ll, 03866: partsUsed | 0x20l); 03867: if(!(puzzle & 0x40040040060000ll)) 03868: doSolve(18, 0x40000ll, puzzle | 0x40040040060000ll, 03869: partsUsed | 0x20l); 03870: piece6at17: 03871: if (partsUsed & 0x40l) goto piece7at17; 03872: if (!(puzzle & 0x4920000ll)) { 03873: if(!(puzzle & 0x49a0000ll)) 03874: doSolve(18, 0x40000ll, puzzle | 0x49a0000ll, 03875: partsUsed | 0x40l); 03876: if(!(puzzle & 0x4d20000ll)) 03877: doSolve(18, 0x40000ll, puzzle | 0x4d20000ll, 03878: partsUsed | 0x40l); 03879: if(!(puzzle & 0x804920000ll)) 03880: doSolve(18, 0x40000ll, puzzle | 0x804920000ll, 03881: partsUsed | 0x40l); 03882: if(!(puzzle & 0x4b20000ll)) 03883: doSolve(18, 0x40000ll, puzzle | 0x4b20000ll, 03884: partsUsed | 0x40l); 03885: if(!(puzzle & 0x104920000ll)) 03886: doSolve(18, 0x40000ll, puzzle | 0x104920000ll, 03887: partsUsed | 0x40l); 03888: if(!(puzzle & 0x5920000ll)) 03889: doSolve(18, 0x40000ll, puzzle | 0x5920000ll, 03890: partsUsed | 0x40l); 03891: } 03892: if (!(puzzle & 0x20020020020000ll)) { 03893: if(!(puzzle & 0x20020030020000ll)) 03894: doSolve(18, 0x40000ll, puzzle | 0x20020030020000ll, 03895: partsUsed | 0x40l); 03896: if(!(puzzle & 0x20030020020000ll)) 03897: doSolve(18, 0x40000ll, puzzle | 0x20030020020000ll, 03898: partsUsed | 0x40l); 03899: if(!(puzzle & 0x20020120020000ll)) 03900: doSolve(18, 0x40000ll, puzzle | 0x20020120020000ll, 03901: partsUsed | 0x40l); 03902: if(!(puzzle & 0x20120020020000ll)) 03903: doSolve(18, 0x40000ll, puzzle | 0x20120020020000ll, 03904: partsUsed | 0x40l); 03905: if(!(puzzle & 0x20020060020000ll)) 03906: doSolve(18, 0x40000ll, puzzle | 0x20020060020000ll, 03907: partsUsed | 0x40l); 03908: if(!(puzzle & 0x20060020020000ll)) 03909: doSolve(18, 0x40000ll, puzzle | 0x20060020020000ll, 03910: partsUsed | 0x40l); 03911: } 03912: piece7at17: 03913: if (partsUsed & 0x80l) goto piece8at17; 03914: if(!(puzzle & 0x120020120000ll)) 03915: doSolve(18, 0x40000ll, puzzle | 0x120020120000ll, 03916: partsUsed | 0x80l); 03917: if(!(puzzle & 0x120100120000ll)) 03918: doSolve(18, 0x40000ll, puzzle | 0x120100120000ll, 03919: partsUsed | 0x80l); 03920: if(!(puzzle & 0x920820000ll)) 03921: doSolve(18, 0x40000ll, puzzle | 0x920820000ll, 03922: partsUsed | 0x80l); 03923: if(!(puzzle & 0x820920000ll)) 03924: doSolve(18, 0x40000ll, puzzle | 0x820920000ll, 03925: partsUsed | 0x80l); 03926: if(!(puzzle & 0x1960000ll)) 03927: doSolve(18, 0x40000ll, puzzle | 0x1960000ll, 03928: partsUsed | 0x80l); 03929: if(!(puzzle & 0x1a60000ll)) 03930: doSolve(18, 0x40000ll, puzzle | 0x1a60000ll, 03931: partsUsed | 0x80l); 03932: if(!(puzzle & 0x60040060000ll)) 03933: doSolve(18, 0x40000ll, puzzle | 0x60040060000ll, 03934: partsUsed | 0x80l); 03935: if(!(puzzle & 0x60020060000ll)) 03936: doSolve(18, 0x40000ll, puzzle | 0x60020060000ll, 03937: partsUsed | 0x80l); 03938: piece8at17: 03939: if (partsUsed & 0x100l) goto piece9at17; 03940: if(!(puzzle & 0x801a0000ll)) 03941: doSolve(18, 0x40000ll, puzzle | 0x801a0000ll, 03942: partsUsed | 0x100l); 03943: if(!(puzzle & 0x30120000ll)) 03944: doSolve(18, 0x40000ll, puzzle | 0x30120000ll, 03945: partsUsed | 0x100l); 03946: if(!(puzzle & 0x20320000ll)) 03947: doSolve(18, 0x40000ll, puzzle | 0x20320000ll, 03948: partsUsed | 0x100l); 03949: if(!(puzzle & 0x1a0020000ll)) 03950: doSolve(18, 0x40000ll, puzzle | 0x1a0020000ll, 03951: partsUsed | 0x100l); 03952: if(!(puzzle & 0x120060000ll)) 03953: doSolve(18, 0x40000ll, puzzle | 0x120060000ll, 03954: partsUsed | 0x100l); 03955: if(!(puzzle & 0x260020000ll)) 03956: doSolve(18, 0x40000ll, puzzle | 0x260020000ll, 03957: partsUsed | 0x100l); 03958: if(!(puzzle & 0x40160000ll)) 03959: doSolve(18, 0x40000ll, puzzle | 0x40160000ll, 03960: partsUsed | 0x100l); 03961: if(!(puzzle & 0x300120000ll)) 03962: doSolve(18, 0x40000ll, puzzle | 0x300120000ll, 03963: partsUsed | 0x100l); 03964: if(!(puzzle & 0x200260000ll)) 03965: doSolve(18, 0x40000ll, puzzle | 0x200260000ll, 03966: partsUsed | 0x100l); 03967: piece9at17: 03968: if (partsUsed & 0x200l) goto piece10at17; 03969: if (!(puzzle & 0x1a0000ll)) { 03970: if(!(puzzle & 0x13a0000ll)) 03971: doSolve(18, 0x40000ll, puzzle | 0x13a0000ll, 03972: partsUsed | 0x200l); 03973: if(!(puzzle & 0x7a0000ll)) 03974: doSolve(18, 0x40000ll, puzzle | 0x7a0000ll, 03975: partsUsed | 0x200l); 03976: if(!(puzzle & 0x9e0000ll)) 03977: doSolve(18, 0x40000ll, puzzle | 0x9e0000ll, 03978: partsUsed | 0x200l); 03979: if(!(puzzle & 0x19a0000ll)) 03980: doSolve(18, 0x40000ll, puzzle | 0x19a0000ll, 03981: partsUsed | 0x200l); 03982: } 03983: if (!(puzzle & 0x20020020000ll)) { 03984: if(!(puzzle & 0x20030060000ll)) 03985: doSolve(18, 0x40000ll, puzzle | 0x20030060000ll, 03986: partsUsed | 0x200l); 03987: if(!(puzzle & 0x60030020000ll)) 03988: doSolve(18, 0x40000ll, puzzle | 0x60030020000ll, 03989: partsUsed | 0x200l); 03990: if(!(puzzle & 0x30060020000ll)) 03991: doSolve(18, 0x40000ll, puzzle | 0x30060020000ll, 03992: partsUsed | 0x200l); 03993: } 03994: if(!(puzzle & 0xf20000ll)) 03995: doSolve(18, 0x40000ll, puzzle | 0xf20000ll, 03996: partsUsed | 0x200l); 03997: if(!(puzzle & 0x10070020000ll)) 03998: doSolve(18, 0x40000ll, puzzle | 0x10070020000ll, 03999: partsUsed | 0x200l); 04000: if(!(puzzle & 0x40070020000ll)) 04001: doSolve(18, 0x40000ll, puzzle | 0x40070020000ll, 04002: partsUsed | 0x200l); 04003: if(!(puzzle & 0x100920020000ll)) 04004: doSolve(18, 0x40000ll, puzzle | 0x100920020000ll, 04005: partsUsed | 0x200l); 04006: if(!(puzzle & 0x100900120000ll)) 04007: doSolve(18, 0x40000ll, puzzle | 0x100900120000ll, 04008: partsUsed | 0x200l); 04009: piece10at17: 04010: if (partsUsed & 0x400l) goto piece11at17; 04011: if (!(puzzle & 0x100120000ll)) { 04012: if(!(puzzle & 0x20120120000ll)) 04013: doSolve(18, 0x40000ll, puzzle | 0x20120120000ll, 04014: partsUsed | 0x400l); 04015: if(!(puzzle & 0x920120000ll)) 04016: doSolve(18, 0x40000ll, puzzle | 0x920120000ll, 04017: partsUsed | 0x400l); 04018: if(!(puzzle & 0x900920000ll)) 04019: doSolve(18, 0x40000ll, puzzle | 0x900920000ll, 04020: partsUsed | 0x400l); 04021: if(!(puzzle & 0x120920000ll)) 04022: doSolve(18, 0x40000ll, puzzle | 0x120920000ll, 04023: partsUsed | 0x400l); 04024: if(!(puzzle & 0x100120120000ll)) 04025: doSolve(18, 0x40000ll, puzzle | 0x100120120000ll, 04026: partsUsed | 0x400l); 04027: } 04028: if (!(puzzle & 0x20020020000ll)) { 04029: if(!(puzzle & 0x120120020000ll)) 04030: doSolve(18, 0x40000ll, puzzle | 0x120120020000ll, 04031: partsUsed | 0x400l); 04032: if(!(puzzle & 0x20060060000ll)) 04033: doSolve(18, 0x40000ll, puzzle | 0x20060060000ll, 04034: partsUsed | 0x400l); 04035: if(!(puzzle & 0x60060020000ll)) 04036: doSolve(18, 0x40000ll, puzzle | 0x60060020000ll, 04037: partsUsed | 0x400l); 04038: } 04039: if (!(puzzle & 0x320000ll)) { 04040: if(!(puzzle & 0xb60000ll)) 04041: doSolve(18, 0x40000ll, puzzle | 0xb60000ll, 04042: partsUsed | 0x400l); 04043: if(!(puzzle & 0x1360000ll)) 04044: doSolve(18, 0x40000ll, puzzle | 0x1360000ll, 04045: partsUsed | 0x400l); 04046: if(!(puzzle & 0x1b20000ll)) 04047: doSolve(18, 0x40000ll, puzzle | 0x1b20000ll, 04048: partsUsed | 0x400l); 04049: } 04050: if(!(puzzle & 0x3e0000ll)) 04051: doSolve(18, 0x40000ll, puzzle | 0x3e0000ll, 04052: partsUsed | 0x400l); 04053: if(!(puzzle & 0xda0000ll)) 04054: doSolve(18, 0x40000ll, puzzle | 0xda0000ll, 04055: partsUsed | 0x400l); 04056: if(!(puzzle & 0x70060000ll)) 04057: doSolve(18, 0x40000ll, puzzle | 0x70060000ll, 04058: partsUsed | 0x400l); 04059: if(!(puzzle & 0x30030020000ll)) 04060: doSolve(18, 0x40000ll, puzzle | 0x30030020000ll, 04061: partsUsed | 0x400l); 04062: if(!(puzzle & 0x40060060000ll)) 04063: doSolve(18, 0x40000ll, puzzle | 0x40060060000ll, 04064: partsUsed | 0x400l); 04065: piece11at17: 04066: if (partsUsed & 0x800l) goto piece12at17; 04067: if (!(puzzle & 0x180020000ll)) { 04068: if(!(puzzle & 0x1b0020000ll)) 04069: doSolve(18, 0x40000ll, puzzle | 0x1b0020000ll, 04070: partsUsed | 0x800l); 04071: if(!(puzzle & 0x1a0120000ll)) 04072: doSolve(18, 0x40000ll, puzzle | 0x1a0120000ll, 04073: partsUsed | 0x800l); 04074: if(!(puzzle & 0x1801a0000ll)) 04075: doSolve(18, 0x40000ll, puzzle | 0x1801a0000ll, 04076: partsUsed | 0x800l); 04077: } 04078: if (!(puzzle & 0x20120000ll)) { 04079: if(!(puzzle & 0x130120000ll)) 04080: doSolve(18, 0x40000ll, puzzle | 0x130120000ll, 04081: partsUsed | 0x800l); 04082: if(!(puzzle & 0x1201a0000ll)) 04083: doSolve(18, 0x40000ll, puzzle | 0x1201a0000ll, 04084: partsUsed | 0x800l); 04085: if(!(puzzle & 0x20360000ll)) 04086: doSolve(18, 0x40000ll, puzzle | 0x20360000ll, 04087: partsUsed | 0x800l); 04088: if(!(puzzle & 0x160120000ll)) 04089: doSolve(18, 0x40000ll, puzzle | 0x160120000ll, 04090: partsUsed | 0x800l); 04091: if(!(puzzle & 0x60160000ll)) 04092: doSolve(18, 0x40000ll, puzzle | 0x60160000ll, 04093: partsUsed | 0x800l); 04094: if(!(puzzle & 0x120320000ll)) 04095: doSolve(18, 0x40000ll, puzzle | 0x120320000ll, 04096: partsUsed | 0x800l); 04097: if(!(puzzle & 0x320120000ll)) 04098: doSolve(18, 0x40000ll, puzzle | 0x320120000ll, 04099: partsUsed | 0x800l); 04100: if(!(puzzle & 0x120160000ll)) 04101: doSolve(18, 0x40000ll, puzzle | 0x120160000ll, 04102: partsUsed | 0x800l); 04103: } 04104: if (!(puzzle & 0x40060000ll)) { 04105: if(!(puzzle & 0x160060000ll)) 04106: doSolve(18, 0x40000ll, puzzle | 0x160060000ll, 04107: partsUsed | 0x800l); 04108: if(!(puzzle & 0x240260000ll)) 04109: doSolve(18, 0x40000ll, puzzle | 0x240260000ll, 04110: partsUsed | 0x800l); 04111: if(!(puzzle & 0x60260000ll)) 04112: doSolve(18, 0x40000ll, puzzle | 0x60260000ll, 04113: partsUsed | 0x800l); 04114: if(!(puzzle & 0x260060000ll)) 04115: doSolve(18, 0x40000ll, puzzle | 0x260060000ll, 04116: partsUsed | 0x800l); 04117: if(!(puzzle & 0x40360000ll)) 04118: doSolve(18, 0x40000ll, puzzle | 0x40360000ll, 04119: partsUsed | 0x800l); 04120: } 04121: if (!(puzzle & 0x320000ll)) { 04122: if(!(puzzle & 0x300320000ll)) 04123: doSolve(18, 0x40000ll, puzzle | 0x300320000ll, 04124: partsUsed | 0x800l); 04125: if(!(puzzle & 0x200360000ll)) 04126: doSolve(18, 0x40000ll, puzzle | 0x200360000ll, 04127: partsUsed | 0x800l); 04128: if(!(puzzle & 0x100360000ll)) 04129: doSolve(18, 0x40000ll, puzzle | 0x100360000ll, 04130: partsUsed | 0x800l); 04131: } 04132: if(!(puzzle & 0x360020000ll)) 04133: doSolve(18, 0x40000ll, puzzle | 0x360020000ll, 04134: partsUsed | 0x800l); 04135: piece12at17: 04136: break; 04137: case 18: 04138: if (partsUsed & 0x2l) goto piece2at18; 04139: if(!(puzzle & 0xf40000ll)) 04140: doSolve(19, 0x80000ll, puzzle | 0xf40000ll, 04141: partsUsed | 0x2l); 04142: if(!(puzzle & 0x30060040000ll)) 04143: doSolve(19, 0x80000ll, puzzle | 0x30060040000ll, 04144: partsUsed | 0x2l); 04145: if(!(puzzle & 0x1200240040000ll)) 04146: doSolve(19, 0x80000ll, puzzle | 0x1200240040000ll, 04147: partsUsed | 0x2l); 04148: if(!(puzzle & 0x1001200240000ll)) 04149: doSolve(19, 0x80000ll, puzzle | 0x1001200240000ll, 04150: partsUsed | 0x2l); 04151: piece2at18: 04152: if (partsUsed & 0x4l) goto piece3at18; 04153: if(!(puzzle & 0x13c0000ll)) 04154: doSolve(19, 0x80000ll, puzzle | 0x13c0000ll, 04155: partsUsed | 0x4l); 04156: if(!(puzzle & 0x200201240000ll)) 04157: doSolve(19, 0x80000ll, puzzle | 0x200201240000ll, 04158: partsUsed | 0x4l); 04159: if(!(puzzle & 0x40070040000ll)) 04160: doSolve(19, 0x80000ll, puzzle | 0x40070040000ll, 04161: partsUsed | 0x4l); 04162: if(!(puzzle & 0x41240040000ll)) 04163: doSolve(19, 0x80000ll, puzzle | 0x41240040000ll, 04164: partsUsed | 0x4l); 04165: piece3at18: 04166: if (partsUsed & 0x8l) goto piece4at18; 04167: if(!(puzzle & 0x7c0000ll)) 04168: doSolve(19, 0x80000ll, puzzle | 0x7c0000ll, 04169: partsUsed | 0x8l); 04170: if(!(puzzle & 0x10070040000ll)) 04171: doSolve(19, 0x80000ll, puzzle | 0x10070040000ll, 04172: partsUsed | 0x8l); 04173: if(!(puzzle & 0x1001240040000ll)) 04174: doSolve(19, 0x80000ll, puzzle | 0x1001240040000ll, 04175: partsUsed | 0x8l); 04176: if(!(puzzle & 0x1200200240000ll)) 04177: doSolve(19, 0x80000ll, puzzle | 0x1200200240000ll, 04178: partsUsed | 0x8l); 04179: piece4at18: 04180: if (partsUsed & 0x10l) goto piece5at18; 04181: if (!(puzzle & 0x9240000ll)) { 04182: if(!(puzzle & 0xd340000ll)) 04183: doSolve(19, 0x80000ll, puzzle | 0xd340000ll, 04184: partsUsed | 0x10l); 04185: if(!(puzzle & 0x1049240000ll)) 04186: doSolve(19, 0x80000ll, puzzle | 0x1049240000ll, 04187: partsUsed | 0x10l); 04188: if(!(puzzle & 0x8209240000ll)) 04189: doSolve(19, 0x80000ll, puzzle | 0x8209240000ll, 04190: partsUsed | 0x10l); 04191: } 04192: if (!(puzzle & 0x40040040040000ll)) { 04193: if(!(puzzle & 0x60040060040000ll)) 04194: doSolve(19, 0x80000ll, puzzle | 0x60040060040000ll, 04195: partsUsed | 0x10l); 04196: if(!(puzzle & 0x240040240040000ll)) 04197: doSolve(19, 0x80000ll, puzzle | 0x240040240040000ll, 04198: partsUsed | 0x10l); 04199: if(!(puzzle & 0x40240040240000ll)) 04200: doSolve(19, 0x80000ll, puzzle | 0x40240040240000ll, 04201: partsUsed | 0x10l); 04202: } 04203: if(!(puzzle & 0x200240200240000ll)) 04204: doSolve(19, 0x80000ll, puzzle | 0x200240200240000ll, 04205: partsUsed | 0x10l); 04206: if(!(puzzle & 0x9241040000ll)) 04207: doSolve(19, 0x80000ll, puzzle | 0x9241040000ll, 04208: partsUsed | 0x10l); 04209: piece5at18: 04210: if (partsUsed & 0x20l) goto piece6at18; 04211: if (!(puzzle & 0x9240000ll)) { 04212: if(!(puzzle & 0xd240000ll)) 04213: doSolve(19, 0x80000ll, puzzle | 0xd240000ll, 04214: partsUsed | 0x20l); 04215: if(!(puzzle & 0x8009240000ll)) 04216: doSolve(19, 0x80000ll, puzzle | 0x8009240000ll, 04217: partsUsed | 0x20l); 04218: if(!(puzzle & 0x49240000ll)) 04219: doSolve(19, 0x80000ll, puzzle | 0x49240000ll, 04220: partsUsed | 0x20l); 04221: } 04222: if (!(puzzle & 0x40040040040000ll)) { 04223: if(!(puzzle & 0x60040040040000ll)) 04224: doSolve(19, 0x80000ll, puzzle | 0x60040040040000ll, 04225: partsUsed | 0x20l); 04226: if(!(puzzle & 0x40040040240000ll)) 04227: doSolve(19, 0x80000ll, puzzle | 0x40040040240000ll, 04228: partsUsed | 0x20l); 04229: if(!(puzzle & 0x240040040040000ll)) 04230: doSolve(19, 0x80000ll, puzzle | 0x240040040040000ll, 04231: partsUsed | 0x20l); 04232: } 04233: if(!(puzzle & 0x9240040000ll)) 04234: doSolve(19, 0x80000ll, puzzle | 0x9240040000ll, 04235: partsUsed | 0x20l); 04236: if(!(puzzle & 0x200200200240000ll)) 04237: doSolve(19, 0x80000ll, puzzle | 0x200200200240000ll, 04238: partsUsed | 0x20l); 04239: piece6at18: 04240: if (partsUsed & 0x40l) goto piece7at18; 04241: if (!(puzzle & 0x9240000ll)) { 04242: if(!(puzzle & 0x9340000ll)) 04243: doSolve(19, 0x80000ll, puzzle | 0x9340000ll, 04244: partsUsed | 0x40l); 04245: if(!(puzzle & 0x9a40000ll)) 04246: doSolve(19, 0x80000ll, puzzle | 0x9a40000ll, 04247: partsUsed | 0x40l); 04248: if(!(puzzle & 0x1009240000ll)) 04249: doSolve(19, 0x80000ll, puzzle | 0x1009240000ll, 04250: partsUsed | 0x40l); 04251: if(!(puzzle & 0x209240000ll)) 04252: doSolve(19, 0x80000ll, puzzle | 0x209240000ll, 04253: partsUsed | 0x40l); 04254: } 04255: if (!(puzzle & 0x40040040040000ll)) { 04256: if(!(puzzle & 0x40040060040000ll)) 04257: doSolve(19, 0x80000ll, puzzle | 0x40040060040000ll, 04258: partsUsed | 0x40l); 04259: if(!(puzzle & 0x40060040040000ll)) 04260: doSolve(19, 0x80000ll, puzzle | 0x40060040040000ll, 04261: partsUsed | 0x40l); 04262: if(!(puzzle & 0x40040240040000ll)) 04263: doSolve(19, 0x80000ll, puzzle | 0x40040240040000ll, 04264: partsUsed | 0x40l); 04265: if(!(puzzle & 0x40240040040000ll)) 04266: doSolve(19, 0x80000ll, puzzle | 0x40240040040000ll, 04267: partsUsed | 0x40l); 04268: } 04269: piece7at18: 04270: if (partsUsed & 0x80l) goto piece8at18; 04271: if(!(puzzle & 0x240040240000ll)) 04272: doSolve(19, 0x80000ll, puzzle | 0x240040240000ll, 04273: partsUsed | 0x80l); 04274: if(!(puzzle & 0x240200240000ll)) 04275: doSolve(19, 0x80000ll, puzzle | 0x240200240000ll, 04276: partsUsed | 0x80l); 04277: if(!(puzzle & 0x1241040000ll)) 04278: doSolve(19, 0x80000ll, puzzle | 0x1241040000ll, 04279: partsUsed | 0x80l); 04280: if(!(puzzle & 0x1041240000ll)) 04281: doSolve(19, 0x80000ll, puzzle | 0x1041240000ll, 04282: partsUsed | 0x80l); 04283: piece8at18: 04284: if (partsUsed & 0x100l) goto piece9at18; 04285: if(!(puzzle & 0x340040000ll)) 04286: doSolve(19, 0x80000ll, puzzle | 0x340040000ll, 04287: partsUsed | 0x100l); 04288: if(!(puzzle & 0x100340000ll)) 04289: doSolve(19, 0x80000ll, puzzle | 0x100340000ll, 04290: partsUsed | 0x100l); 04291: if(!(puzzle & 0x60240000ll)) 04292: doSolve(19, 0x80000ll, puzzle | 0x60240000ll, 04293: partsUsed | 0x100l); 04294: piece9at18: 04295: if (partsUsed & 0x200l) goto piece10at18; 04296: if(!(puzzle & 0xbc0000ll)) 04297: doSolve(19, 0x80000ll, puzzle | 0xbc0000ll, 04298: partsUsed | 0x200l); 04299: if(!(puzzle & 0x20070040000ll)) 04300: doSolve(19, 0x80000ll, puzzle | 0x20070040000ll, 04301: partsUsed | 0x200l); 04302: if(!(puzzle & 0x201240040000ll)) 04303: doSolve(19, 0x80000ll, puzzle | 0x201240040000ll, 04304: partsUsed | 0x200l); 04305: if(!(puzzle & 0x201200240000ll)) 04306: doSolve(19, 0x80000ll, puzzle | 0x201200240000ll, 04307: partsUsed | 0x200l); 04308: piece10at18: 04309: if (partsUsed & 0x400l) goto piece11at18; 04310: if (!(puzzle & 0x1240000ll)) { 04311: if(!(puzzle & 0x1b40000ll)) 04312: doSolve(19, 0x80000ll, puzzle | 0x1b40000ll, 04313: partsUsed | 0x400l); 04314: if(!(puzzle & 0x1201240000ll)) 04315: doSolve(19, 0x80000ll, puzzle | 0x1201240000ll, 04316: partsUsed | 0x400l); 04317: if(!(puzzle & 0x241240000ll)) 04318: doSolve(19, 0x80000ll, puzzle | 0x241240000ll, 04319: partsUsed | 0x400l); 04320: } 04321: if (!(puzzle & 0x40040040000ll)) { 04322: if(!(puzzle & 0x60060040000ll)) 04323: doSolve(19, 0x80000ll, puzzle | 0x60060040000ll, 04324: partsUsed | 0x400l); 04325: if(!(puzzle & 0x40240240000ll)) 04326: doSolve(19, 0x80000ll, puzzle | 0x40240240000ll, 04327: partsUsed | 0x400l); 04328: if(!(puzzle & 0x240240040000ll)) 04329: doSolve(19, 0x80000ll, puzzle | 0x240240040000ll, 04330: partsUsed | 0x400l); 04331: } 04332: if(!(puzzle & 0x1240240000ll)) 04333: doSolve(19, 0x80000ll, puzzle | 0x1240240000ll, 04334: partsUsed | 0x400l); 04335: if(!(puzzle & 0x200240240000ll)) 04336: doSolve(19, 0x80000ll, puzzle | 0x200240240000ll, 04337: partsUsed | 0x400l); 04338: piece11at18: 04339: if (partsUsed & 0x800l) goto piece12at18; 04340: if (!(puzzle & 0x300040000ll)) { 04341: if(!(puzzle & 0x360040000ll)) 04342: doSolve(19, 0x80000ll, puzzle | 0x360040000ll, 04343: partsUsed | 0x800l); 04344: if(!(puzzle & 0x340240000ll)) 04345: doSolve(19, 0x80000ll, puzzle | 0x340240000ll, 04346: partsUsed | 0x800l); 04347: if(!(puzzle & 0x300340000ll)) 04348: doSolve(19, 0x80000ll, puzzle | 0x300340000ll, 04349: partsUsed | 0x800l); 04350: } 04351: if(!(puzzle & 0x260240000ll)) 04352: doSolve(19, 0x80000ll, puzzle | 0x260240000ll, 04353: partsUsed | 0x800l); 04354: if(!(puzzle & 0x240340000ll)) 04355: doSolve(19, 0x80000ll, puzzle | 0x240340000ll, 04356: partsUsed | 0x800l); 04357: piece12at18: 04358: break; 04359: case 19: 04360: if (partsUsed & 0x2l) goto piece2at19; 04361: if(!(puzzle & 0x10090480000ll)) 04362: doSolve(20, 0x100000ll, puzzle | 0x10090480000ll, 04363: partsUsed | 0x2l); 04364: if(!(puzzle & 0x2400480080000ll)) 04365: doSolve(20, 0x100000ll, puzzle | 0x2400480080000ll, 04366: partsUsed | 0x2l); 04367: if(!(puzzle & 0x2002400480000ll)) 04368: doSolve(20, 0x100000ll, puzzle | 0x2002400480000ll, 04369: partsUsed | 0x2l); 04370: if(!(puzzle & 0x9980000ll)) 04371: doSolve(20, 0x100000ll, puzzle | 0x9980000ll, 04372: partsUsed | 0x2l); 04373: if(!(puzzle & 0xcc80000ll)) 04374: doSolve(20, 0x100000ll, puzzle | 0xcc80000ll, 04375: partsUsed | 0x2l); 04376: if(!(puzzle & 0x200300180000ll)) 04377: doSolve(20, 0x100000ll, puzzle | 0x200300180000ll, 04378: partsUsed | 0x2l); 04379: if(!(puzzle & 0x300180080000ll)) 04380: doSolve(20, 0x100000ll, puzzle | 0x300180080000ll, 04381: partsUsed | 0x2l); 04382: piece2at19: 04383: if (partsUsed & 0x4l) goto piece3at19; 04384: if (!(puzzle & 0x80080080000ll)) { 04385: if(!(puzzle & 0x490080080000ll)) 04386: doSolve(20, 0x100000ll, puzzle | 0x490080080000ll, 04387: partsUsed | 0x4l); 04388: if(!(puzzle & 0x82480080000ll)) 04389: doSolve(20, 0x100000ll, puzzle | 0x82480080000ll, 04390: partsUsed | 0x4l); 04391: if(!(puzzle & 0x80380080000ll)) 04392: doSolve(20, 0x100000ll, puzzle | 0x80380080000ll, 04393: partsUsed | 0x4l); 04394: } 04395: if(!(puzzle & 0x400402480000ll)) 04396: doSolve(20, 0x100000ll, puzzle | 0x400402480000ll, 04397: partsUsed | 0x4l); 04398: if(!(puzzle & 0x3c80000ll)) 04399: doSolve(20, 0x100000ll, puzzle | 0x3c80000ll, 04400: partsUsed | 0x4l); 04401: if(!(puzzle & 0x4b80000ll)) 04402: doSolve(20, 0x100000ll, puzzle | 0x4b80000ll, 04403: partsUsed | 0x4l); 04404: if(!(puzzle & 0x100100380000ll)) 04405: doSolve(20, 0x100000ll, puzzle | 0x100100380000ll, 04406: partsUsed | 0x4l); 04407: piece3at19: 04408: if (partsUsed & 0x8l) goto piece4at19; 04409: if(!(puzzle & 0x90080480000ll)) 04410: doSolve(20, 0x100000ll, puzzle | 0x90080480000ll, 04411: partsUsed | 0x8l); 04412: if(!(puzzle & 0x2002480080000ll)) 04413: doSolve(20, 0x100000ll, puzzle | 0x2002480080000ll, 04414: partsUsed | 0x8l); 04415: if(!(puzzle & 0x2400400480000ll)) 04416: doSolve(20, 0x100000ll, puzzle | 0x2400400480000ll, 04417: partsUsed | 0x8l); 04418: if(!(puzzle & 0xc980000ll)) 04419: doSolve(20, 0x100000ll, puzzle | 0xc980000ll, 04420: partsUsed | 0x8l); 04421: if(!(puzzle & 0x9c80000ll)) 04422: doSolve(20, 0x100000ll, puzzle | 0x9c80000ll, 04423: partsUsed | 0x8l); 04424: if(!(puzzle & 0x200380080000ll)) 04425: doSolve(20, 0x100000ll, puzzle | 0x200380080000ll, 04426: partsUsed | 0x8l); 04427: if(!(puzzle & 0x300100180000ll)) 04428: doSolve(20, 0x100000ll, puzzle | 0x300100180000ll, 04429: partsUsed | 0x8l); 04430: piece4at19: 04431: if (partsUsed & 0x10l) goto piece5at19; 04432: if (!(puzzle & 0x80080080080000ll)) { 04433: if(!(puzzle & 0x80480080480000ll)) 04434: doSolve(20, 0x100000ll, puzzle | 0x80480080480000ll, 04435: partsUsed | 0x10l); 04436: if(!(puzzle & 0x180080180080000ll)) 04437: doSolve(20, 0x100000ll, puzzle | 0x180080180080000ll, 04438: partsUsed | 0x10l); 04439: if(!(puzzle & 0x80180080180000ll)) 04440: doSolve(20, 0x100000ll, puzzle | 0x80180080180000ll, 04441: partsUsed | 0x10l); 04442: } 04443: if(!(puzzle & 0x2492080000ll)) 04444: doSolve(20, 0x100000ll, puzzle | 0x2492080000ll, 04445: partsUsed | 0x10l); 04446: if(!(puzzle & 0x90080090080000ll)) 04447: doSolve(20, 0x100000ll, puzzle | 0x90080090080000ll, 04448: partsUsed | 0x10l); 04449: if(!(puzzle & 0x480080480080000ll)) 04450: doSolve(20, 0x100000ll, puzzle | 0x480080480080000ll, 04451: partsUsed | 0x10l); 04452: if(!(puzzle & 0x400480400480000ll)) 04453: doSolve(20, 0x100000ll, puzzle | 0x400480400480000ll, 04454: partsUsed | 0x10l); 04455: if(!(puzzle & 0x100180100180000ll)) 04456: doSolve(20, 0x100000ll, puzzle | 0x100180100180000ll, 04457: partsUsed | 0x10l); 04458: piece5at19: 04459: if (partsUsed & 0x20l) goto piece6at19; 04460: if (!(puzzle & 0x80080080080000ll)) { 04461: if(!(puzzle & 0x90080080080000ll)) 04462: doSolve(20, 0x100000ll, puzzle | 0x90080080080000ll, 04463: partsUsed | 0x20l); 04464: if(!(puzzle & 0x80080080480000ll)) 04465: doSolve(20, 0x100000ll, puzzle | 0x80080080480000ll, 04466: partsUsed | 0x20l); 04467: if(!(puzzle & 0x480080080080000ll)) 04468: doSolve(20, 0x100000ll, puzzle | 0x480080080080000ll, 04469: partsUsed | 0x20l); 04470: if(!(puzzle & 0x80080080180000ll)) 04471: doSolve(20, 0x100000ll, puzzle | 0x80080080180000ll, 04472: partsUsed | 0x20l); 04473: if(!(puzzle & 0x180080080080000ll)) 04474: doSolve(20, 0x100000ll, puzzle | 0x180080080080000ll, 04475: partsUsed | 0x20l); 04476: } 04477: if(!(puzzle & 0x400400400480000ll)) 04478: doSolve(20, 0x100000ll, puzzle | 0x400400400480000ll, 04479: partsUsed | 0x20l); 04480: if(!(puzzle & 0x100100100180000ll)) 04481: doSolve(20, 0x100000ll, puzzle | 0x100100100180000ll, 04482: partsUsed | 0x20l); 04483: piece6at19: 04484: if (partsUsed & 0x40l) goto piece7at19; 04485: if (!(puzzle & 0x80080080080000ll)) { 04486: if(!(puzzle & 0x80090080080000ll)) 04487: doSolve(20, 0x100000ll, puzzle | 0x80090080080000ll, 04488: partsUsed | 0x40l); 04489: if(!(puzzle & 0x80080480080000ll)) 04490: doSolve(20, 0x100000ll, puzzle | 0x80080480080000ll, 04491: partsUsed | 0x40l); 04492: if(!(puzzle & 0x80480080080000ll)) 04493: doSolve(20, 0x100000ll, puzzle | 0x80480080080000ll, 04494: partsUsed | 0x40l); 04495: if(!(puzzle & 0x80080180080000ll)) 04496: doSolve(20, 0x100000ll, puzzle | 0x80080180080000ll, 04497: partsUsed | 0x40l); 04498: if(!(puzzle & 0x80180080080000ll)) 04499: doSolve(20, 0x100000ll, puzzle | 0x80180080080000ll, 04500: partsUsed | 0x40l); 04501: } 04502: if(!(puzzle & 0x2490080000ll)) 04503: doSolve(20, 0x100000ll, puzzle | 0x2490080000ll, 04504: partsUsed | 0x40l); 04505: if(!(puzzle & 0x80080090080000ll)) 04506: doSolve(20, 0x100000ll, puzzle | 0x80080090080000ll, 04507: partsUsed | 0x40l); 04508: piece7at19: 04509: if (partsUsed & 0x80l) goto piece8at19; 04510: if(!(puzzle & 0x480080480000ll)) 04511: doSolve(20, 0x100000ll, puzzle | 0x480080480000ll, 04512: partsUsed | 0x80l); 04513: if(!(puzzle & 0x480400480000ll)) 04514: doSolve(20, 0x100000ll, puzzle | 0x480400480000ll, 04515: partsUsed | 0x80l); 04516: if(!(puzzle & 0x2482080000ll)) 04517: doSolve(20, 0x100000ll, puzzle | 0x2482080000ll, 04518: partsUsed | 0x80l); 04519: if(!(puzzle & 0x2082480000ll)) 04520: doSolve(20, 0x100000ll, puzzle | 0x2082480000ll, 04521: partsUsed | 0x80l); 04522: if(!(puzzle & 0x1780000ll)) 04523: doSolve(20, 0x100000ll, puzzle | 0x1780000ll, 04524: partsUsed | 0x80l); 04525: if(!(puzzle & 0x6580000ll)) 04526: doSolve(20, 0x100000ll, puzzle | 0x6580000ll, 04527: partsUsed | 0x80l); 04528: if(!(puzzle & 0x6980000ll)) 04529: doSolve(20, 0x100000ll, puzzle | 0x6980000ll, 04530: partsUsed | 0x80l); 04531: if(!(puzzle & 0x1e80000ll)) 04532: doSolve(20, 0x100000ll, puzzle | 0x1e80000ll, 04533: partsUsed | 0x80l); 04534: if(!(puzzle & 0x180100180000ll)) 04535: doSolve(20, 0x100000ll, puzzle | 0x180100180000ll, 04536: partsUsed | 0x80l); 04537: if(!(puzzle & 0x180080180000ll)) 04538: doSolve(20, 0x100000ll, puzzle | 0x180080180000ll, 04539: partsUsed | 0x80l); 04540: if(!(puzzle & 0x380280000ll)) 04541: doSolve(20, 0x100000ll, puzzle | 0x380280000ll, 04542: partsUsed | 0x80l); 04543: if(!(puzzle & 0x280380000ll)) 04544: doSolve(20, 0x100000ll, puzzle | 0x280380000ll, 04545: partsUsed | 0x80l); 04546: piece8at19: 04547: if (partsUsed & 0x100l) goto piece9at19; 04548: if(!(puzzle & 0x120180000ll)) 04549: doSolve(20, 0x100000ll, puzzle | 0x120180000ll, 04550: partsUsed | 0x100l); 04551: if(!(puzzle & 0x100580000ll)) 04552: doSolve(20, 0x100000ll, puzzle | 0x100580000ll, 04553: partsUsed | 0x100l); 04554: if(!(puzzle & 0xb0080000ll)) 04555: doSolve(20, 0x100000ll, puzzle | 0xb0080000ll, 04556: partsUsed | 0x100l); 04557: if(!(puzzle & 0x980080000ll)) 04558: doSolve(20, 0x100000ll, puzzle | 0x980080000ll, 04559: partsUsed | 0x100l); 04560: if(!(puzzle & 0x480180000ll)) 04561: doSolve(20, 0x100000ll, puzzle | 0x480180000ll, 04562: partsUsed | 0x100l); 04563: if(!(puzzle & 0xc00480000ll)) 04564: doSolve(20, 0x100000ll, puzzle | 0xc00480000ll, 04565: partsUsed | 0x100l); 04566: if(!(puzzle & 0x80c80000ll)) 04567: doSolve(20, 0x100000ll, puzzle | 0x80c80000ll, 04568: partsUsed | 0x100l); 04569: if(!(puzzle & 0x800980000ll)) 04570: doSolve(20, 0x100000ll, puzzle | 0x800980000ll, 04571: partsUsed | 0x100l); 04572: piece9at19: 04573: if (partsUsed & 0x200l) goto piece10at19; 04574: if (!(puzzle & 0x80080080000ll)) { 04575: if(!(puzzle & 0x80090480000ll)) 04576: doSolve(20, 0x100000ll, puzzle | 0x80090480000ll, 04577: partsUsed | 0x200l); 04578: if(!(puzzle & 0x90480080000ll)) 04579: doSolve(20, 0x100000ll, puzzle | 0x90480080000ll, 04580: partsUsed | 0x200l); 04581: if(!(puzzle & 0x480090080000ll)) 04582: doSolve(20, 0x100000ll, puzzle | 0x480090080000ll, 04583: partsUsed | 0x200l); 04584: } 04585: if (!(puzzle & 0x480080000ll)) { 04586: if(!(puzzle & 0x400490080000ll)) 04587: doSolve(20, 0x100000ll, puzzle | 0x400490080000ll, 04588: partsUsed | 0x200l); 04589: if(!(puzzle & 0x10490080000ll)) 04590: doSolve(20, 0x100000ll, puzzle | 0x10490080000ll, 04591: partsUsed | 0x200l); 04592: if(!(puzzle & 0x402480080000ll)) 04593: doSolve(20, 0x100000ll, puzzle | 0x402480080000ll, 04594: partsUsed | 0x200l); 04595: } 04596: if(!(puzzle & 0x5980000ll)) 04597: doSolve(20, 0x100000ll, puzzle | 0x5980000ll, 04598: partsUsed | 0x200l); 04599: if(!(puzzle & 0x5c80000ll)) 04600: doSolve(20, 0x100000ll, puzzle | 0x5c80000ll, 04601: partsUsed | 0x200l); 04602: if(!(puzzle & 0x402400480000ll)) 04603: doSolve(20, 0x100000ll, puzzle | 0x402400480000ll, 04604: partsUsed | 0x200l); 04605: if(!(puzzle & 0x100300180000ll)) 04606: doSolve(20, 0x100000ll, puzzle | 0x100300180000ll, 04607: partsUsed | 0x200l); 04608: if(!(puzzle & 0x100380080000ll)) 04609: doSolve(20, 0x100000ll, puzzle | 0x100380080000ll, 04610: partsUsed | 0x200l); 04611: piece10at19: 04612: if (partsUsed & 0x400l) goto piece11at19; 04613: if (!(puzzle & 0x400480000ll)) { 04614: if(!(puzzle & 0x80480480000ll)) 04615: doSolve(20, 0x100000ll, puzzle | 0x80480480000ll, 04616: partsUsed | 0x400l); 04617: if(!(puzzle & 0x2480480000ll)) 04618: doSolve(20, 0x100000ll, puzzle | 0x2480480000ll, 04619: partsUsed | 0x400l); 04620: if(!(puzzle & 0x2402480000ll)) 04621: doSolve(20, 0x100000ll, puzzle | 0x2402480000ll, 04622: partsUsed | 0x400l); 04623: if(!(puzzle & 0x482480000ll)) 04624: doSolve(20, 0x100000ll, puzzle | 0x482480000ll, 04625: partsUsed | 0x400l); 04626: if(!(puzzle & 0x400480480000ll)) 04627: doSolve(20, 0x100000ll, puzzle | 0x400480480000ll, 04628: partsUsed | 0x400l); 04629: } 04630: if (!(puzzle & 0x980000ll)) { 04631: if(!(puzzle & 0x1b80000ll)) 04632: doSolve(20, 0x100000ll, puzzle | 0x1b80000ll, 04633: partsUsed | 0x400l); 04634: if(!(puzzle & 0xf80000ll)) 04635: doSolve(20, 0x100000ll, puzzle | 0xf80000ll, 04636: partsUsed | 0x400l); 04637: if(!(puzzle & 0x2d80000ll)) 04638: doSolve(20, 0x100000ll, puzzle | 0x2d80000ll, 04639: partsUsed | 0x400l); 04640: if(!(puzzle & 0x4d80000ll)) 04641: doSolve(20, 0x100000ll, puzzle | 0x4d80000ll, 04642: partsUsed | 0x400l); 04643: if(!(puzzle & 0x1d80000ll)) 04644: doSolve(20, 0x100000ll, puzzle | 0x1d80000ll, 04645: partsUsed | 0x400l); 04646: } 04647: if (!(puzzle & 0x80080080000ll)) { 04648: if(!(puzzle & 0x480480080000ll)) 04649: doSolve(20, 0x100000ll, puzzle | 0x480480080000ll, 04650: partsUsed | 0x400l); 04651: if(!(puzzle & 0x80180180000ll)) 04652: doSolve(20, 0x100000ll, puzzle | 0x80180180000ll, 04653: partsUsed | 0x400l); 04654: if(!(puzzle & 0x180180080000ll)) 04655: doSolve(20, 0x100000ll, puzzle | 0x180180080000ll, 04656: partsUsed | 0x400l); 04657: } 04658: if (!(puzzle & 0x100180000ll)) { 04659: if(!(puzzle & 0x100180180000ll)) 04660: doSolve(20, 0x100000ll, puzzle | 0x100180180000ll, 04661: partsUsed | 0x400l); 04662: if(!(puzzle & 0x380180000ll)) 04663: doSolve(20, 0x100000ll, puzzle | 0x380180000ll, 04664: partsUsed | 0x400l); 04665: if(!(puzzle & 0x180380000ll)) 04666: doSolve(20, 0x100000ll, puzzle | 0x180380000ll, 04667: partsUsed | 0x400l); 04668: if(!(puzzle & 0x300380000ll)) 04669: doSolve(20, 0x100000ll, puzzle | 0x300380000ll, 04670: partsUsed | 0x400l); 04671: } 04672: if(!(puzzle & 0x90090080000ll)) 04673: doSolve(20, 0x100000ll, puzzle | 0x90090080000ll, 04674: partsUsed | 0x400l); 04675: if(!(puzzle & 0x490480000ll)) 04676: doSolve(20, 0x100000ll, puzzle | 0x490480000ll, 04677: partsUsed | 0x400l); 04678: if(!(puzzle & 0x6c80000ll)) 04679: doSolve(20, 0x100000ll, puzzle | 0x6c80000ll, 04680: partsUsed | 0x400l); 04681: piece11at19: 04682: if (partsUsed & 0x800l) goto piece12at19; 04683: if (!(puzzle & 0x180080000ll)) { 04684: if(!(puzzle & 0x1b0080000ll)) 04685: doSolve(20, 0x100000ll, puzzle | 0x1b0080000ll, 04686: partsUsed | 0x800l); 04687: if(!(puzzle & 0x1a0180000ll)) 04688: doSolve(20, 0x100000ll, puzzle | 0x1a0180000ll, 04689: partsUsed | 0x800l); 04690: if(!(puzzle & 0x190180000ll)) 04691: doSolve(20, 0x100000ll, puzzle | 0x190180000ll, 04692: partsUsed | 0x800l); 04693: if(!(puzzle & 0x580180000ll)) 04694: doSolve(20, 0x100000ll, puzzle | 0x580180000ll, 04695: partsUsed | 0x800l); 04696: if(!(puzzle & 0x580480000ll)) 04697: doSolve(20, 0x100000ll, puzzle | 0x580480000ll, 04698: partsUsed | 0x800l); 04699: if(!(puzzle & 0x180580000ll)) 04700: doSolve(20, 0x100000ll, puzzle | 0x180580000ll, 04701: partsUsed | 0x800l); 04702: if(!(puzzle & 0x180980000ll)) 04703: doSolve(20, 0x100000ll, puzzle | 0x180980000ll, 04704: partsUsed | 0x800l); 04705: if(!(puzzle & 0x980180000ll)) 04706: doSolve(20, 0x100000ll, puzzle | 0x980180000ll, 04707: partsUsed | 0x800l); 04708: if(!(puzzle & 0xd80080000ll)) 04709: doSolve(20, 0x100000ll, puzzle | 0xd80080000ll, 04710: partsUsed | 0x800l); 04711: } 04712: if (!(puzzle & 0xc80000ll)) { 04713: if(!(puzzle & 0x80d80000ll)) 04714: doSolve(20, 0x100000ll, puzzle | 0x80d80000ll, 04715: partsUsed | 0x800l); 04716: if(!(puzzle & 0xc00c80000ll)) 04717: doSolve(20, 0x100000ll, puzzle | 0xc00c80000ll, 04718: partsUsed | 0x800l); 04719: if(!(puzzle & 0x480c80000ll)) 04720: doSolve(20, 0x100000ll, puzzle | 0x480c80000ll, 04721: partsUsed | 0x800l); 04722: if(!(puzzle & 0x800d80000ll)) 04723: doSolve(20, 0x100000ll, puzzle | 0x800d80000ll, 04724: partsUsed | 0x800l); 04725: if(!(puzzle & 0x100d80000ll)) 04726: doSolve(20, 0x100000ll, puzzle | 0x100d80000ll, 04727: partsUsed | 0x800l); 04728: if(!(puzzle & 0x400d80000ll)) 04729: doSolve(20, 0x100000ll, puzzle | 0x400d80000ll, 04730: partsUsed | 0x800l); 04731: } 04732: if(!(puzzle & 0x900980000ll)) 04733: doSolve(20, 0x100000ll, puzzle | 0x900980000ll, 04734: partsUsed | 0x800l); 04735: if(!(puzzle & 0xc80480000ll)) 04736: doSolve(20, 0x100000ll, puzzle | 0xc80480000ll, 04737: partsUsed | 0x800l); 04738: if(!(puzzle & 0x480580000ll)) 04739: doSolve(20, 0x100000ll, puzzle | 0x480580000ll, 04740: partsUsed | 0x800l); 04741: piece12at19: 04742: break; 04743: case 20: 04744: if (partsUsed & 0x2l) goto piece2at20; 04745: if(!(puzzle & 0x20120900000ll)) 04746: doSolve(21, 0x200000ll, puzzle | 0x20120900000ll, 04747: partsUsed | 0x2l); 04748: if(!(puzzle & 0x2f00000ll)) 04749: doSolve(21, 0x200000ll, puzzle | 0x2f00000ll, 04750: partsUsed | 0x2l); 04751: if(!(puzzle & 0x80180300000ll)) 04752: doSolve(21, 0x200000ll, puzzle | 0x80180300000ll, 04753: partsUsed | 0x2l); 04754: if(!(puzzle & 0x4800900100000ll)) 04755: doSolve(21, 0x200000ll, puzzle | 0x4800900100000ll, 04756: partsUsed | 0x2l); 04757: if(!(puzzle & 0x4004800900000ll)) 04758: doSolve(21, 0x200000ll, puzzle | 0x4004800900000ll, 04759: partsUsed | 0x2l); 04760: piece2at20: 04761: if (partsUsed & 0x4l) goto piece3at20; 04762: if (!(puzzle & 0x100100100000ll)) { 04763: if(!(puzzle & 0x920100100000ll)) 04764: doSolve(21, 0x200000ll, puzzle | 0x920100100000ll, 04765: partsUsed | 0x4l); 04766: if(!(puzzle & 0x380100100000ll)) 04767: doSolve(21, 0x200000ll, puzzle | 0x380100100000ll, 04768: partsUsed | 0x4l); 04769: if(!(puzzle & 0x104900100000ll)) 04770: doSolve(21, 0x200000ll, puzzle | 0x104900100000ll, 04771: partsUsed | 0x4l); 04772: } 04773: if(!(puzzle & 0xe900000ll)) 04774: doSolve(21, 0x200000ll, puzzle | 0xe900000ll, 04775: partsUsed | 0x4l); 04776: if(!(puzzle & 0x800804900000ll)) 04777: doSolve(21, 0x200000ll, puzzle | 0x800804900000ll, 04778: partsUsed | 0x4l); 04779: piece3at20: 04780: if (partsUsed & 0x8l) goto piece4at20; 04781: if(!(puzzle & 0x120100900000ll)) 04782: doSolve(21, 0x200000ll, puzzle | 0x120100900000ll, 04783: partsUsed | 0x8l); 04784: if(!(puzzle & 0x180100300000ll)) 04785: doSolve(21, 0x200000ll, puzzle | 0x180100300000ll, 04786: partsUsed | 0x8l); 04787: if(!(puzzle & 0x6b00000ll)) 04788: doSolve(21, 0x200000ll, puzzle | 0x6b00000ll, 04789: partsUsed | 0x8l); 04790: if(!(puzzle & 0x4004900100000ll)) 04791: doSolve(21, 0x200000ll, puzzle | 0x4004900100000ll, 04792: partsUsed | 0x8l); 04793: if(!(puzzle & 0x4800800900000ll)) 04794: doSolve(21, 0x200000ll, puzzle | 0x4800800900000ll, 04795: partsUsed | 0x8l); 04796: piece4at20: 04797: if (partsUsed & 0x10l) goto piece5at20; 04798: if (!(puzzle & 0x100100100100000ll)) { 04799: if(!(puzzle & 0x180100180100000ll)) 04800: doSolve(21, 0x200000ll, puzzle | 0x180100180100000ll, 04801: partsUsed | 0x10l); 04802: if(!(puzzle & 0x900100900100000ll)) 04803: doSolve(21, 0x200000ll, puzzle | 0x900100900100000ll, 04804: partsUsed | 0x10l); 04805: if(!(puzzle & 0x100900100900000ll)) 04806: doSolve(21, 0x200000ll, puzzle | 0x100900100900000ll, 04807: partsUsed | 0x10l); 04808: if(!(puzzle & 0x300100300100000ll)) 04809: doSolve(21, 0x200000ll, puzzle | 0x300100300100000ll, 04810: partsUsed | 0x10l); 04811: if(!(puzzle & 0x100300100300000ll)) 04812: doSolve(21, 0x200000ll, puzzle | 0x100300100300000ll, 04813: partsUsed | 0x10l); 04814: } 04815: if(!(puzzle & 0x4924100000ll)) 04816: doSolve(21, 0x200000ll, puzzle | 0x4924100000ll, 04817: partsUsed | 0x10l); 04818: if(!(puzzle & 0x120100120100000ll)) 04819: doSolve(21, 0x200000ll, puzzle | 0x120100120100000ll, 04820: partsUsed | 0x10l); 04821: if(!(puzzle & 0x800900800900000ll)) 04822: doSolve(21, 0x200000ll, puzzle | 0x800900800900000ll, 04823: partsUsed | 0x10l); 04824: if(!(puzzle & 0x200300200300000ll)) 04825: doSolve(21, 0x200000ll, puzzle | 0x200300200300000ll, 04826: partsUsed | 0x10l); 04827: piece5at20: 04828: if (partsUsed & 0x20l) goto piece6at20; 04829: if (!(puzzle & 0x100100100100000ll)) { 04830: if(!(puzzle & 0x120100100100000ll)) 04831: doSolve(21, 0x200000ll, puzzle | 0x120100100100000ll, 04832: partsUsed | 0x20l); 04833: if(!(puzzle & 0x180100100100000ll)) 04834: doSolve(21, 0x200000ll, puzzle | 0x180100100100000ll, 04835: partsUsed | 0x20l); 04836: if(!(puzzle & 0x100100100900000ll)) 04837: doSolve(21, 0x200000ll, puzzle | 0x100100100900000ll, 04838: partsUsed | 0x20l); 04839: if(!(puzzle & 0x900100100100000ll)) 04840: doSolve(21, 0x200000ll, puzzle | 0x900100100100000ll, 04841: partsUsed | 0x20l); 04842: if(!(puzzle & 0x100100100300000ll)) 04843: doSolve(21, 0x200000ll, puzzle | 0x100100100300000ll, 04844: partsUsed | 0x20l); 04845: if(!(puzzle & 0x300100100100000ll)) 04846: doSolve(21, 0x200000ll, puzzle | 0x300100100100000ll, 04847: partsUsed | 0x20l); 04848: } 04849: if(!(puzzle & 0x800800800900000ll)) 04850: doSolve(21, 0x200000ll, puzzle | 0x800800800900000ll, 04851: partsUsed | 0x20l); 04852: if(!(puzzle & 0x200200200300000ll)) 04853: doSolve(21, 0x200000ll, puzzle | 0x200200200300000ll, 04854: partsUsed | 0x20l); 04855: piece6at20: 04856: if (partsUsed & 0x40l) goto piece7at20; 04857: if (!(puzzle & 0x100100100100000ll)) { 04858: if(!(puzzle & 0x100120100100000ll)) 04859: doSolve(21, 0x200000ll, puzzle | 0x100120100100000ll, 04860: partsUsed | 0x40l); 04861: if(!(puzzle & 0x100100180100000ll)) 04862: doSolve(21, 0x200000ll, puzzle | 0x100100180100000ll, 04863: partsUsed | 0x40l); 04864: if(!(puzzle & 0x100180100100000ll)) 04865: doSolve(21, 0x200000ll, puzzle | 0x100180100100000ll, 04866: partsUsed | 0x40l); 04867: if(!(puzzle & 0x100100900100000ll)) 04868: doSolve(21, 0x200000ll, puzzle | 0x100100900100000ll, 04869: partsUsed | 0x40l); 04870: if(!(puzzle & 0x100900100100000ll)) 04871: doSolve(21, 0x200000ll, puzzle | 0x100900100100000ll, 04872: partsUsed | 0x40l); 04873: if(!(puzzle & 0x100100300100000ll)) 04874: doSolve(21, 0x200000ll, puzzle | 0x100100300100000ll, 04875: partsUsed | 0x40l); 04876: if(!(puzzle & 0x100300100100000ll)) 04877: doSolve(21, 0x200000ll, puzzle | 0x100300100100000ll, 04878: partsUsed | 0x40l); 04879: } 04880: if(!(puzzle & 0x4920100000ll)) 04881: doSolve(21, 0x200000ll, puzzle | 0x4920100000ll, 04882: partsUsed | 0x40l); 04883: if(!(puzzle & 0x100100120100000ll)) 04884: doSolve(21, 0x200000ll, puzzle | 0x100100120100000ll, 04885: partsUsed | 0x40l); 04886: piece7at20: 04887: if (partsUsed & 0x80l) goto piece8at20; 04888: if(!(puzzle & 0x900100900000ll)) 04889: doSolve(21, 0x200000ll, puzzle | 0x900100900000ll, 04890: partsUsed | 0x80l); 04891: if(!(puzzle & 0x900800900000ll)) 04892: doSolve(21, 0x200000ll, puzzle | 0x900800900000ll, 04893: partsUsed | 0x80l); 04894: if(!(puzzle & 0x4904100000ll)) 04895: doSolve(21, 0x200000ll, puzzle | 0x4904100000ll, 04896: partsUsed | 0x80l); 04897: if(!(puzzle & 0x4104900000ll)) 04898: doSolve(21, 0x200000ll, puzzle | 0x4104900000ll, 04899: partsUsed | 0x80l); 04900: if(!(puzzle & 0xcb00000ll)) 04901: doSolve(21, 0x200000ll, puzzle | 0xcb00000ll, 04902: partsUsed | 0x80l); 04903: if(!(puzzle & 0xd300000ll)) 04904: doSolve(21, 0x200000ll, puzzle | 0xd300000ll, 04905: partsUsed | 0x80l); 04906: if(!(puzzle & 0x300200300000ll)) 04907: doSolve(21, 0x200000ll, puzzle | 0x300200300000ll, 04908: partsUsed | 0x80l); 04909: if(!(puzzle & 0x300100300000ll)) 04910: doSolve(21, 0x200000ll, puzzle | 0x300100300000ll, 04911: partsUsed | 0x80l); 04912: piece8at20: 04913: if (partsUsed & 0x100l) goto piece9at20; 04914: if(!(puzzle & 0x190100000ll)) 04915: doSolve(21, 0x200000ll, puzzle | 0x190100000ll, 04916: partsUsed | 0x100l); 04917: if(!(puzzle & 0x180900000ll)) 04918: doSolve(21, 0x200000ll, puzzle | 0x180900000ll, 04919: partsUsed | 0x100l); 04920: if(!(puzzle & 0x240300000ll)) 04921: doSolve(21, 0x200000ll, puzzle | 0x240300000ll, 04922: partsUsed | 0x100l); 04923: if(!(puzzle & 0x200b00000ll)) 04924: doSolve(21, 0x200000ll, puzzle | 0x200b00000ll, 04925: partsUsed | 0x100l); 04926: if(!(puzzle & 0x160100000ll)) 04927: doSolve(21, 0x200000ll, puzzle | 0x160100000ll, 04928: partsUsed | 0x100l); 04929: if(!(puzzle & 0x400d00000ll)) 04930: doSolve(21, 0x200000ll, puzzle | 0x400d00000ll, 04931: partsUsed | 0x100l); 04932: if(!(puzzle & 0xd00100000ll)) 04933: doSolve(21, 0x200000ll, puzzle | 0xd00100000ll, 04934: partsUsed | 0x100l); 04935: if(!(puzzle & 0x900300000ll)) 04936: doSolve(21, 0x200000ll, puzzle | 0x900300000ll, 04937: partsUsed | 0x100l); 04938: if(!(puzzle & 0x1300100000ll)) 04939: doSolve(21, 0x200000ll, puzzle | 0x1300100000ll, 04940: partsUsed | 0x100l); 04941: if(!(puzzle & 0x1800900000ll)) 04942: doSolve(21, 0x200000ll, puzzle | 0x1800900000ll, 04943: partsUsed | 0x100l); 04944: if(!(puzzle & 0x101900000ll)) 04945: doSolve(21, 0x200000ll, puzzle | 0x101900000ll, 04946: partsUsed | 0x100l); 04947: if(!(puzzle & 0x1001300000ll)) 04948: doSolve(21, 0x200000ll, puzzle | 0x1001300000ll, 04949: partsUsed | 0x100l); 04950: piece9at20: 04951: if (partsUsed & 0x200l) goto piece10at20; 04952: if (!(puzzle & 0x100100100000ll)) { 04953: if(!(puzzle & 0x100120900000ll)) 04954: doSolve(21, 0x200000ll, puzzle | 0x100120900000ll, 04955: partsUsed | 0x200l); 04956: if(!(puzzle & 0x120900100000ll)) 04957: doSolve(21, 0x200000ll, puzzle | 0x120900100000ll, 04958: partsUsed | 0x200l); 04959: if(!(puzzle & 0x900120100000ll)) 04960: doSolve(21, 0x200000ll, puzzle | 0x900120100000ll, 04961: partsUsed | 0x200l); 04962: if(!(puzzle & 0x100180300000ll)) 04963: doSolve(21, 0x200000ll, puzzle | 0x100180300000ll, 04964: partsUsed | 0x200l); 04965: if(!(puzzle & 0x300180100000ll)) 04966: doSolve(21, 0x200000ll, puzzle | 0x300180100000ll, 04967: partsUsed | 0x200l); 04968: if(!(puzzle & 0x180300100000ll)) 04969: doSolve(21, 0x200000ll, puzzle | 0x180300100000ll, 04970: partsUsed | 0x200l); 04971: } 04972: if (!(puzzle & 0x900100000ll)) { 04973: if(!(puzzle & 0x800920100000ll)) 04974: doSolve(21, 0x200000ll, puzzle | 0x800920100000ll, 04975: partsUsed | 0x200l); 04976: if(!(puzzle & 0x20920100000ll)) 04977: doSolve(21, 0x200000ll, puzzle | 0x20920100000ll, 04978: partsUsed | 0x200l); 04979: if(!(puzzle & 0x804900100000ll)) 04980: doSolve(21, 0x200000ll, puzzle | 0x804900100000ll, 04981: partsUsed | 0x200l); 04982: } 04983: if (!(puzzle & 0xd00000ll)) { 04984: if(!(puzzle & 0x9d00000ll)) 04985: doSolve(21, 0x200000ll, puzzle | 0x9d00000ll, 04986: partsUsed | 0x200l); 04987: if(!(puzzle & 0x3d00000ll)) 04988: doSolve(21, 0x200000ll, puzzle | 0x3d00000ll, 04989: partsUsed | 0x200l); 04990: if(!(puzzle & 0x4f00000ll)) 04991: doSolve(21, 0x200000ll, puzzle | 0x4f00000ll, 04992: partsUsed | 0x200l); 04993: if(!(puzzle & 0xcd00000ll)) 04994: doSolve(21, 0x200000ll, puzzle | 0xcd00000ll, 04995: partsUsed | 0x200l); 04996: } 04997: if(!(puzzle & 0x7900000ll)) 04998: doSolve(21, 0x200000ll, puzzle | 0x7900000ll, 04999: partsUsed | 0x200l); 05000: if(!(puzzle & 0x80380100000ll)) 05001: doSolve(21, 0x200000ll, puzzle | 0x80380100000ll, 05002: partsUsed | 0x200l); 05003: if(!(puzzle & 0x200380100000ll)) 05004: doSolve(21, 0x200000ll, puzzle | 0x200380100000ll, 05005: partsUsed | 0x200l); 05006: if(!(puzzle & 0x804800900000ll)) 05007: doSolve(21, 0x200000ll, puzzle | 0x804800900000ll, 05008: partsUsed | 0x200l); 05009: piece10at20: 05010: if (partsUsed & 0x400l) goto piece11at20; 05011: if (!(puzzle & 0x800900000ll)) { 05012: if(!(puzzle & 0x100900900000ll)) 05013: doSolve(21, 0x200000ll, puzzle | 0x100900900000ll, 05014: partsUsed | 0x400l); 05015: if(!(puzzle & 0x4900900000ll)) 05016: doSolve(21, 0x200000ll, puzzle | 0x4900900000ll, 05017: partsUsed | 0x400l); 05018: if(!(puzzle & 0x4804900000ll)) 05019: doSolve(21, 0x200000ll, puzzle | 0x4804900000ll, 05020: partsUsed | 0x400l); 05021: if(!(puzzle & 0x904900000ll)) 05022: doSolve(21, 0x200000ll, puzzle | 0x904900000ll, 05023: partsUsed | 0x400l); 05024: if(!(puzzle & 0x800900900000ll)) 05025: doSolve(21, 0x200000ll, puzzle | 0x800900900000ll, 05026: partsUsed | 0x400l); 05027: } 05028: if (!(puzzle & 0x100100100000ll)) { 05029: if(!(puzzle & 0x900900100000ll)) 05030: doSolve(21, 0x200000ll, puzzle | 0x900900100000ll, 05031: partsUsed | 0x400l); 05032: if(!(puzzle & 0x100300300000ll)) 05033: doSolve(21, 0x200000ll, puzzle | 0x100300300000ll, 05034: partsUsed | 0x400l); 05035: if(!(puzzle & 0x300300100000ll)) 05036: doSolve(21, 0x200000ll, puzzle | 0x300300100000ll, 05037: partsUsed | 0x400l); 05038: } 05039: if (!(puzzle & 0x1900000ll)) { 05040: if(!(puzzle & 0x5b00000ll)) 05041: doSolve(21, 0x200000ll, puzzle | 0x5b00000ll, 05042: partsUsed | 0x400l); 05043: if(!(puzzle & 0x9b00000ll)) 05044: doSolve(21, 0x200000ll, puzzle | 0x9b00000ll, 05045: partsUsed | 0x400l); 05046: if(!(puzzle & 0xd900000ll)) 05047: doSolve(21, 0x200000ll, puzzle | 0xd900000ll, 05048: partsUsed | 0x400l); 05049: } 05050: if(!(puzzle & 0x120120100000ll)) 05051: doSolve(21, 0x200000ll, puzzle | 0x120120100000ll, 05052: partsUsed | 0x400l); 05053: if(!(puzzle & 0x920900000ll)) 05054: doSolve(21, 0x200000ll, puzzle | 0x920900000ll, 05055: partsUsed | 0x400l); 05056: if(!(puzzle & 0x1f00000ll)) 05057: doSolve(21, 0x200000ll, puzzle | 0x1f00000ll, 05058: partsUsed | 0x400l); 05059: if(!(puzzle & 0x6d00000ll)) 05060: doSolve(21, 0x200000ll, puzzle | 0x6d00000ll, 05061: partsUsed | 0x400l); 05062: if(!(puzzle & 0x380300000ll)) 05063: doSolve(21, 0x200000ll, puzzle | 0x380300000ll, 05064: partsUsed | 0x400l); 05065: if(!(puzzle & 0x180180100000ll)) 05066: doSolve(21, 0x200000ll, puzzle | 0x180180100000ll, 05067: partsUsed | 0x400l); 05068: if(!(puzzle & 0x200300300000ll)) 05069: doSolve(21, 0x200000ll, puzzle | 0x200300300000ll, 05070: partsUsed | 0x400l); 05071: piece11at20: 05072: if (partsUsed & 0x800l) goto piece12at20; 05073: if (!(puzzle & 0x120100000ll)) { 05074: if(!(puzzle & 0x1b0100000ll)) 05075: doSolve(21, 0x200000ll, puzzle | 0x1b0100000ll, 05076: partsUsed | 0x800l); 05077: if(!(puzzle & 0x360100000ll)) 05078: doSolve(21, 0x200000ll, puzzle | 0x360100000ll, 05079: partsUsed | 0x800l); 05080: if(!(puzzle & 0x320300000ll)) 05081: doSolve(21, 0x200000ll, puzzle | 0x320300000ll, 05082: partsUsed | 0x800l); 05083: } 05084: if (!(puzzle & 0x100300000ll)) { 05085: if(!(puzzle & 0x340300000ll)) 05086: doSolve(21, 0x200000ll, puzzle | 0x340300000ll, 05087: partsUsed | 0x800l); 05088: if(!(puzzle & 0x101b00000ll)) 05089: doSolve(21, 0x200000ll, puzzle | 0x101b00000ll, 05090: partsUsed | 0x800l); 05091: if(!(puzzle & 0xb00300000ll)) 05092: doSolve(21, 0x200000ll, puzzle | 0xb00300000ll, 05093: partsUsed | 0x800l); 05094: if(!(puzzle & 0x300b00000ll)) 05095: doSolve(21, 0x200000ll, puzzle | 0x300b00000ll, 05096: partsUsed | 0x800l); 05097: if(!(puzzle & 0x301300000ll)) 05098: doSolve(21, 0x200000ll, puzzle | 0x301300000ll, 05099: partsUsed | 0x800l); 05100: if(!(puzzle & 0x1300300000ll)) 05101: doSolve(21, 0x200000ll, puzzle | 0x1300300000ll, 05102: partsUsed | 0x800l); 05103: if(!(puzzle & 0x900b00000ll)) 05104: doSolve(21, 0x200000ll, puzzle | 0x900b00000ll, 05105: partsUsed | 0x800l); 05106: } 05107: if (!(puzzle & 0xc00100000ll)) { 05108: if(!(puzzle & 0xd80100000ll)) 05109: doSolve(21, 0x200000ll, puzzle | 0xd80100000ll, 05110: partsUsed | 0x800l); 05111: if(!(puzzle & 0xd00900000ll)) 05112: doSolve(21, 0x200000ll, puzzle | 0xd00900000ll, 05113: partsUsed | 0x800l); 05114: if(!(puzzle & 0xc00d00000ll)) 05115: doSolve(21, 0x200000ll, puzzle | 0xc00d00000ll, 05116: partsUsed | 0x800l); 05117: } 05118: if (!(puzzle & 0x800900000ll)) { 05119: if(!(puzzle & 0x980900000ll)) 05120: doSolve(21, 0x200000ll, puzzle | 0x980900000ll, 05121: partsUsed | 0x800l); 05122: if(!(puzzle & 0x900d00000ll)) 05123: doSolve(21, 0x200000ll, puzzle | 0x900d00000ll, 05124: partsUsed | 0x800l); 05125: if(!(puzzle & 0x1801900000ll)) 05126: doSolve(21, 0x200000ll, puzzle | 0x1801900000ll, 05127: partsUsed | 0x800l); 05128: if(!(puzzle & 0xb00900000ll)) 05129: doSolve(21, 0x200000ll, puzzle | 0xb00900000ll, 05130: partsUsed | 0x800l); 05131: if(!(puzzle & 0x901900000ll)) 05132: doSolve(21, 0x200000ll, puzzle | 0x901900000ll, 05133: partsUsed | 0x800l); 05134: if(!(puzzle & 0x801b00000ll)) 05135: doSolve(21, 0x200000ll, puzzle | 0x801b00000ll, 05136: partsUsed | 0x800l); 05137: if(!(puzzle & 0x1900900000ll)) 05138: doSolve(21, 0x200000ll, puzzle | 0x1900900000ll, 05139: partsUsed | 0x800l); 05140: } 05141: if (!(puzzle & 0x1300000ll)) { 05142: if(!(puzzle & 0x1201300000ll)) 05143: doSolve(21, 0x200000ll, puzzle | 0x1201300000ll, 05144: partsUsed | 0x800l); 05145: if(!(puzzle & 0x1001b00000ll)) 05146: doSolve(21, 0x200000ll, puzzle | 0x1001b00000ll, 05147: partsUsed | 0x800l); 05148: if(!(puzzle & 0x201b00000ll)) 05149: doSolve(21, 0x200000ll, puzzle | 0x201b00000ll, 05150: partsUsed | 0x800l); 05151: } 05152: if(!(puzzle & 0x1b00100000ll)) 05153: doSolve(21, 0x200000ll, puzzle | 0x1b00100000ll, 05154: partsUsed | 0x800l); 05155: piece12at20: 05156: break; 05157: case 21: 05158: if (partsUsed & 0x2l) goto piece2at21; 05159: if(!(puzzle & 0x40241200000ll)) 05160: doSolve(22, 0x400000ll, puzzle | 0x40241200000ll, 05161: partsUsed | 0x2l); 05162: if(!(puzzle & 0x7a00000ll)) 05163: doSolve(22, 0x400000ll, puzzle | 0x7a00000ll, 05164: partsUsed | 0x2l); 05165: if(!(puzzle & 0x180300200000ll)) 05166: doSolve(22, 0x400000ll, puzzle | 0x180300200000ll, 05167: partsUsed | 0x2l); 05168: if(!(puzzle & 0x9001200200000ll)) 05169: doSolve(22, 0x400000ll, puzzle | 0x9001200200000ll, 05170: partsUsed | 0x2l); 05171: if(!(puzzle & 0x8009001200000ll)) 05172: doSolve(22, 0x400000ll, puzzle | 0x8009001200000ll, 05173: partsUsed | 0x2l); 05174: piece2at21: 05175: if (partsUsed & 0x4l) goto piece3at21; 05176: if (!(puzzle & 0x200200200000ll)) { 05177: if(!(puzzle & 0x1240200200000ll)) 05178: doSolve(22, 0x400000ll, puzzle | 0x1240200200000ll, 05179: partsUsed | 0x4l); 05180: if(!(puzzle & 0x200380200000ll)) 05181: doSolve(22, 0x400000ll, puzzle | 0x200380200000ll, 05182: partsUsed | 0x4l); 05183: if(!(puzzle & 0x209200200000ll)) 05184: doSolve(22, 0x400000ll, puzzle | 0x209200200000ll, 05185: partsUsed | 0x4l); 05186: } 05187: if(!(puzzle & 0x9e00000ll)) 05188: doSolve(22, 0x400000ll, puzzle | 0x9e00000ll, 05189: partsUsed | 0x4l); 05190: if(!(puzzle & 0x1001009200000ll)) 05191: doSolve(22, 0x400000ll, puzzle | 0x1001009200000ll, 05192: partsUsed | 0x4l); 05193: piece3at21: 05194: if (partsUsed & 0x8l) goto piece4at21; 05195: if(!(puzzle & 0x240201200000ll)) 05196: doSolve(22, 0x400000ll, puzzle | 0x240201200000ll, 05197: partsUsed | 0x8l); 05198: if(!(puzzle & 0x3e00000ll)) 05199: doSolve(22, 0x400000ll, puzzle | 0x3e00000ll, 05200: partsUsed | 0x8l); 05201: if(!(puzzle & 0x80380200000ll)) 05202: doSolve(22, 0x400000ll, puzzle | 0x80380200000ll, 05203: partsUsed | 0x8l); 05204: if(!(puzzle & 0x8009200200000ll)) 05205: doSolve(22, 0x400000ll, puzzle | 0x8009200200000ll, 05206: partsUsed | 0x8l); 05207: if(!(puzzle & 0x9001001200000ll)) 05208: doSolve(22, 0x400000ll, puzzle | 0x9001001200000ll, 05209: partsUsed | 0x8l); 05210: piece4at21: 05211: if (partsUsed & 0x10l) goto piece5at21; 05212: if (!(puzzle & 0x200200200200000ll)) { 05213: if(!(puzzle & 0x300200300200000ll)) 05214: doSolve(22, 0x400000ll, puzzle | 0x300200300200000ll, 05215: partsUsed | 0x10l); 05216: if(!(puzzle & 0x1200201200200000ll)) 05217: doSolve(22, 0x400000ll, puzzle | 0x1200201200200000ll, 05218: partsUsed | 0x10l); 05219: if(!(puzzle & 0x201200201200000ll)) 05220: doSolve(22, 0x400000ll, puzzle | 0x201200201200000ll, 05221: partsUsed | 0x10l); 05222: } 05223: if(!(puzzle & 0x9248200000ll)) 05224: doSolve(22, 0x400000ll, puzzle | 0x9248200000ll, 05225: partsUsed | 0x10l); 05226: if(!(puzzle & 0x240200240200000ll)) 05227: doSolve(22, 0x400000ll, puzzle | 0x240200240200000ll, 05228: partsUsed | 0x10l); 05229: if(!(puzzle & 0x1001201001200000ll)) 05230: doSolve(22, 0x400000ll, puzzle | 0x1001201001200000ll, 05231: partsUsed | 0x10l); 05232: piece5at21: 05233: if (partsUsed & 0x20l) goto piece6at21; 05234: if (!(puzzle & 0x200200200200000ll)) { 05235: if(!(puzzle & 0x240200200200000ll)) 05236: doSolve(22, 0x400000ll, puzzle | 0x240200200200000ll, 05237: partsUsed | 0x20l); 05238: if(!(puzzle & 0x300200200200000ll)) 05239: doSolve(22, 0x400000ll, puzzle | 0x300200200200000ll, 05240: partsUsed | 0x20l); 05241: if(!(puzzle & 0x200200201200000ll)) 05242: doSolve(22, 0x400000ll, puzzle | 0x200200201200000ll, 05243: partsUsed | 0x20l); 05244: if(!(puzzle & 0x1200200200200000ll)) 05245: doSolve(22, 0x400000ll, puzzle | 0x1200200200200000ll, 05246: partsUsed | 0x20l); 05247: } 05248: if(!(puzzle & 0x1001001001200000ll)) 05249: doSolve(22, 0x400000ll, puzzle | 0x1001001001200000ll, 05250: partsUsed | 0x20l); 05251: piece6at21: 05252: if (partsUsed & 0x40l) goto piece7at21; 05253: if (!(puzzle & 0x200200200200000ll)) { 05254: if(!(puzzle & 0x200240200200000ll)) 05255: doSolve(22, 0x400000ll, puzzle | 0x200240200200000ll, 05256: partsUsed | 0x40l); 05257: if(!(puzzle & 0x200200300200000ll)) 05258: doSolve(22, 0x400000ll, puzzle | 0x200200300200000ll, 05259: partsUsed | 0x40l); 05260: if(!(puzzle & 0x200300200200000ll)) 05261: doSolve(22, 0x400000ll, puzzle | 0x200300200200000ll, 05262: partsUsed | 0x40l); 05263: if(!(puzzle & 0x200201200200000ll)) 05264: doSolve(22, 0x400000ll, puzzle | 0x200201200200000ll, 05265: partsUsed | 0x40l); 05266: if(!(puzzle & 0x201200200200000ll)) 05267: doSolve(22, 0x400000ll, puzzle | 0x201200200200000ll, 05268: partsUsed | 0x40l); 05269: } 05270: if(!(puzzle & 0x9240200000ll)) 05271: doSolve(22, 0x400000ll, puzzle | 0x9240200000ll, 05272: partsUsed | 0x40l); 05273: if(!(puzzle & 0x200200240200000ll)) 05274: doSolve(22, 0x400000ll, puzzle | 0x200200240200000ll, 05275: partsUsed | 0x40l); 05276: piece7at21: 05277: if (partsUsed & 0x80l) goto piece8at21; 05278: if(!(puzzle & 0x1200201200000ll)) 05279: doSolve(22, 0x400000ll, puzzle | 0x1200201200000ll, 05280: partsUsed | 0x80l); 05281: if(!(puzzle & 0x1201001200000ll)) 05282: doSolve(22, 0x400000ll, puzzle | 0x1201001200000ll, 05283: partsUsed | 0x80l); 05284: if(!(puzzle & 0x9208200000ll)) 05285: doSolve(22, 0x400000ll, puzzle | 0x9208200000ll, 05286: partsUsed | 0x80l); 05287: if(!(puzzle & 0x8209200000ll)) 05288: doSolve(22, 0x400000ll, puzzle | 0x8209200000ll, 05289: partsUsed | 0x80l); 05290: piece8at21: 05291: if (partsUsed & 0x100l) goto piece9at21; 05292: if(!(puzzle & 0x320200000ll)) 05293: doSolve(22, 0x400000ll, puzzle | 0x320200000ll, 05294: partsUsed | 0x100l); 05295: if(!(puzzle & 0x301200000ll)) 05296: doSolve(22, 0x400000ll, puzzle | 0x301200000ll, 05297: partsUsed | 0x100l); 05298: if(!(puzzle & 0x801a00000ll)) 05299: doSolve(22, 0x400000ll, puzzle | 0x801a00000ll, 05300: partsUsed | 0x100l); 05301: if(!(puzzle & 0x1a00200000ll)) 05302: doSolve(22, 0x400000ll, puzzle | 0x1a00200000ll, 05303: partsUsed | 0x100l); 05304: piece9at21: 05305: if (partsUsed & 0x200l) goto piece10at21; 05306: if (!(puzzle & 0x200200200000ll)) { 05307: if(!(puzzle & 0x200241200000ll)) 05308: doSolve(22, 0x400000ll, puzzle | 0x200241200000ll, 05309: partsUsed | 0x200l); 05310: if(!(puzzle & 0x241200200000ll)) 05311: doSolve(22, 0x400000ll, puzzle | 0x241200200000ll, 05312: partsUsed | 0x200l); 05313: if(!(puzzle & 0x1200240200000ll)) 05314: doSolve(22, 0x400000ll, puzzle | 0x1200240200000ll, 05315: partsUsed | 0x200l); 05316: } 05317: if (!(puzzle & 0x1200200000ll)) { 05318: if(!(puzzle & 0x1001240200000ll)) 05319: doSolve(22, 0x400000ll, puzzle | 0x1001240200000ll, 05320: partsUsed | 0x200l); 05321: if(!(puzzle & 0x41240200000ll)) 05322: doSolve(22, 0x400000ll, puzzle | 0x41240200000ll, 05323: partsUsed | 0x200l); 05324: if(!(puzzle & 0x1009200200000ll)) 05325: doSolve(22, 0x400000ll, puzzle | 0x1009200200000ll, 05326: partsUsed | 0x200l); 05327: } 05328: if(!(puzzle & 0x5e00000ll)) 05329: doSolve(22, 0x400000ll, puzzle | 0x5e00000ll, 05330: partsUsed | 0x200l); 05331: if(!(puzzle & 0x100380200000ll)) 05332: doSolve(22, 0x400000ll, puzzle | 0x100380200000ll, 05333: partsUsed | 0x200l); 05334: if(!(puzzle & 0x1009001200000ll)) 05335: doSolve(22, 0x400000ll, puzzle | 0x1009001200000ll, 05336: partsUsed | 0x200l); 05337: piece10at21: 05338: if (partsUsed & 0x400l) goto piece11at21; 05339: if (!(puzzle & 0x9200000ll)) { 05340: if(!(puzzle & 0xda00000ll)) 05341: doSolve(22, 0x400000ll, puzzle | 0xda00000ll, 05342: partsUsed | 0x400l); 05343: if(!(puzzle & 0x9009200000ll)) 05344: doSolve(22, 0x400000ll, puzzle | 0x9009200000ll, 05345: partsUsed | 0x400l); 05346: if(!(puzzle & 0x1209200000ll)) 05347: doSolve(22, 0x400000ll, puzzle | 0x1209200000ll, 05348: partsUsed | 0x400l); 05349: } 05350: if (!(puzzle & 0x200200200000ll)) { 05351: if(!(puzzle & 0x300300200000ll)) 05352: doSolve(22, 0x400000ll, puzzle | 0x300300200000ll, 05353: partsUsed | 0x400l); 05354: if(!(puzzle & 0x201201200000ll)) 05355: doSolve(22, 0x400000ll, puzzle | 0x201201200000ll, 05356: partsUsed | 0x400l); 05357: if(!(puzzle & 0x1201200200000ll)) 05358: doSolve(22, 0x400000ll, puzzle | 0x1201200200000ll, 05359: partsUsed | 0x400l); 05360: } 05361: if(!(puzzle & 0x240240200000ll)) 05362: doSolve(22, 0x400000ll, puzzle | 0x240240200000ll, 05363: partsUsed | 0x400l); 05364: if(!(puzzle & 0x1241200000ll)) 05365: doSolve(22, 0x400000ll, puzzle | 0x1241200000ll, 05366: partsUsed | 0x400l); 05367: if(!(puzzle & 0x9201200000ll)) 05368: doSolve(22, 0x400000ll, puzzle | 0x9201200000ll, 05369: partsUsed | 0x400l); 05370: if(!(puzzle & 0x1001201200000ll)) 05371: doSolve(22, 0x400000ll, puzzle | 0x1001201200000ll, 05372: partsUsed | 0x400l); 05373: piece11at21: 05374: if (partsUsed & 0x800l) goto piece12at21; 05375: if (!(puzzle & 0x300200000ll)) { 05376: if(!(puzzle & 0x360200000ll)) 05377: doSolve(22, 0x400000ll, puzzle | 0x360200000ll, 05378: partsUsed | 0x800l); 05379: if(!(puzzle & 0x1b00200000ll)) 05380: doSolve(22, 0x400000ll, puzzle | 0x1b00200000ll, 05381: partsUsed | 0x800l); 05382: if(!(puzzle & 0x1301200000ll)) 05383: doSolve(22, 0x400000ll, puzzle | 0x1301200000ll, 05384: partsUsed | 0x800l); 05385: } 05386: if (!(puzzle & 0x1001200000ll)) { 05387: if(!(puzzle & 0x1a01200000ll)) 05388: doSolve(22, 0x400000ll, puzzle | 0x1a01200000ll, 05389: partsUsed | 0x800l); 05390: if(!(puzzle & 0x1801a00000ll)) 05391: doSolve(22, 0x400000ll, puzzle | 0x1801a00000ll, 05392: partsUsed | 0x800l); 05393: if(!(puzzle & 0x1201a00000ll)) 05394: doSolve(22, 0x400000ll, puzzle | 0x1201a00000ll, 05395: partsUsed | 0x800l); 05396: } 05397: piece12at21: 05398: break; 05399: case 22: 05400: if (partsUsed & 0x2l) goto piece2at22; 05401: if(!(puzzle & 0x90480400000ll)) 05402: doSolve(23, 0x800000ll, puzzle | 0x90480400000ll, 05403: partsUsed | 0x2l); 05404: if(!(puzzle & 0x80482400000ll)) 05405: doSolve(23, 0x800000ll, puzzle | 0x80482400000ll, 05406: partsUsed | 0x2l); 05407: if(!(puzzle & 0x1001800c00000ll)) 05408: doSolve(23, 0x800000ll, puzzle | 0x1001800c00000ll, 05409: partsUsed | 0x2l); 05410: if(!(puzzle & 0x1800c00400000ll)) 05411: doSolve(23, 0x800000ll, puzzle | 0x1800c00400000ll, 05412: partsUsed | 0x2l); 05413: piece2at22: 05414: if (partsUsed & 0x4l) goto piece3at22; 05415: if (!(puzzle & 0x400400400000ll)) { 05416: if(!(puzzle & 0x400490400000ll)) 05417: doSolve(23, 0x800000ll, puzzle | 0x400490400000ll, 05418: partsUsed | 0x4l); 05419: if(!(puzzle & 0x2480400400000ll)) 05420: doSolve(23, 0x800000ll, puzzle | 0x2480400400000ll, 05421: partsUsed | 0x4l); 05422: if(!(puzzle & 0x401c00400000ll)) 05423: doSolve(23, 0x800000ll, puzzle | 0x401c00400000ll, 05424: partsUsed | 0x4l); 05425: } 05426: if(!(puzzle & 0x800801c00000ll)) 05427: doSolve(23, 0x800000ll, puzzle | 0x800801c00000ll, 05428: partsUsed | 0x4l); 05429: piece3at22: 05430: if (partsUsed & 0x8l) goto piece4at22; 05431: if(!(puzzle & 0x10490400000ll)) 05432: doSolve(23, 0x800000ll, puzzle | 0x10490400000ll, 05433: partsUsed | 0x8l); 05434: if(!(puzzle & 0x480402400000ll)) 05435: doSolve(23, 0x800000ll, puzzle | 0x480402400000ll, 05436: partsUsed | 0x8l); 05437: if(!(puzzle & 0x1001c00400000ll)) 05438: doSolve(23, 0x800000ll, puzzle | 0x1001c00400000ll, 05439: partsUsed | 0x8l); 05440: if(!(puzzle & 0x1800800c00000ll)) 05441: doSolve(23, 0x800000ll, puzzle | 0x1800800c00000ll, 05442: partsUsed | 0x8l); 05443: piece4at22: 05444: if (partsUsed & 0x10l) goto piece5at22; 05445: if (!(puzzle & 0x400400400400000ll)) { 05446: if(!(puzzle & 0x480400480400000ll)) 05447: doSolve(23, 0x800000ll, puzzle | 0x480400480400000ll, 05448: partsUsed | 0x10l); 05449: if(!(puzzle & 0x2400402400400000ll)) 05450: doSolve(23, 0x800000ll, puzzle | 0x2400402400400000ll, 05451: partsUsed | 0x10l); 05452: if(!(puzzle & 0x402400402400000ll)) 05453: doSolve(23, 0x800000ll, puzzle | 0x402400402400000ll, 05454: partsUsed | 0x10l); 05455: if(!(puzzle & 0xc00400c00400000ll)) 05456: doSolve(23, 0x800000ll, puzzle | 0xc00400c00400000ll, 05457: partsUsed | 0x10l); 05458: if(!(puzzle & 0x400c00400c00000ll)) 05459: doSolve(23, 0x800000ll, puzzle | 0x400c00400c00000ll, 05460: partsUsed | 0x10l); 05461: } 05462: if(!(puzzle & 0x2002402002400000ll)) 05463: doSolve(23, 0x800000ll, puzzle | 0x2002402002400000ll, 05464: partsUsed | 0x10l); 05465: if(!(puzzle & 0x800c00800c00000ll)) 05466: doSolve(23, 0x800000ll, puzzle | 0x800c00800c00000ll, 05467: partsUsed | 0x10l); 05468: piece5at22: 05469: if (partsUsed & 0x20l) goto piece6at22; 05470: if (!(puzzle & 0x400400400400000ll)) { 05471: if(!(puzzle & 0x480400400400000ll)) 05472: doSolve(23, 0x800000ll, puzzle | 0x480400400400000ll, 05473: partsUsed | 0x20l); 05474: if(!(puzzle & 0x400400402400000ll)) 05475: doSolve(23, 0x800000ll, puzzle | 0x400400402400000ll, 05476: partsUsed | 0x20l); 05477: if(!(puzzle & 0x2400400400400000ll)) 05478: doSolve(23, 0x800000ll, puzzle | 0x2400400400400000ll, 05479: partsUsed | 0x20l); 05480: if(!(puzzle & 0x400400400c00000ll)) 05481: doSolve(23, 0x800000ll, puzzle | 0x400400400c00000ll, 05482: partsUsed | 0x20l); 05483: if(!(puzzle & 0xc00400400400000ll)) 05484: doSolve(23, 0x800000ll, puzzle | 0xc00400400400000ll, 05485: partsUsed | 0x20l); 05486: } 05487: if(!(puzzle & 0x2002002002400000ll)) 05488: doSolve(23, 0x800000ll, puzzle | 0x2002002002400000ll, 05489: partsUsed | 0x20l); 05490: if(!(puzzle & 0x800800800c00000ll)) 05491: doSolve(23, 0x800000ll, puzzle | 0x800800800c00000ll, 05492: partsUsed | 0x20l); 05493: piece6at22: 05494: if (partsUsed & 0x40l) goto piece7at22; 05495: if (!(puzzle & 0x400400400400000ll)) { 05496: if(!(puzzle & 0x400480400400000ll)) 05497: doSolve(23, 0x800000ll, puzzle | 0x400480400400000ll, 05498: partsUsed | 0x40l); 05499: if(!(puzzle & 0x400402400400000ll)) 05500: doSolve(23, 0x800000ll, puzzle | 0x400402400400000ll, 05501: partsUsed | 0x40l); 05502: if(!(puzzle & 0x402400400400000ll)) 05503: doSolve(23, 0x800000ll, puzzle | 0x402400400400000ll, 05504: partsUsed | 0x40l); 05505: if(!(puzzle & 0x400400c00400000ll)) 05506: doSolve(23, 0x800000ll, puzzle | 0x400400c00400000ll, 05507: partsUsed | 0x40l); 05508: if(!(puzzle & 0x400c00400400000ll)) 05509: doSolve(23, 0x800000ll, puzzle | 0x400c00400400000ll, 05510: partsUsed | 0x40l); 05511: } 05512: if(!(puzzle & 0x2490400000ll)) 05513: doSolve(23, 0x800000ll, puzzle | 0x2490400000ll, 05514: partsUsed | 0x40l); 05515: if(!(puzzle & 0x400400480400000ll)) 05516: doSolve(23, 0x800000ll, puzzle | 0x400400480400000ll, 05517: partsUsed | 0x40l); 05518: piece7at22: 05519: if (partsUsed & 0x80l) goto piece8at22; 05520: if(!(puzzle & 0x2400402400000ll)) 05521: doSolve(23, 0x800000ll, puzzle | 0x2400402400000ll, 05522: partsUsed | 0x80l); 05523: if(!(puzzle & 0x2402002400000ll)) 05524: doSolve(23, 0x800000ll, puzzle | 0x2402002400000ll, 05525: partsUsed | 0x80l); 05526: if(!(puzzle & 0xbc00000ll)) 05527: doSolve(23, 0x800000ll, puzzle | 0xbc00000ll, 05528: partsUsed | 0x80l); 05529: if(!(puzzle & 0xf400000ll)) 05530: doSolve(23, 0x800000ll, puzzle | 0xf400000ll, 05531: partsUsed | 0x80l); 05532: if(!(puzzle & 0xc00800c00000ll)) 05533: doSolve(23, 0x800000ll, puzzle | 0xc00800c00000ll, 05534: partsUsed | 0x80l); 05535: if(!(puzzle & 0xc00400c00000ll)) 05536: doSolve(23, 0x800000ll, puzzle | 0xc00400c00000ll, 05537: partsUsed | 0x80l); 05538: if(!(puzzle & 0x1c01400000ll)) 05539: doSolve(23, 0x800000ll, puzzle | 0x1c01400000ll, 05540: partsUsed | 0x80l); 05541: if(!(puzzle & 0x1401c00000ll)) 05542: doSolve(23, 0x800000ll, puzzle | 0x1401c00000ll, 05543: partsUsed | 0x80l); 05544: piece8at22: 05545: if (partsUsed & 0x100l) goto piece9at22; 05546: if(!(puzzle & 0x900c00000ll)) 05547: doSolve(23, 0x800000ll, puzzle | 0x900c00000ll, 05548: partsUsed | 0x100l); 05549: if(!(puzzle & 0x802c00000ll)) 05550: doSolve(23, 0x800000ll, puzzle | 0x802c00000ll, 05551: partsUsed | 0x100l); 05552: if(!(puzzle & 0x580400000ll)) 05553: doSolve(23, 0x800000ll, puzzle | 0x580400000ll, 05554: partsUsed | 0x100l); 05555: if(!(puzzle & 0x4c00400000ll)) 05556: doSolve(23, 0x800000ll, puzzle | 0x4c00400000ll, 05557: partsUsed | 0x100l); 05558: if(!(puzzle & 0x2400c00000ll)) 05559: doSolve(23, 0x800000ll, puzzle | 0x2400c00000ll, 05560: partsUsed | 0x100l); 05561: if(!(puzzle & 0x6002400000ll)) 05562: doSolve(23, 0x800000ll, puzzle | 0x6002400000ll, 05563: partsUsed | 0x100l); 05564: if(!(puzzle & 0x406400000ll)) 05565: doSolve(23, 0x800000ll, puzzle | 0x406400000ll, 05566: partsUsed | 0x100l); 05567: if(!(puzzle & 0x4004c00000ll)) 05568: doSolve(23, 0x800000ll, puzzle | 0x4004c00000ll, 05569: partsUsed | 0x100l); 05570: piece9at22: 05571: if (partsUsed & 0x200l) goto piece10at22; 05572: if (!(puzzle & 0x480400000ll)) { 05573: if(!(puzzle & 0x80490400000ll)) 05574: doSolve(23, 0x800000ll, puzzle | 0x80490400000ll, 05575: partsUsed | 0x200l); 05576: if(!(puzzle & 0x400482400000ll)) 05577: doSolve(23, 0x800000ll, puzzle | 0x400482400000ll, 05578: partsUsed | 0x200l); 05579: if(!(puzzle & 0x2002480400000ll)) 05580: doSolve(23, 0x800000ll, puzzle | 0x2002480400000ll, 05581: partsUsed | 0x200l); 05582: if(!(puzzle & 0x2400480400000ll)) 05583: doSolve(23, 0x800000ll, puzzle | 0x2400480400000ll, 05584: partsUsed | 0x200l); 05585: if(!(puzzle & 0x82480400000ll)) 05586: doSolve(23, 0x800000ll, puzzle | 0x82480400000ll, 05587: partsUsed | 0x200l); 05588: } 05589: if(!(puzzle & 0x482400400000ll)) 05590: doSolve(23, 0x800000ll, puzzle | 0x482400400000ll, 05591: partsUsed | 0x200l); 05592: if(!(puzzle & 0x801800c00000ll)) 05593: doSolve(23, 0x800000ll, puzzle | 0x801800c00000ll, 05594: partsUsed | 0x200l); 05595: if(!(puzzle & 0x801c00400000ll)) 05596: doSolve(23, 0x800000ll, puzzle | 0x801c00400000ll, 05597: partsUsed | 0x200l); 05598: piece10at22: 05599: if (partsUsed & 0x400l) goto piece11at22; 05600: if (!(puzzle & 0x2400400000ll)) { 05601: if(!(puzzle & 0x402402400000ll)) 05602: doSolve(23, 0x800000ll, puzzle | 0x402402400000ll, 05603: partsUsed | 0x400l); 05604: if(!(puzzle & 0x2402400400000ll)) 05605: doSolve(23, 0x800000ll, puzzle | 0x2402400400000ll, 05606: partsUsed | 0x400l); 05607: if(!(puzzle & 0x2002402400000ll)) 05608: doSolve(23, 0x800000ll, puzzle | 0x2002402400000ll, 05609: partsUsed | 0x400l); 05610: } 05611: if (!(puzzle & 0x4c00000ll)) { 05612: if(!(puzzle & 0xdc00000ll)) 05613: doSolve(23, 0x800000ll, puzzle | 0xdc00000ll, 05614: partsUsed | 0x400l); 05615: if(!(puzzle & 0x7c00000ll)) 05616: doSolve(23, 0x800000ll, puzzle | 0x7c00000ll, 05617: partsUsed | 0x400l); 05618: if(!(puzzle & 0xec00000ll)) 05619: doSolve(23, 0x800000ll, puzzle | 0xec00000ll, 05620: partsUsed | 0x400l); 05621: } 05622: if (!(puzzle & 0xc00400000ll)) { 05623: if(!(puzzle & 0x800c00c00000ll)) 05624: doSolve(23, 0x800000ll, puzzle | 0x800c00c00000ll, 05625: partsUsed | 0x400l); 05626: if(!(puzzle & 0x400c00c00000ll)) 05627: doSolve(23, 0x800000ll, puzzle | 0x400c00c00000ll, 05628: partsUsed | 0x400l); 05629: if(!(puzzle & 0x1c00c00000ll)) 05630: doSolve(23, 0x800000ll, puzzle | 0x1c00c00000ll, 05631: partsUsed | 0x400l); 05632: if(!(puzzle & 0xc00c00400000ll)) 05633: doSolve(23, 0x800000ll, puzzle | 0xc00c00400000ll, 05634: partsUsed | 0x400l); 05635: if(!(puzzle & 0xc01c00000ll)) 05636: doSolve(23, 0x800000ll, puzzle | 0xc01c00000ll, 05637: partsUsed | 0x400l); 05638: } 05639: if(!(puzzle & 0x480480400000ll)) 05640: doSolve(23, 0x800000ll, puzzle | 0x480480400000ll, 05641: partsUsed | 0x400l); 05642: if(!(puzzle & 0x2482400000ll)) 05643: doSolve(23, 0x800000ll, puzzle | 0x2482400000ll, 05644: partsUsed | 0x400l); 05645: if(!(puzzle & 0x1801c00000ll)) 05646: doSolve(23, 0x800000ll, puzzle | 0x1801c00000ll, 05647: partsUsed | 0x400l); 05648: piece11at22: 05649: if (partsUsed & 0x800l) goto piece12at22; 05650: if (!(puzzle & 0xc00400000ll)) { 05651: if(!(puzzle & 0xd80400000ll)) 05652: doSolve(23, 0x800000ll, puzzle | 0xd80400000ll, 05653: partsUsed | 0x800l); 05654: if(!(puzzle & 0xd00c00000ll)) 05655: doSolve(23, 0x800000ll, puzzle | 0xd00c00000ll, 05656: partsUsed | 0x800l); 05657: if(!(puzzle & 0xc80c00000ll)) 05658: doSolve(23, 0x800000ll, puzzle | 0xc80c00000ll, 05659: partsUsed | 0x800l); 05660: if(!(puzzle & 0x2c00c00000ll)) 05661: doSolve(23, 0x800000ll, puzzle | 0x2c00c00000ll, 05662: partsUsed | 0x800l); 05663: if(!(puzzle & 0x2c02400000ll)) 05664: doSolve(23, 0x800000ll, puzzle | 0x2c02400000ll, 05665: partsUsed | 0x800l); 05666: if(!(puzzle & 0xc02c00000ll)) 05667: doSolve(23, 0x800000ll, puzzle | 0xc02c00000ll, 05668: partsUsed | 0x800l); 05669: if(!(puzzle & 0xc04c00000ll)) 05670: doSolve(23, 0x800000ll, puzzle | 0xc04c00000ll, 05671: partsUsed | 0x800l); 05672: if(!(puzzle & 0x4c00c00000ll)) 05673: doSolve(23, 0x800000ll, puzzle | 0x4c00c00000ll, 05674: partsUsed | 0x800l); 05675: if(!(puzzle & 0x6c00400000ll)) 05676: doSolve(23, 0x800000ll, puzzle | 0x6c00400000ll, 05677: partsUsed | 0x800l); 05678: } 05679: if (!(puzzle & 0x6400000ll)) { 05680: if(!(puzzle & 0x406c00000ll)) 05681: doSolve(23, 0x800000ll, puzzle | 0x406c00000ll, 05682: partsUsed | 0x800l); 05683: if(!(puzzle & 0x6006400000ll)) 05684: doSolve(23, 0x800000ll, puzzle | 0x6006400000ll, 05685: partsUsed | 0x800l); 05686: if(!(puzzle & 0x2406400000ll)) 05687: doSolve(23, 0x800000ll, puzzle | 0x2406400000ll, 05688: partsUsed | 0x800l); 05689: if(!(puzzle & 0x4006c00000ll)) 05690: doSolve(23, 0x800000ll, puzzle | 0x4006c00000ll, 05691: partsUsed | 0x800l); 05692: if(!(puzzle & 0x806c00000ll)) 05693: doSolve(23, 0x800000ll, puzzle | 0x806c00000ll, 05694: partsUsed | 0x800l); 05695: if(!(puzzle & 0x2006c00000ll)) 05696: doSolve(23, 0x800000ll, puzzle | 0x2006c00000ll, 05697: partsUsed | 0x800l); 05698: } 05699: if(!(puzzle & 0x4804c00000ll)) 05700: doSolve(23, 0x800000ll, puzzle | 0x4804c00000ll, 05701: partsUsed | 0x800l); 05702: if(!(puzzle & 0x6402400000ll)) 05703: doSolve(23, 0x800000ll, puzzle | 0x6402400000ll, 05704: partsUsed | 0x800l); 05705: if(!(puzzle & 0x2402c00000ll)) 05706: doSolve(23, 0x800000ll, puzzle | 0x2402c00000ll, 05707: partsUsed | 0x800l); 05708: piece12at22: 05709: break; 05710: case 23: 05711: if (partsUsed & 0x2l) goto piece2at23; 05712: if(!(puzzle & 0x400c01800000ll)) 05713: doSolve(24, 0x1000000ll, puzzle | 0x400c01800000ll, 05714: partsUsed | 0x2l); 05715: if(!(puzzle & 0x120900800000ll)) 05716: doSolve(24, 0x1000000ll, puzzle | 0x120900800000ll, 05717: partsUsed | 0x2l); 05718: if(!(puzzle & 0x100904800000ll)) 05719: doSolve(24, 0x1000000ll, puzzle | 0x100904800000ll, 05720: partsUsed | 0x2l); 05721: piece2at23: 05722: if (partsUsed & 0x4l) goto piece3at23; 05723: if (!(puzzle & 0x800800800000ll)) { 05724: if(!(puzzle & 0x800920800000ll)) 05725: doSolve(24, 0x1000000ll, puzzle | 0x800920800000ll, 05726: partsUsed | 0x4l); 05727: if(!(puzzle & 0x4900800800000ll)) 05728: doSolve(24, 0x1000000ll, puzzle | 0x4900800800000ll, 05729: partsUsed | 0x4l); 05730: if(!(puzzle & 0x1c00800800000ll)) 05731: doSolve(24, 0x1000000ll, puzzle | 0x1c00800800000ll, 05732: partsUsed | 0x4l); 05733: } 05734: piece3at23: 05735: if (partsUsed & 0x8l) goto piece4at23; 05736: if(!(puzzle & 0x20920800000ll)) 05737: doSolve(24, 0x1000000ll, puzzle | 0x20920800000ll, 05738: partsUsed | 0x8l); 05739: if(!(puzzle & 0x900804800000ll)) 05740: doSolve(24, 0x1000000ll, puzzle | 0x900804800000ll, 05741: partsUsed | 0x8l); 05742: if(!(puzzle & 0xc00801800000ll)) 05743: doSolve(24, 0x1000000ll, puzzle | 0xc00801800000ll, 05744: partsUsed | 0x8l); 05745: piece4at23: 05746: if (partsUsed & 0x10l) goto piece5at23; 05747: if (!(puzzle & 0x800800800800000ll)) { 05748: if(!(puzzle & 0x900800900800000ll)) 05749: doSolve(24, 0x1000000ll, puzzle | 0x900800900800000ll, 05750: partsUsed | 0x10l); 05751: if(!(puzzle & 0xc00800c00800000ll)) 05752: doSolve(24, 0x1000000ll, puzzle | 0xc00800c00800000ll, 05753: partsUsed | 0x10l); 05754: if(!(puzzle & 0x4800804800800000ll)) 05755: doSolve(24, 0x1000000ll, puzzle | 0x4800804800800000ll, 05756: partsUsed | 0x10l); 05757: if(!(puzzle & 0x804800804800000ll)) 05758: doSolve(24, 0x1000000ll, puzzle | 0x804800804800000ll, 05759: partsUsed | 0x10l); 05760: if(!(puzzle & 0x1800801800800000ll)) 05761: doSolve(24, 0x1000000ll, puzzle | 0x1800801800800000ll, 05762: partsUsed | 0x10l); 05763: if(!(puzzle & 0x801800801800000ll)) 05764: doSolve(24, 0x1000000ll, puzzle | 0x801800801800000ll, 05765: partsUsed | 0x10l); 05766: } 05767: if(!(puzzle & 0x4004804004800000ll)) 05768: doSolve(24, 0x1000000ll, puzzle | 0x4004804004800000ll, 05769: partsUsed | 0x10l); 05770: if(!(puzzle & 0x1001801001800000ll)) 05771: doSolve(24, 0x1000000ll, puzzle | 0x1001801001800000ll, 05772: partsUsed | 0x10l); 05773: piece5at23: 05774: if (partsUsed & 0x20l) goto piece6at23; 05775: if (!(puzzle & 0x800800800800000ll)) { 05776: if(!(puzzle & 0x900800800800000ll)) 05777: doSolve(24, 0x1000000ll, puzzle | 0x900800800800000ll, 05778: partsUsed | 0x20l); 05779: if(!(puzzle & 0xc00800800800000ll)) 05780: doSolve(24, 0x1000000ll, puzzle | 0xc00800800800000ll, 05781: partsUsed | 0x20l); 05782: if(!(puzzle & 0x800800804800000ll)) 05783: doSolve(24, 0x1000000ll, puzzle | 0x800800804800000ll, 05784: partsUsed | 0x20l); 05785: if(!(puzzle & 0x4800800800800000ll)) 05786: doSolve(24, 0x1000000ll, puzzle | 0x4800800800800000ll, 05787: partsUsed | 0x20l); 05788: if(!(puzzle & 0x800800801800000ll)) 05789: doSolve(24, 0x1000000ll, puzzle | 0x800800801800000ll, 05790: partsUsed | 0x20l); 05791: if(!(puzzle & 0x1800800800800000ll)) 05792: doSolve(24, 0x1000000ll, puzzle | 0x1800800800800000ll, 05793: partsUsed | 0x20l); 05794: } 05795: if(!(puzzle & 0x4004004004800000ll)) 05796: doSolve(24, 0x1000000ll, puzzle | 0x4004004004800000ll, 05797: partsUsed | 0x20l); 05798: if(!(puzzle & 0x1001001001800000ll)) 05799: doSolve(24, 0x1000000ll, puzzle | 0x1001001001800000ll, 05800: partsUsed | 0x20l); 05801: piece6at23: 05802: if (partsUsed & 0x40l) goto piece7at23; 05803: if (!(puzzle & 0x800800800800000ll)) { 05804: if(!(puzzle & 0x800900800800000ll)) 05805: doSolve(24, 0x1000000ll, puzzle | 0x800900800800000ll, 05806: partsUsed | 0x40l); 05807: if(!(puzzle & 0x800800c00800000ll)) 05808: doSolve(24, 0x1000000ll, puzzle | 0x800800c00800000ll, 05809: partsUsed | 0x40l); 05810: if(!(puzzle & 0x800c00800800000ll)) 05811: doSolve(24, 0x1000000ll, puzzle | 0x800c00800800000ll, 05812: partsUsed | 0x40l); 05813: if(!(puzzle & 0x800804800800000ll)) 05814: doSolve(24, 0x1000000ll, puzzle | 0x800804800800000ll, 05815: partsUsed | 0x40l); 05816: if(!(puzzle & 0x804800800800000ll)) 05817: doSolve(24, 0x1000000ll, puzzle | 0x804800800800000ll, 05818: partsUsed | 0x40l); 05819: if(!(puzzle & 0x800801800800000ll)) 05820: doSolve(24, 0x1000000ll, puzzle | 0x800801800800000ll, 05821: partsUsed | 0x40l); 05822: if(!(puzzle & 0x801800800800000ll)) 05823: doSolve(24, 0x1000000ll, puzzle | 0x801800800800000ll, 05824: partsUsed | 0x40l); 05825: } 05826: if(!(puzzle & 0x4920800000ll)) 05827: doSolve(24, 0x1000000ll, puzzle | 0x4920800000ll, 05828: partsUsed | 0x40l); 05829: if(!(puzzle & 0x800800900800000ll)) 05830: doSolve(24, 0x1000000ll, puzzle | 0x800800900800000ll, 05831: partsUsed | 0x40l); 05832: piece7at23: 05833: if (partsUsed & 0x80l) goto piece8at23; 05834: if(!(puzzle & 0x4800804800000ll)) 05835: doSolve(24, 0x1000000ll, puzzle | 0x4800804800000ll, 05836: partsUsed | 0x80l); 05837: if(!(puzzle & 0x4804004800000ll)) 05838: doSolve(24, 0x1000000ll, puzzle | 0x4804004800000ll, 05839: partsUsed | 0x80l); 05840: if(!(puzzle & 0x1801001800000ll)) 05841: doSolve(24, 0x1000000ll, puzzle | 0x1801001800000ll, 05842: partsUsed | 0x80l); 05843: if(!(puzzle & 0x1800801800000ll)) 05844: doSolve(24, 0x1000000ll, puzzle | 0x1800801800000ll, 05845: partsUsed | 0x80l); 05846: piece8at23: 05847: if (partsUsed & 0x100l) goto piece9at23; 05848: if(!(puzzle & 0xc80800000ll)) 05849: doSolve(24, 0x1000000ll, puzzle | 0xc80800000ll, 05850: partsUsed | 0x100l); 05851: if(!(puzzle & 0xc04800000ll)) 05852: doSolve(24, 0x1000000ll, puzzle | 0xc04800000ll, 05853: partsUsed | 0x100l); 05854: if(!(puzzle & 0x1201800000ll)) 05855: doSolve(24, 0x1000000ll, puzzle | 0x1201800000ll, 05856: partsUsed | 0x100l); 05857: if(!(puzzle & 0x1005800000ll)) 05858: doSolve(24, 0x1000000ll, puzzle | 0x1005800000ll, 05859: partsUsed | 0x100l); 05860: if(!(puzzle & 0xb00800000ll)) 05861: doSolve(24, 0x1000000ll, puzzle | 0xb00800000ll, 05862: partsUsed | 0x100l); 05863: if(!(puzzle & 0x2006800000ll)) 05864: doSolve(24, 0x1000000ll, puzzle | 0x2006800000ll, 05865: partsUsed | 0x100l); 05866: if(!(puzzle & 0x6800800000ll)) 05867: doSolve(24, 0x1000000ll, puzzle | 0x6800800000ll, 05868: partsUsed | 0x100l); 05869: if(!(puzzle & 0x4801800000ll)) 05870: doSolve(24, 0x1000000ll, puzzle | 0x4801800000ll, 05871: partsUsed | 0x100l); 05872: if(!(puzzle & 0x9800800000ll)) 05873: doSolve(24, 0x1000000ll, puzzle | 0x9800800000ll, 05874: partsUsed | 0x100l); 05875: if(!(puzzle & 0xc004800000ll)) 05876: doSolve(24, 0x1000000ll, puzzle | 0xc004800000ll, 05877: partsUsed | 0x100l); 05878: if(!(puzzle & 0x80c800000ll)) 05879: doSolve(24, 0x1000000ll, puzzle | 0x80c800000ll, 05880: partsUsed | 0x100l); 05881: if(!(puzzle & 0x8009800000ll)) 05882: doSolve(24, 0x1000000ll, puzzle | 0x8009800000ll, 05883: partsUsed | 0x100l); 05884: piece9at23: 05885: if (partsUsed & 0x200l) goto piece10at23; 05886: if (!(puzzle & 0x900800000ll)) { 05887: if(!(puzzle & 0x100920800000ll)) 05888: doSolve(24, 0x1000000ll, puzzle | 0x100920800000ll, 05889: partsUsed | 0x200l); 05890: if(!(puzzle & 0x800904800000ll)) 05891: doSolve(24, 0x1000000ll, puzzle | 0x800904800000ll, 05892: partsUsed | 0x200l); 05893: if(!(puzzle & 0x4004900800000ll)) 05894: doSolve(24, 0x1000000ll, puzzle | 0x4004900800000ll, 05895: partsUsed | 0x200l); 05896: if(!(puzzle & 0x4800900800000ll)) 05897: doSolve(24, 0x1000000ll, puzzle | 0x4800900800000ll, 05898: partsUsed | 0x200l); 05899: if(!(puzzle & 0x104900800000ll)) 05900: doSolve(24, 0x1000000ll, puzzle | 0x104900800000ll, 05901: partsUsed | 0x200l); 05902: } 05903: if (!(puzzle & 0x800800800000ll)) { 05904: if(!(puzzle & 0x904800800000ll)) 05905: doSolve(24, 0x1000000ll, puzzle | 0x904800800000ll, 05906: partsUsed | 0x200l); 05907: if(!(puzzle & 0x800c01800000ll)) 05908: doSolve(24, 0x1000000ll, puzzle | 0x800c01800000ll, 05909: partsUsed | 0x200l); 05910: if(!(puzzle & 0x1800c00800000ll)) 05911: doSolve(24, 0x1000000ll, puzzle | 0x1800c00800000ll, 05912: partsUsed | 0x200l); 05913: if(!(puzzle & 0xc01800800000ll)) 05914: doSolve(24, 0x1000000ll, puzzle | 0xc01800800000ll, 05915: partsUsed | 0x200l); 05916: } 05917: if(!(puzzle & 0x401c00800000ll)) 05918: doSolve(24, 0x1000000ll, puzzle | 0x401c00800000ll, 05919: partsUsed | 0x200l); 05920: if(!(puzzle & 0x1001c00800000ll)) 05921: doSolve(24, 0x1000000ll, puzzle | 0x1001c00800000ll, 05922: partsUsed | 0x200l); 05923: piece10at23: 05924: if (partsUsed & 0x400l) goto piece11at23; 05925: if (!(puzzle & 0x4800800000ll)) { 05926: if(!(puzzle & 0x804804800000ll)) 05927: doSolve(24, 0x1000000ll, puzzle | 0x804804800000ll, 05928: partsUsed | 0x400l); 05929: if(!(puzzle & 0x4804800800000ll)) 05930: doSolve(24, 0x1000000ll, puzzle | 0x4804800800000ll, 05931: partsUsed | 0x400l); 05932: if(!(puzzle & 0x4004804800000ll)) 05933: doSolve(24, 0x1000000ll, puzzle | 0x4004804800000ll, 05934: partsUsed | 0x400l); 05935: } 05936: if (!(puzzle & 0x1800800000ll)) { 05937: if(!(puzzle & 0x1001801800000ll)) 05938: doSolve(24, 0x1000000ll, puzzle | 0x1001801800000ll, 05939: partsUsed | 0x400l); 05940: if(!(puzzle & 0x801801800000ll)) 05941: doSolve(24, 0x1000000ll, puzzle | 0x801801800000ll, 05942: partsUsed | 0x400l); 05943: if(!(puzzle & 0x1801800800000ll)) 05944: doSolve(24, 0x1000000ll, puzzle | 0x1801800800000ll, 05945: partsUsed | 0x400l); 05946: } 05947: if(!(puzzle & 0x900900800000ll)) 05948: doSolve(24, 0x1000000ll, puzzle | 0x900900800000ll, 05949: partsUsed | 0x400l); 05950: if(!(puzzle & 0x4904800000ll)) 05951: doSolve(24, 0x1000000ll, puzzle | 0x4904800000ll, 05952: partsUsed | 0x400l); 05953: if(!(puzzle & 0xf800000ll)) 05954: doSolve(24, 0x1000000ll, puzzle | 0xf800000ll, 05955: partsUsed | 0x400l); 05956: if(!(puzzle & 0x1c01800000ll)) 05957: doSolve(24, 0x1000000ll, puzzle | 0x1c01800000ll, 05958: partsUsed | 0x400l); 05959: if(!(puzzle & 0xc00c00800000ll)) 05960: doSolve(24, 0x1000000ll, puzzle | 0xc00c00800000ll, 05961: partsUsed | 0x400l); 05962: piece11at23: 05963: if (partsUsed & 0x800l) goto piece12at23; 05964: if (!(puzzle & 0x900800000ll)) { 05965: if(!(puzzle & 0xd80800000ll)) 05966: doSolve(24, 0x1000000ll, puzzle | 0xd80800000ll, 05967: partsUsed | 0x800l); 05968: if(!(puzzle & 0x1b00800000ll)) 05969: doSolve(24, 0x1000000ll, puzzle | 0x1b00800000ll, 05970: partsUsed | 0x800l); 05971: if(!(puzzle & 0x1901800000ll)) 05972: doSolve(24, 0x1000000ll, puzzle | 0x1901800000ll, 05973: partsUsed | 0x800l); 05974: } 05975: if (!(puzzle & 0x801800000ll)) { 05976: if(!(puzzle & 0x1a01800000ll)) 05977: doSolve(24, 0x1000000ll, puzzle | 0x1a01800000ll, 05978: partsUsed | 0x800l); 05979: if(!(puzzle & 0x80d800000ll)) 05980: doSolve(24, 0x1000000ll, puzzle | 0x80d800000ll, 05981: partsUsed | 0x800l); 05982: if(!(puzzle & 0x5801800000ll)) 05983: doSolve(24, 0x1000000ll, puzzle | 0x5801800000ll, 05984: partsUsed | 0x800l); 05985: if(!(puzzle & 0x1805800000ll)) 05986: doSolve(24, 0x1000000ll, puzzle | 0x1805800000ll, 05987: partsUsed | 0x800l); 05988: if(!(puzzle & 0x1809800000ll)) 05989: doSolve(24, 0x1000000ll, puzzle | 0x1809800000ll, 05990: partsUsed | 0x800l); 05991: if(!(puzzle & 0x9801800000ll)) 05992: doSolve(24, 0x1000000ll, puzzle | 0x9801800000ll, 05993: partsUsed | 0x800l); 05994: if(!(puzzle & 0x4805800000ll)) 05995: doSolve(24, 0x1000000ll, puzzle | 0x4805800000ll, 05996: partsUsed | 0x800l); 05997: } 05998: if (!(puzzle & 0x6000800000ll)) { 05999: if(!(puzzle & 0x6c00800000ll)) 06000: doSolve(24, 0x1000000ll, puzzle | 0x6c00800000ll, 06001: partsUsed | 0x800l); 06002: if(!(puzzle & 0x6804800000ll)) 06003: doSolve(24, 0x1000000ll, puzzle | 0x6804800000ll, 06004: partsUsed | 0x800l); 06005: if(!(puzzle & 0x6006800000ll)) 06006: doSolve(24, 0x1000000ll, puzzle | 0x6006800000ll, 06007: partsUsed | 0x800l); 06008: } 06009: if (!(puzzle & 0x4004800000ll)) { 06010: if(!(puzzle & 0x4c04800000ll)) 06011: doSolve(24, 0x1000000ll, puzzle | 0x4c04800000ll, 06012: partsUsed | 0x800l); 06013: if(!(puzzle & 0x4806800000ll)) 06014: doSolve(24, 0x1000000ll, puzzle | 0x4806800000ll, 06015: partsUsed | 0x800l); 06016: if(!(puzzle & 0xc00c800000ll)) 06017: doSolve(24, 0x1000000ll, puzzle | 0xc00c800000ll, 06018: partsUsed | 0x800l); 06019: if(!(puzzle & 0x5804800000ll)) 06020: doSolve(24, 0x1000000ll, puzzle | 0x5804800000ll, 06021: partsUsed | 0x800l); 06022: if(!(puzzle & 0x480c800000ll)) 06023: doSolve(24, 0x1000000ll, puzzle | 0x480c800000ll, 06024: partsUsed | 0x800l); 06025: if(!(puzzle & 0x400d800000ll)) 06026: doSolve(24, 0x1000000ll, puzzle | 0x400d800000ll, 06027: partsUsed | 0x800l); 06028: if(!(puzzle & 0xc804800000ll)) 06029: doSolve(24, 0x1000000ll, puzzle | 0xc804800000ll, 06030: partsUsed | 0x800l); 06031: } 06032: if (!(puzzle & 0x9800000ll)) { 06033: if(!(puzzle & 0x9009800000ll)) 06034: doSolve(24, 0x1000000ll, puzzle | 0x9009800000ll, 06035: partsUsed | 0x800l); 06036: if(!(puzzle & 0x800d800000ll)) 06037: doSolve(24, 0x1000000ll, puzzle | 0x800d800000ll, 06038: partsUsed | 0x800l); 06039: if(!(puzzle & 0x100d800000ll)) 06040: doSolve(24, 0x1000000ll, puzzle | 0x100d800000ll, 06041: partsUsed | 0x800l); 06042: } 06043: if(!(puzzle & 0xd800800000ll)) 06044: doSolve(24, 0x1000000ll, puzzle | 0xd800800000ll, 06045: partsUsed | 0x800l); 06046: piece12at23: 06047: break; 06048: case 24: 06049: if (partsUsed & 0x2l) goto piece2at24; 06050: if(!(puzzle & 0xc01801000000ll)) 06051: doSolve(25, 0x2000000ll, puzzle | 0xc01801000000ll, 06052: partsUsed | 0x2l); 06053: if(!(puzzle & 0x241201000000ll)) 06054: doSolve(25, 0x2000000ll, puzzle | 0x241201000000ll, 06055: partsUsed | 0x2l); 06056: if(!(puzzle & 0x201209000000ll)) 06057: doSolve(25, 0x2000000ll, puzzle | 0x201209000000ll, 06058: partsUsed | 0x2l); 06059: piece2at24: 06060: if (partsUsed & 0x4l) goto piece3at24; 06061: if (!(puzzle & 0x1001001000000ll)) { 06062: if(!(puzzle & 0x1001241000000ll)) 06063: doSolve(25, 0x2000000ll, puzzle | 0x1001241000000ll, 06064: partsUsed | 0x4l); 06065: if(!(puzzle & 0x9201001000000ll)) 06066: doSolve(25, 0x2000000ll, puzzle | 0x9201001000000ll, 06067: partsUsed | 0x4l); 06068: if(!(puzzle & 0x1001c01000000ll)) 06069: doSolve(25, 0x2000000ll, puzzle | 0x1001c01000000ll, 06070: partsUsed | 0x4l); 06071: } 06072: piece3at24: 06073: if (partsUsed & 0x8l) goto piece4at24; 06074: if(!(puzzle & 0x401c01000000ll)) 06075: doSolve(25, 0x2000000ll, puzzle | 0x401c01000000ll, 06076: partsUsed | 0x8l); 06077: if(!(puzzle & 0x41241000000ll)) 06078: doSolve(25, 0x2000000ll, puzzle | 0x41241000000ll, 06079: partsUsed | 0x8l); 06080: if(!(puzzle & 0x1201009000000ll)) 06081: doSolve(25, 0x2000000ll, puzzle | 0x1201009000000ll, 06082: partsUsed | 0x8l); 06083: piece4at24: 06084: if (partsUsed & 0x10l) goto piece5at24; 06085: if (!(puzzle & 0x1001001001000000ll)) { 06086: if(!(puzzle & 0x1201001201000000ll)) 06087: doSolve(25, 0x2000000ll, puzzle | 0x1201001201000000ll, 06088: partsUsed | 0x10l); 06089: if(!(puzzle & 0x1801001801000000ll)) 06090: doSolve(25, 0x2000000ll, puzzle | 0x1801001801000000ll, 06091: partsUsed | 0x10l); 06092: if(!(puzzle & 0x9001009001000000ll)) 06093: doSolve(25, 0x2000000ll, puzzle | 0x9001009001000000ll, 06094: partsUsed | 0x10l); 06095: if(!(puzzle & 0x1009001009000000ll)) 06096: doSolve(25, 0x2000000ll, puzzle | 0x1009001009000000ll, 06097: partsUsed | 0x10l); 06098: } 06099: if(!(puzzle & 0x8009008009000000ll)) 06100: doSolve(25, 0x2000000ll, puzzle | 0x8009008009000000ll, 06101: partsUsed | 0x10l); 06102: piece5at24: 06103: if (partsUsed & 0x20l) goto piece6at24; 06104: if (!(puzzle & 0x1001001001000000ll)) { 06105: if(!(puzzle & 0x1201001001000000ll)) 06106: doSolve(25, 0x2000000ll, puzzle | 0x1201001001000000ll, 06107: partsUsed | 0x20l); 06108: if(!(puzzle & 0x1801001001000000ll)) 06109: doSolve(25, 0x2000000ll, puzzle | 0x1801001001000000ll, 06110: partsUsed | 0x20l); 06111: if(!(puzzle & 0x1001001009000000ll)) 06112: doSolve(25, 0x2000000ll, puzzle | 0x1001001009000000ll, 06113: partsUsed | 0x20l); 06114: if(!(puzzle & 0x9001001001000000ll)) 06115: doSolve(25, 0x2000000ll, puzzle | 0x9001001001000000ll, 06116: partsUsed | 0x20l); 06117: } 06118: if(!(puzzle & 0x8008008009000000ll)) 06119: doSolve(25, 0x2000000ll, puzzle | 0x8008008009000000ll, 06120: partsUsed | 0x20l); 06121: piece6at24: 06122: if (partsUsed & 0x40l) goto piece7at24; 06123: if (!(puzzle & 0x1001001001000000ll)) { 06124: if(!(puzzle & 0x1001201001000000ll)) 06125: doSolve(25, 0x2000000ll, puzzle | 0x1001201001000000ll, 06126: partsUsed | 0x40l); 06127: if(!(puzzle & 0x1001001801000000ll)) 06128: doSolve(25, 0x2000000ll, puzzle | 0x1001001801000000ll, 06129: partsUsed | 0x40l); 06130: if(!(puzzle & 0x1001801001000000ll)) 06131: doSolve(25, 0x2000000ll, puzzle | 0x1001801001000000ll, 06132: partsUsed | 0x40l); 06133: if(!(puzzle & 0x1001009001000000ll)) 06134: doSolve(25, 0x2000000ll, puzzle | 0x1001009001000000ll, 06135: partsUsed | 0x40l); 06136: if(!(puzzle & 0x1009001001000000ll)) 06137: doSolve(25, 0x2000000ll, puzzle | 0x1009001001000000ll, 06138: partsUsed | 0x40l); 06139: } 06140: if(!(puzzle & 0x9241000000ll)) 06141: doSolve(25, 0x2000000ll, puzzle | 0x9241000000ll, 06142: partsUsed | 0x40l); 06143: if(!(puzzle & 0x1001001201000000ll)) 06144: doSolve(25, 0x2000000ll, puzzle | 0x1001001201000000ll, 06145: partsUsed | 0x40l); 06146: piece7at24: 06147: if (partsUsed & 0x80l) goto piece8at24; 06148: if(!(puzzle & 0x9001009000000ll)) 06149: doSolve(25, 0x2000000ll, puzzle | 0x9001009000000ll, 06150: partsUsed | 0x80l); 06151: if(!(puzzle & 0x9008009000000ll)) 06152: doSolve(25, 0x2000000ll, puzzle | 0x9008009000000ll, 06153: partsUsed | 0x80l); 06154: piece8at24: 06155: if (partsUsed & 0x100l) goto piece9at24; 06156: if(!(puzzle & 0x1901000000ll)) 06157: doSolve(25, 0x2000000ll, puzzle | 0x1901000000ll, 06158: partsUsed | 0x100l); 06159: if(!(puzzle & 0x1809000000ll)) 06160: doSolve(25, 0x2000000ll, puzzle | 0x1809000000ll, 06161: partsUsed | 0x100l); 06162: if(!(puzzle & 0x400d000000ll)) 06163: doSolve(25, 0x2000000ll, puzzle | 0x400d000000ll, 06164: partsUsed | 0x100l); 06165: if(!(puzzle & 0xd001000000ll)) 06166: doSolve(25, 0x2000000ll, puzzle | 0xd001000000ll, 06167: partsUsed | 0x100l); 06168: piece9at24: 06169: if (partsUsed & 0x200l) goto piece10at24; 06170: if (!(puzzle & 0x1201000000ll)) { 06171: if(!(puzzle & 0x201241000000ll)) 06172: doSolve(25, 0x2000000ll, puzzle | 0x201241000000ll, 06173: partsUsed | 0x200l); 06174: if(!(puzzle & 0x1001209000000ll)) 06175: doSolve(25, 0x2000000ll, puzzle | 0x1001209000000ll, 06176: partsUsed | 0x200l); 06177: if(!(puzzle & 0x8009201000000ll)) 06178: doSolve(25, 0x2000000ll, puzzle | 0x8009201000000ll, 06179: partsUsed | 0x200l); 06180: if(!(puzzle & 0x9001201000000ll)) 06181: doSolve(25, 0x2000000ll, puzzle | 0x9001201000000ll, 06182: partsUsed | 0x200l); 06183: if(!(puzzle & 0x209201000000ll)) 06184: doSolve(25, 0x2000000ll, puzzle | 0x209201000000ll, 06185: partsUsed | 0x200l); 06186: } 06187: if(!(puzzle & 0x1209001000000ll)) 06188: doSolve(25, 0x2000000ll, puzzle | 0x1209001000000ll, 06189: partsUsed | 0x200l); 06190: if(!(puzzle & 0x801c01000000ll)) 06191: doSolve(25, 0x2000000ll, puzzle | 0x801c01000000ll, 06192: partsUsed | 0x200l); 06193: piece10at24: 06194: if (partsUsed & 0x400l) goto piece11at24; 06195: if (!(puzzle & 0x1001001000000ll)) { 06196: if(!(puzzle & 0x1801801000000ll)) 06197: doSolve(25, 0x2000000ll, puzzle | 0x1801801000000ll, 06198: partsUsed | 0x400l); 06199: if(!(puzzle & 0x1009009000000ll)) 06200: doSolve(25, 0x2000000ll, puzzle | 0x1009009000000ll, 06201: partsUsed | 0x400l); 06202: if(!(puzzle & 0x9009001000000ll)) 06203: doSolve(25, 0x2000000ll, puzzle | 0x9009001000000ll, 06204: partsUsed | 0x400l); 06205: } 06206: if(!(puzzle & 0x1201201000000ll)) 06207: doSolve(25, 0x2000000ll, puzzle | 0x1201201000000ll, 06208: partsUsed | 0x400l); 06209: if(!(puzzle & 0x9209000000ll)) 06210: doSolve(25, 0x2000000ll, puzzle | 0x9209000000ll, 06211: partsUsed | 0x400l); 06212: if(!(puzzle & 0x8009009000000ll)) 06213: doSolve(25, 0x2000000ll, puzzle | 0x8009009000000ll, 06214: partsUsed | 0x400l); 06215: piece11at24: 06216: if (partsUsed & 0x800l) goto piece12at24; 06217: if (!(puzzle & 0x1801000000ll)) { 06218: if(!(puzzle & 0x1b01000000ll)) 06219: doSolve(25, 0x2000000ll, puzzle | 0x1b01000000ll, 06220: partsUsed | 0x800l); 06221: if(!(puzzle & 0xd801000000ll)) 06222: doSolve(25, 0x2000000ll, puzzle | 0xd801000000ll, 06223: partsUsed | 0x800l); 06224: if(!(puzzle & 0x9809000000ll)) 06225: doSolve(25, 0x2000000ll, puzzle | 0x9809000000ll, 06226: partsUsed | 0x800l); 06227: } 06228: if (!(puzzle & 0x8009000000ll)) { 06229: if(!(puzzle & 0xd009000000ll)) 06230: doSolve(25, 0x2000000ll, puzzle | 0xd009000000ll, 06231: partsUsed | 0x800l); 06232: if(!(puzzle & 0xc00d000000ll)) 06233: doSolve(25, 0x2000000ll, puzzle | 0xc00d000000ll, 06234: partsUsed | 0x800l); 06235: if(!(puzzle & 0x900d000000ll)) 06236: doSolve(25, 0x2000000ll, puzzle | 0x900d000000ll, 06237: partsUsed | 0x800l); 06238: } 06239: piece12at24: 06240: break; 06241: case 25: 06242: if (partsUsed & 0x2l) goto piece2at25; 06243: if(!(puzzle & 0x482402000000ll)) 06244: doSolve(26, 0x4000000ll, puzzle | 0x482402000000ll, 06245: partsUsed | 0x2l); 06246: if(!(puzzle & 0x800c006000000ll)) 06247: doSolve(26, 0x4000000ll, puzzle | 0x800c006000000ll, 06248: partsUsed | 0x2l); 06249: if(!(puzzle & 0xc006002000000ll)) 06250: doSolve(26, 0x4000000ll, puzzle | 0xc006002000000ll, 06251: partsUsed | 0x2l); 06252: piece2at25: 06253: if (partsUsed & 0x4l) goto piece3at25; 06254: if(!(puzzle & 0x400400e000000ll)) 06255: doSolve(26, 0x4000000ll, puzzle | 0x400400e000000ll, 06256: partsUsed | 0x4l); 06257: if(!(puzzle & 0x2002482000000ll)) 06258: doSolve(26, 0x4000000ll, puzzle | 0x2002482000000ll, 06259: partsUsed | 0x4l); 06260: if(!(puzzle & 0x200e002000000ll)) 06261: doSolve(26, 0x4000000ll, puzzle | 0x200e002000000ll, 06262: partsUsed | 0x4l); 06263: piece3at25: 06264: if (partsUsed & 0x8l) goto piece4at25; 06265: if(!(puzzle & 0x82482000000ll)) 06266: doSolve(26, 0x4000000ll, puzzle | 0x82482000000ll, 06267: partsUsed | 0x8l); 06268: if(!(puzzle & 0x800e002000000ll)) 06269: doSolve(26, 0x4000000ll, puzzle | 0x800e002000000ll, 06270: partsUsed | 0x8l); 06271: if(!(puzzle & 0xc004006000000ll)) 06272: doSolve(26, 0x4000000ll, puzzle | 0xc004006000000ll, 06273: partsUsed | 0x8l); 06274: piece4at25: 06275: if (partsUsed & 0x10l) goto piece5at25; 06276: if (!(puzzle & 0x2002002002000000ll)) { 06277: if(!(puzzle & 0x2402002402000000ll)) 06278: doSolve(26, 0x4000000ll, puzzle | 0x2402002402000000ll, 06279: partsUsed | 0x10l); 06280: if(!(puzzle & 0x6002006002000000ll)) 06281: doSolve(26, 0x4000000ll, puzzle | 0x6002006002000000ll, 06282: partsUsed | 0x10l); 06283: if(!(puzzle & 0x2006002006000000ll)) 06284: doSolve(26, 0x4000000ll, puzzle | 0x2006002006000000ll, 06285: partsUsed | 0x10l); 06286: } 06287: if(!(puzzle & 0x4006004006000000ll)) 06288: doSolve(26, 0x4000000ll, puzzle | 0x4006004006000000ll, 06289: partsUsed | 0x10l); 06290: piece5at25: 06291: if (partsUsed & 0x20l) goto piece6at25; 06292: if (!(puzzle & 0x2002002002000000ll)) { 06293: if(!(puzzle & 0x2402002002000000ll)) 06294: doSolve(26, 0x4000000ll, puzzle | 0x2402002002000000ll, 06295: partsUsed | 0x20l); 06296: if(!(puzzle & 0x2002002006000000ll)) 06297: doSolve(26, 0x4000000ll, puzzle | 0x2002002006000000ll, 06298: partsUsed | 0x20l); 06299: if(!(puzzle & 0x6002002002000000ll)) 06300: doSolve(26, 0x4000000ll, puzzle | 0x6002002002000000ll, 06301: partsUsed | 0x20l); 06302: } 06303: if(!(puzzle & 0x2492000000ll)) 06304: doSolve(26, 0x4000000ll, puzzle | 0x2492000000ll, 06305: partsUsed | 0x20l); 06306: if(!(puzzle & 0x4004004006000000ll)) 06307: doSolve(26, 0x4000000ll, puzzle | 0x4004004006000000ll, 06308: partsUsed | 0x20l); 06309: piece6at25: 06310: if (partsUsed & 0x40l) goto piece7at25; 06311: if (!(puzzle & 0x2002002002000000ll)) { 06312: if(!(puzzle & 0x2002402002000000ll)) 06313: doSolve(26, 0x4000000ll, puzzle | 0x2002402002000000ll, 06314: partsUsed | 0x40l); 06315: if(!(puzzle & 0x2002002402000000ll)) 06316: doSolve(26, 0x4000000ll, puzzle | 0x2002002402000000ll, 06317: partsUsed | 0x40l); 06318: if(!(puzzle & 0x2002006002000000ll)) 06319: doSolve(26, 0x4000000ll, puzzle | 0x2002006002000000ll, 06320: partsUsed | 0x40l); 06321: if(!(puzzle & 0x2006002002000000ll)) 06322: doSolve(26, 0x4000000ll, puzzle | 0x2006002002000000ll, 06323: partsUsed | 0x40l); 06324: } 06325: piece7at25: 06326: if (partsUsed & 0x80l) goto piece8at25; 06327: if(!(puzzle & 0x6004006000000ll)) 06328: doSolve(26, 0x4000000ll, puzzle | 0x6004006000000ll, 06329: partsUsed | 0x80l); 06330: if(!(puzzle & 0x6002006000000ll)) 06331: doSolve(26, 0x4000000ll, puzzle | 0x6002006000000ll, 06332: partsUsed | 0x80l); 06333: if(!(puzzle & 0xe00a000000ll)) 06334: doSolve(26, 0x4000000ll, puzzle | 0xe00a000000ll, 06335: partsUsed | 0x80l); 06336: if(!(puzzle & 0xa00e000000ll)) 06337: doSolve(26, 0x4000000ll, puzzle | 0xa00e000000ll, 06338: partsUsed | 0x80l); 06339: piece8at25: 06340: if (partsUsed & 0x100l) goto piece9at25; 06341: if(!(puzzle & 0x4806000000ll)) 06342: doSolve(26, 0x4000000ll, puzzle | 0x4806000000ll, 06343: partsUsed | 0x100l); 06344: if(!(puzzle & 0x2c02000000ll)) 06345: doSolve(26, 0x4000000ll, puzzle | 0x2c02000000ll, 06346: partsUsed | 0x100l); 06347: piece9at25: 06348: if (partsUsed & 0x200l) goto piece10at25; 06349: if(!(puzzle & 0x402482000000ll)) 06350: doSolve(26, 0x4000000ll, puzzle | 0x402482000000ll, 06351: partsUsed | 0x200l); 06352: if(!(puzzle & 0x400c006000000ll)) 06353: doSolve(26, 0x4000000ll, puzzle | 0x400c006000000ll, 06354: partsUsed | 0x200l); 06355: if(!(puzzle & 0x400e002000000ll)) 06356: doSolve(26, 0x4000000ll, puzzle | 0x400e002000000ll, 06357: partsUsed | 0x200l); 06358: piece10at25: 06359: if (partsUsed & 0x400l) goto piece11at25; 06360: if (!(puzzle & 0x2002002000000ll)) { 06361: if(!(puzzle & 0x2402402000000ll)) 06362: doSolve(26, 0x4000000ll, puzzle | 0x2402402000000ll, 06363: partsUsed | 0x400l); 06364: if(!(puzzle & 0x2006006000000ll)) 06365: doSolve(26, 0x4000000ll, puzzle | 0x2006006000000ll, 06366: partsUsed | 0x400l); 06367: if(!(puzzle & 0x6006002000000ll)) 06368: doSolve(26, 0x4000000ll, puzzle | 0x6006002000000ll, 06369: partsUsed | 0x400l); 06370: } 06371: if (!(puzzle & 0x4006000000ll)) { 06372: if(!(puzzle & 0x4006006000000ll)) 06373: doSolve(26, 0x4000000ll, puzzle | 0x4006006000000ll, 06374: partsUsed | 0x400l); 06375: if(!(puzzle & 0xe006000000ll)) 06376: doSolve(26, 0x4000000ll, puzzle | 0xe006000000ll, 06377: partsUsed | 0x400l); 06378: if(!(puzzle & 0x600e000000ll)) 06379: doSolve(26, 0x4000000ll, puzzle | 0x600e000000ll, 06380: partsUsed | 0x400l); 06381: if(!(puzzle & 0xc00e000000ll)) 06382: doSolve(26, 0x4000000ll, puzzle | 0xc00e000000ll, 06383: partsUsed | 0x400l); 06384: } 06385: piece11at25: 06386: if (partsUsed & 0x800l) goto piece12at25; 06387: if (!(puzzle & 0x6002000000ll)) { 06388: if(!(puzzle & 0x6c02000000ll)) 06389: doSolve(26, 0x4000000ll, puzzle | 0x6c02000000ll, 06390: partsUsed | 0x800l); 06391: if(!(puzzle & 0x6806000000ll)) 06392: doSolve(26, 0x4000000ll, puzzle | 0x6806000000ll, 06393: partsUsed | 0x800l); 06394: if(!(puzzle & 0x6406000000ll)) 06395: doSolve(26, 0x4000000ll, puzzle | 0x6406000000ll, 06396: partsUsed | 0x800l); 06397: } 06398: piece12at25: 06399: break; 06400: case 26: 06401: if (partsUsed & 0x2l) goto piece2at26; 06402: if(!(puzzle & 0x904804000000ll)) 06403: doSolve(27, 0x8000000ll, puzzle | 0x904804000000ll, 06404: partsUsed | 0x2l); 06405: if(!(puzzle & 0x200600c000000ll)) 06406: doSolve(27, 0x8000000ll, puzzle | 0x200600c000000ll, 06407: partsUsed | 0x2l); 06408: piece2at26: 06409: if (partsUsed & 0x4l) goto piece3at26; 06410: if(!(puzzle & 0x4004904000000ll)) 06411: doSolve(27, 0x8000000ll, puzzle | 0x4004904000000ll, 06412: partsUsed | 0x4l); 06413: if(!(puzzle & 0xe004004000000ll)) 06414: doSolve(27, 0x8000000ll, puzzle | 0xe004004000000ll, 06415: partsUsed | 0x4l); 06416: piece3at26: 06417: if (partsUsed & 0x8l) goto piece4at26; 06418: if(!(puzzle & 0x104904000000ll)) 06419: doSolve(27, 0x8000000ll, puzzle | 0x104904000000ll, 06420: partsUsed | 0x8l); 06421: if(!(puzzle & 0x600400c000000ll)) 06422: doSolve(27, 0x8000000ll, puzzle | 0x600400c000000ll, 06423: partsUsed | 0x8l); 06424: piece4at26: 06425: if (partsUsed & 0x10l) goto piece5at26; 06426: if (!(puzzle & 0x4004004004000000ll)) { 06427: if(!(puzzle & 0x4804004804000000ll)) 06428: doSolve(27, 0x8000000ll, puzzle | 0x4804004804000000ll, 06429: partsUsed | 0x10l); 06430: if(!(puzzle & 0x6004006004000000ll)) 06431: doSolve(27, 0x8000000ll, puzzle | 0x6004006004000000ll, 06432: partsUsed | 0x10l); 06433: if(!(puzzle & 0xc00400c004000000ll)) 06434: doSolve(27, 0x8000000ll, puzzle | 0xc00400c004000000ll, 06435: partsUsed | 0x10l); 06436: if(!(puzzle & 0x400c00400c000000ll)) 06437: doSolve(27, 0x8000000ll, puzzle | 0x400c00400c000000ll, 06438: partsUsed | 0x10l); 06439: } 06440: if(!(puzzle & 0x800c00800c000000ll)) 06441: doSolve(27, 0x8000000ll, puzzle | 0x800c00800c000000ll, 06442: partsUsed | 0x10l); 06443: piece5at26: 06444: if (partsUsed & 0x20l) goto piece6at26; 06445: if (!(puzzle & 0x4004004004000000ll)) { 06446: if(!(puzzle & 0x4804004004000000ll)) 06447: doSolve(27, 0x8000000ll, puzzle | 0x4804004004000000ll, 06448: partsUsed | 0x20l); 06449: if(!(puzzle & 0x6004004004000000ll)) 06450: doSolve(27, 0x8000000ll, puzzle | 0x6004004004000000ll, 06451: partsUsed | 0x20l); 06452: if(!(puzzle & 0x400400400c000000ll)) 06453: doSolve(27, 0x8000000ll, puzzle | 0x400400400c000000ll, 06454: partsUsed | 0x20l); 06455: if(!(puzzle & 0xc004004004000000ll)) 06456: doSolve(27, 0x8000000ll, puzzle | 0xc004004004000000ll, 06457: partsUsed | 0x20l); 06458: } 06459: if(!(puzzle & 0x4924000000ll)) 06460: doSolve(27, 0x8000000ll, puzzle | 0x4924000000ll, 06461: partsUsed | 0x20l); 06462: if(!(puzzle & 0x800800800c000000ll)) 06463: doSolve(27, 0x8000000ll, puzzle | 0x800800800c000000ll, 06464: partsUsed | 0x20l); 06465: piece6at26: 06466: if (partsUsed & 0x40l) goto piece7at26; 06467: if (!(puzzle & 0x4004004004000000ll)) { 06468: if(!(puzzle & 0x4004804004000000ll)) 06469: doSolve(27, 0x8000000ll, puzzle | 0x4004804004000000ll, 06470: partsUsed | 0x40l); 06471: if(!(puzzle & 0x4004004804000000ll)) 06472: doSolve(27, 0x8000000ll, puzzle | 0x4004004804000000ll, 06473: partsUsed | 0x40l); 06474: if(!(puzzle & 0x4004006004000000ll)) 06475: doSolve(27, 0x8000000ll, puzzle | 0x4004006004000000ll, 06476: partsUsed | 0x40l); 06477: if(!(puzzle & 0x4006004004000000ll)) 06478: doSolve(27, 0x8000000ll, puzzle | 0x4006004004000000ll, 06479: partsUsed | 0x40l); 06480: if(!(puzzle & 0x400400c004000000ll)) 06481: doSolve(27, 0x8000000ll, puzzle | 0x400400c004000000ll, 06482: partsUsed | 0x40l); 06483: if(!(puzzle & 0x400c004004000000ll)) 06484: doSolve(27, 0x8000000ll, puzzle | 0x400c004004000000ll, 06485: partsUsed | 0x40l); 06486: } 06487: piece7at26: 06488: if (partsUsed & 0x80l) goto piece8at26; 06489: if(!(puzzle & 0xc00800c000000ll)) 06490: doSolve(27, 0x8000000ll, puzzle | 0xc00800c000000ll, 06491: partsUsed | 0x80l); 06492: if(!(puzzle & 0xc00400c000000ll)) 06493: doSolve(27, 0x8000000ll, puzzle | 0xc00400c000000ll, 06494: partsUsed | 0x80l); 06495: piece8at26: 06496: if (partsUsed & 0x100l) goto piece9at26; 06497: if(!(puzzle & 0x5804000000ll)) 06498: doSolve(27, 0x8000000ll, puzzle | 0x5804000000ll, 06499: partsUsed | 0x100l); 06500: if(!(puzzle & 0x6404000000ll)) 06501: doSolve(27, 0x8000000ll, puzzle | 0x6404000000ll, 06502: partsUsed | 0x100l); 06503: if(!(puzzle & 0x900c000000ll)) 06504: doSolve(27, 0x8000000ll, puzzle | 0x900c000000ll, 06505: partsUsed | 0x100l); 06506: piece9at26: 06507: if (partsUsed & 0x200l) goto piece10at26; 06508: if (!(puzzle & 0x4004004000000ll)) { 06509: if(!(puzzle & 0x400600c000000ll)) 06510: doSolve(27, 0x8000000ll, puzzle | 0x400600c000000ll, 06511: partsUsed | 0x200l); 06512: if(!(puzzle & 0xc006004000000ll)) 06513: doSolve(27, 0x8000000ll, puzzle | 0xc006004000000ll, 06514: partsUsed | 0x200l); 06515: if(!(puzzle & 0x600c004000000ll)) 06516: doSolve(27, 0x8000000ll, puzzle | 0x600c004000000ll, 06517: partsUsed | 0x200l); 06518: } 06519: if(!(puzzle & 0x804904000000ll)) 06520: doSolve(27, 0x8000000ll, puzzle | 0x804904000000ll, 06521: partsUsed | 0x200l); 06522: if(!(puzzle & 0x200e004000000ll)) 06523: doSolve(27, 0x8000000ll, puzzle | 0x200e004000000ll, 06524: partsUsed | 0x200l); 06525: if(!(puzzle & 0x800e004000000ll)) 06526: doSolve(27, 0x8000000ll, puzzle | 0x800e004000000ll, 06527: partsUsed | 0x200l); 06528: piece10at26: 06529: if (partsUsed & 0x400l) goto piece11at26; 06530: if (!(puzzle & 0x4004004000000ll)) { 06531: if(!(puzzle & 0x4804804000000ll)) 06532: doSolve(27, 0x8000000ll, puzzle | 0x4804804000000ll, 06533: partsUsed | 0x400l); 06534: if(!(puzzle & 0x6006004000000ll)) 06535: doSolve(27, 0x8000000ll, puzzle | 0x6006004000000ll, 06536: partsUsed | 0x400l); 06537: if(!(puzzle & 0x400c00c000000ll)) 06538: doSolve(27, 0x8000000ll, puzzle | 0x400c00c000000ll, 06539: partsUsed | 0x400l); 06540: if(!(puzzle & 0xc00c004000000ll)) 06541: doSolve(27, 0x8000000ll, puzzle | 0xc00c004000000ll, 06542: partsUsed | 0x400l); 06543: } 06544: if(!(puzzle & 0xe00c000000ll)) 06545: doSolve(27, 0x8000000ll, puzzle | 0xe00c000000ll, 06546: partsUsed | 0x400l); 06547: if(!(puzzle & 0x800c00c000000ll)) 06548: doSolve(27, 0x8000000ll, puzzle | 0x800c00c000000ll, 06549: partsUsed | 0x400l); 06550: piece11at26: 06551: if (partsUsed & 0x800l) goto piece12at26; 06552: if (!(puzzle & 0x4804000000ll)) { 06553: if(!(puzzle & 0x6c04000000ll)) 06554: doSolve(27, 0x8000000ll, puzzle | 0x6c04000000ll, 06555: partsUsed | 0x800l); 06556: if(!(puzzle & 0xd804000000ll)) 06557: doSolve(27, 0x8000000ll, puzzle | 0xd804000000ll, 06558: partsUsed | 0x800l); 06559: if(!(puzzle & 0xc80c000000ll)) 06560: doSolve(27, 0x8000000ll, puzzle | 0xc80c000000ll, 06561: partsUsed | 0x800l); 06562: } 06563: if(!(puzzle & 0xd00c000000ll)) 06564: doSolve(27, 0x8000000ll, puzzle | 0xd00c000000ll, 06565: partsUsed | 0x800l); 06566: piece12at26: 06567: break; 06568: case 27: 06569: if (partsUsed & 0x2l) goto piece2at27; 06570: if(!(puzzle & 0x1209008000000ll)) 06571: doSolve(28, 0x10000000ll, puzzle | 0x1209008000000ll, 06572: partsUsed | 0x2l); 06573: if(!(puzzle & 0x600c008000000ll)) 06574: doSolve(28, 0x10000000ll, puzzle | 0x600c008000000ll, 06575: partsUsed | 0x2l); 06576: piece2at27: 06577: if (partsUsed & 0x4l) goto piece3at27; 06578: if(!(puzzle & 0x8009208000000ll)) 06579: doSolve(28, 0x10000000ll, puzzle | 0x8009208000000ll, 06580: partsUsed | 0x4l); 06581: if(!(puzzle & 0x800e008000000ll)) 06582: doSolve(28, 0x10000000ll, puzzle | 0x800e008000000ll, 06583: partsUsed | 0x4l); 06584: piece3at27: 06585: if (partsUsed & 0x8l) goto piece4at27; 06586: if(!(puzzle & 0x209208000000ll)) 06587: doSolve(28, 0x10000000ll, puzzle | 0x209208000000ll, 06588: partsUsed | 0x8l); 06589: if(!(puzzle & 0x200e008000000ll)) 06590: doSolve(28, 0x10000000ll, puzzle | 0x200e008000000ll, 06591: partsUsed | 0x8l); 06592: piece4at27: 06593: if (partsUsed & 0x10l) goto piece5at27; 06594: if(!(puzzle & 0x9008009008000000ll)) 06595: doSolve(28, 0x10000000ll, puzzle | 0x9008009008000000ll, 06596: partsUsed | 0x10l); 06597: if(!(puzzle & 0xc00800c008000000ll)) 06598: doSolve(28, 0x10000000ll, puzzle | 0xc00800c008000000ll, 06599: partsUsed | 0x10l); 06600: piece5at27: 06601: if (partsUsed & 0x20l) goto piece6at27; 06602: if(!(puzzle & 0x9248000000ll)) 06603: doSolve(28, 0x10000000ll, puzzle | 0x9248000000ll, 06604: partsUsed | 0x20l); 06605: if(!(puzzle & 0x9008008008000000ll)) 06606: doSolve(28, 0x10000000ll, puzzle | 0x9008008008000000ll, 06607: partsUsed | 0x20l); 06608: if(!(puzzle & 0xc008008008000000ll)) 06609: doSolve(28, 0x10000000ll, puzzle | 0xc008008008000000ll, 06610: partsUsed | 0x20l); 06611: piece6at27: 06612: if (partsUsed & 0x40l) goto piece7at27; 06613: if (!(puzzle & 0x8008008008000000ll)) { 06614: if(!(puzzle & 0x8009008008000000ll)) 06615: doSolve(28, 0x10000000ll, puzzle | 0x8009008008000000ll, 06616: partsUsed | 0x40l); 06617: if(!(puzzle & 0x8008009008000000ll)) 06618: doSolve(28, 0x10000000ll, puzzle | 0x8008009008000000ll, 06619: partsUsed | 0x40l); 06620: if(!(puzzle & 0x800800c008000000ll)) 06621: doSolve(28, 0x10000000ll, puzzle | 0x800800c008000000ll, 06622: partsUsed | 0x40l); 06623: if(!(puzzle & 0x800c008008000000ll)) 06624: doSolve(28, 0x10000000ll, puzzle | 0x800c008008000000ll, 06625: partsUsed | 0x40l); 06626: } 06627: piece7at27: 06628: if (partsUsed & 0x100l) goto piece9at27; 06629: if(!(puzzle & 0xc808000000ll)) 06630: doSolve(28, 0x10000000ll, puzzle | 0xc808000000ll, 06631: partsUsed | 0x100l); 06632: piece9at27: 06633: if (partsUsed & 0x200l) goto piece10at27; 06634: if(!(puzzle & 0x1009208000000ll)) 06635: doSolve(28, 0x10000000ll, puzzle | 0x1009208000000ll, 06636: partsUsed | 0x200l); 06637: if(!(puzzle & 0x400e008000000ll)) 06638: doSolve(28, 0x10000000ll, puzzle | 0x400e008000000ll, 06639: partsUsed | 0x200l); 06640: piece10at27: 06641: if (partsUsed & 0x400l) goto piece11at27; 06642: if(!(puzzle & 0x9009008000000ll)) 06643: doSolve(28, 0x10000000ll, puzzle | 0x9009008000000ll, 06644: partsUsed | 0x400l); 06645: if(!(puzzle & 0xc00c008000000ll)) 06646: doSolve(28, 0x10000000ll, puzzle | 0xc00c008000000ll, 06647: partsUsed | 0x400l); 06648: piece11at27: 06649: if (partsUsed & 0x800l) goto piece12at27; 06650: if(!(puzzle & 0xd808000000ll)) 06651: doSolve(28, 0x10000000ll, puzzle | 0xd808000000ll, 06652: partsUsed | 0x800l); 06653: piece12at27: 06654: break; 06655: case 28: 06656: if (partsUsed & 0x2l) goto piece2at28; 06657: if(!(puzzle & 0x480090010000000ll)) 06658: doSolve(29, 0x20000000ll, puzzle | 0x480090010000000ll, 06659: partsUsed | 0x2l); 06660: if(!(puzzle & 0x400480090000000ll)) 06661: doSolve(29, 0x20000000ll, puzzle | 0x400480090000000ll, 06662: partsUsed | 0x2l); 06663: if(!(puzzle & 0x1330000000ll)) 06664: doSolve(29, 0x20000000ll, puzzle | 0x1330000000ll, 06665: partsUsed | 0x2l); 06666: if(!(puzzle & 0x1990000000ll)) 06667: doSolve(29, 0x20000000ll, puzzle | 0x1990000000ll, 06668: partsUsed | 0x2l); 06669: if(!(puzzle & 0x40060030000000ll)) 06670: doSolve(29, 0x20000000ll, puzzle | 0x40060030000000ll, 06671: partsUsed | 0x2l); 06672: if(!(puzzle & 0x60030010000000ll)) 06673: doSolve(29, 0x20000000ll, puzzle | 0x60030010000000ll, 06674: partsUsed | 0x2l); 06675: piece2at28: 06676: if (partsUsed & 0x4l) goto piece3at28; 06677: if(!(puzzle & 0x10490010000000ll)) 06678: doSolve(29, 0x20000000ll, puzzle | 0x10490010000000ll, 06679: partsUsed | 0x4l); 06680: if(!(puzzle & 0x10070010000000ll)) 06681: doSolve(29, 0x20000000ll, puzzle | 0x10070010000000ll, 06682: partsUsed | 0x4l); 06683: if(!(puzzle & 0x80080490000000ll)) 06684: doSolve(29, 0x20000000ll, puzzle | 0x80080490000000ll, 06685: partsUsed | 0x4l); 06686: if(!(puzzle & 0x790000000ll)) 06687: doSolve(29, 0x20000000ll, puzzle | 0x790000000ll, 06688: partsUsed | 0x4l); 06689: if(!(puzzle & 0x970000000ll)) 06690: doSolve(29, 0x20000000ll, puzzle | 0x970000000ll, 06691: partsUsed | 0x4l); 06692: if(!(puzzle & 0x20020070000000ll)) 06693: doSolve(29, 0x20000000ll, puzzle | 0x20020070000000ll, 06694: partsUsed | 0x4l); 06695: piece3at28: 06696: if (partsUsed & 0x8l) goto piece4at28; 06697: if(!(puzzle & 0x400490010000000ll)) 06698: doSolve(29, 0x20000000ll, puzzle | 0x400490010000000ll, 06699: partsUsed | 0x8l); 06700: if(!(puzzle & 0x480080090000000ll)) 06701: doSolve(29, 0x20000000ll, puzzle | 0x480080090000000ll, 06702: partsUsed | 0x8l); 06703: if(!(puzzle & 0x1930000000ll)) 06704: doSolve(29, 0x20000000ll, puzzle | 0x1930000000ll, 06705: partsUsed | 0x8l); 06706: if(!(puzzle & 0x1390000000ll)) 06707: doSolve(29, 0x20000000ll, puzzle | 0x1390000000ll, 06708: partsUsed | 0x8l); 06709: if(!(puzzle & 0x40070010000000ll)) 06710: doSolve(29, 0x20000000ll, puzzle | 0x40070010000000ll, 06711: partsUsed | 0x8l); 06712: if(!(puzzle & 0x60020030000000ll)) 06713: doSolve(29, 0x20000000ll, puzzle | 0x60020030000000ll, 06714: partsUsed | 0x8l); 06715: piece4at28: 06716: if (partsUsed & 0x10l) goto piece5at28; 06717: if (!(puzzle & 0x2490000000ll)) { 06718: if(!(puzzle & 0x412490000000ll)) 06719: doSolve(29, 0x20000000ll, puzzle | 0x412490000000ll, 06720: partsUsed | 0x10l); 06721: if(!(puzzle & 0x6590000000ll)) 06722: doSolve(29, 0x20000000ll, puzzle | 0x6590000000ll, 06723: partsUsed | 0x10l); 06724: if(!(puzzle & 0x2082490000000ll)) 06725: doSolve(29, 0x20000000ll, puzzle | 0x2082490000000ll, 06726: partsUsed | 0x10l); 06727: if(!(puzzle & 0x2cb0000000ll)) 06728: doSolve(29, 0x20000000ll, puzzle | 0x2cb0000000ll, 06729: partsUsed | 0x10l); 06730: } 06731: if(!(puzzle & 0x4d30000000ll)) 06732: doSolve(29, 0x20000000ll, puzzle | 0x4d30000000ll, 06733: partsUsed | 0x10l); 06734: if(!(puzzle & 0x2490410000000ll)) 06735: doSolve(29, 0x20000000ll, puzzle | 0x2490410000000ll, 06736: partsUsed | 0x10l); 06737: piece5at28: 06738: if (partsUsed & 0x20l) goto piece6at28; 06739: if (!(puzzle & 0x2490000000ll)) { 06740: if(!(puzzle & 0x2002490000000ll)) 06741: doSolve(29, 0x20000000ll, puzzle | 0x2002490000000ll, 06742: partsUsed | 0x20l); 06743: if(!(puzzle & 0x24b0000000ll)) 06744: doSolve(29, 0x20000000ll, puzzle | 0x24b0000000ll, 06745: partsUsed | 0x20l); 06746: if(!(puzzle & 0x12490000000ll)) 06747: doSolve(29, 0x20000000ll, puzzle | 0x12490000000ll, 06748: partsUsed | 0x20l); 06749: if(!(puzzle & 0x6490000000ll)) 06750: doSolve(29, 0x20000000ll, puzzle | 0x6490000000ll, 06751: partsUsed | 0x20l); 06752: } 06753: if(!(puzzle & 0x2490010000000ll)) 06754: doSolve(29, 0x20000000ll, puzzle | 0x2490010000000ll, 06755: partsUsed | 0x20l); 06756: if(!(puzzle & 0x4930000000ll)) 06757: doSolve(29, 0x20000000ll, puzzle | 0x4930000000ll, 06758: partsUsed | 0x20l); 06759: piece6at28: 06760: if (partsUsed & 0x40l) goto piece7at28; 06761: if (!(puzzle & 0x2490000000ll)) { 06762: if(!(puzzle & 0x402490000000ll)) 06763: doSolve(29, 0x20000000ll, puzzle | 0x402490000000ll, 06764: partsUsed | 0x40l); 06765: if(!(puzzle & 0x2590000000ll)) 06766: doSolve(29, 0x20000000ll, puzzle | 0x2590000000ll, 06767: partsUsed | 0x40l); 06768: if(!(puzzle & 0x82490000000ll)) 06769: doSolve(29, 0x20000000ll, puzzle | 0x82490000000ll, 06770: partsUsed | 0x40l); 06771: if(!(puzzle & 0x2c90000000ll)) 06772: doSolve(29, 0x20000000ll, puzzle | 0x2c90000000ll, 06773: partsUsed | 0x40l); 06774: } 06775: piece7at28: 06776: if (partsUsed & 0x80l) goto piece8at28; 06777: if(!(puzzle & 0x90010090000000ll)) 06778: doSolve(29, 0x20000000ll, puzzle | 0x90010090000000ll, 06779: partsUsed | 0x80l); 06780: if(!(puzzle & 0x90080090000000ll)) 06781: doSolve(29, 0x20000000ll, puzzle | 0x90080090000000ll, 06782: partsUsed | 0x80l); 06783: if(!(puzzle & 0x490410000000ll)) 06784: doSolve(29, 0x20000000ll, puzzle | 0x490410000000ll, 06785: partsUsed | 0x80l); 06786: if(!(puzzle & 0x410490000000ll)) 06787: doSolve(29, 0x20000000ll, puzzle | 0x410490000000ll, 06788: partsUsed | 0x80l); 06789: if(!(puzzle & 0x2f0000000ll)) 06790: doSolve(29, 0x20000000ll, puzzle | 0x2f0000000ll, 06791: partsUsed | 0x80l); 06792: if(!(puzzle & 0xcb0000000ll)) 06793: doSolve(29, 0x20000000ll, puzzle | 0xcb0000000ll, 06794: partsUsed | 0x80l); 06795: if(!(puzzle & 0xd30000000ll)) 06796: doSolve(29, 0x20000000ll, puzzle | 0xd30000000ll, 06797: partsUsed | 0x80l); 06798: if(!(puzzle & 0x3d0000000ll)) 06799: doSolve(29, 0x20000000ll, puzzle | 0x3d0000000ll, 06800: partsUsed | 0x80l); 06801: if(!(puzzle & 0x30020030000000ll)) 06802: doSolve(29, 0x20000000ll, puzzle | 0x30020030000000ll, 06803: partsUsed | 0x80l); 06804: if(!(puzzle & 0x30010030000000ll)) 06805: doSolve(29, 0x20000000ll, puzzle | 0x30010030000000ll, 06806: partsUsed | 0x80l); 06807: if(!(puzzle & 0x70050000000ll)) 06808: doSolve(29, 0x20000000ll, puzzle | 0x70050000000ll, 06809: partsUsed | 0x80l); 06810: if(!(puzzle & 0x50070000000ll)) 06811: doSolve(29, 0x20000000ll, puzzle | 0x50070000000ll, 06812: partsUsed | 0x80l); 06813: piece8at28: 06814: if (partsUsed & 0x100l) goto piece9at28; 06815: if(!(puzzle & 0x100130000000ll)) 06816: doSolve(29, 0x20000000ll, puzzle | 0x100130000000ll, 06817: partsUsed | 0x100l); 06818: if(!(puzzle & 0x130010000000ll)) 06819: doSolve(29, 0x20000000ll, puzzle | 0x130010000000ll, 06820: partsUsed | 0x100l); 06821: if(!(puzzle & 0x200b0000000ll)) 06822: doSolve(29, 0x20000000ll, puzzle | 0x200b0000000ll, 06823: partsUsed | 0x100l); 06824: if(!(puzzle & 0x90030000000ll)) 06825: doSolve(29, 0x20000000ll, puzzle | 0x90030000000ll, 06826: partsUsed | 0x100l); 06827: if(!(puzzle & 0x180090000000ll)) 06828: doSolve(29, 0x20000000ll, puzzle | 0x180090000000ll, 06829: partsUsed | 0x100l); 06830: if(!(puzzle & 0x10190000000ll)) 06831: doSolve(29, 0x20000000ll, puzzle | 0x10190000000ll, 06832: partsUsed | 0x100l); 06833: piece9at28: 06834: if (partsUsed & 0x200l) goto piece10at28; 06835: if(!(puzzle & 0x80490010000000ll)) 06836: doSolve(29, 0x20000000ll, puzzle | 0x80490010000000ll, 06837: partsUsed | 0x200l); 06838: if(!(puzzle & 0x80480090000000ll)) 06839: doSolve(29, 0x20000000ll, puzzle | 0x80480090000000ll, 06840: partsUsed | 0x200l); 06841: if(!(puzzle & 0xb30000000ll)) 06842: doSolve(29, 0x20000000ll, puzzle | 0xb30000000ll, 06843: partsUsed | 0x200l); 06844: if(!(puzzle & 0xb90000000ll)) 06845: doSolve(29, 0x20000000ll, puzzle | 0xb90000000ll, 06846: partsUsed | 0x200l); 06847: if(!(puzzle & 0x20060030000000ll)) 06848: doSolve(29, 0x20000000ll, puzzle | 0x20060030000000ll, 06849: partsUsed | 0x200l); 06850: if(!(puzzle & 0x20070010000000ll)) 06851: doSolve(29, 0x20000000ll, puzzle | 0x20070010000000ll, 06852: partsUsed | 0x200l); 06853: piece10at28: 06854: if (partsUsed & 0x400l) goto piece11at28; 06855: if (!(puzzle & 0x80090000000ll)) { 06856: if(!(puzzle & 0x10090090000000ll)) 06857: doSolve(29, 0x20000000ll, puzzle | 0x10090090000000ll, 06858: partsUsed | 0x400l); 06859: if(!(puzzle & 0x490090000000ll)) 06860: doSolve(29, 0x20000000ll, puzzle | 0x490090000000ll, 06861: partsUsed | 0x400l); 06862: if(!(puzzle & 0x480490000000ll)) 06863: doSolve(29, 0x20000000ll, puzzle | 0x480490000000ll, 06864: partsUsed | 0x400l); 06865: if(!(puzzle & 0x90490000000ll)) 06866: doSolve(29, 0x20000000ll, puzzle | 0x90490000000ll, 06867: partsUsed | 0x400l); 06868: if(!(puzzle & 0x80090090000000ll)) 06869: doSolve(29, 0x20000000ll, puzzle | 0x80090090000000ll, 06870: partsUsed | 0x400l); 06871: } 06872: if (!(puzzle & 0x130000000ll)) { 06873: if(!(puzzle & 0x370000000ll)) 06874: doSolve(29, 0x20000000ll, puzzle | 0x370000000ll, 06875: partsUsed | 0x400l); 06876: if(!(puzzle & 0x1f0000000ll)) 06877: doSolve(29, 0x20000000ll, puzzle | 0x1f0000000ll, 06878: partsUsed | 0x400l); 06879: if(!(puzzle & 0x5b0000000ll)) 06880: doSolve(29, 0x20000000ll, puzzle | 0x5b0000000ll, 06881: partsUsed | 0x400l); 06882: if(!(puzzle & 0x9b0000000ll)) 06883: doSolve(29, 0x20000000ll, puzzle | 0x9b0000000ll, 06884: partsUsed | 0x400l); 06885: if(!(puzzle & 0x3b0000000ll)) 06886: doSolve(29, 0x20000000ll, puzzle | 0x3b0000000ll, 06887: partsUsed | 0x400l); 06888: } 06889: if (!(puzzle & 0x10010010000000ll)) { 06890: if(!(puzzle & 0x90090010000000ll)) 06891: doSolve(29, 0x20000000ll, puzzle | 0x90090010000000ll, 06892: partsUsed | 0x400l); 06893: if(!(puzzle & 0x10030030000000ll)) 06894: doSolve(29, 0x20000000ll, puzzle | 0x10030030000000ll, 06895: partsUsed | 0x400l); 06896: if(!(puzzle & 0x30030010000000ll)) 06897: doSolve(29, 0x20000000ll, puzzle | 0x30030010000000ll, 06898: partsUsed | 0x400l); 06899: } 06900: if (!(puzzle & 0x20030000000ll)) { 06901: if(!(puzzle & 0x20030030000000ll)) 06902: doSolve(29, 0x20000000ll, puzzle | 0x20030030000000ll, 06903: partsUsed | 0x400l); 06904: if(!(puzzle & 0x70030000000ll)) 06905: doSolve(29, 0x20000000ll, puzzle | 0x70030000000ll, 06906: partsUsed | 0x400l); 06907: if(!(puzzle & 0x30070000000ll)) 06908: doSolve(29, 0x20000000ll, puzzle | 0x30070000000ll, 06909: partsUsed | 0x400l); 06910: if(!(puzzle & 0x60070000000ll)) 06911: doSolve(29, 0x20000000ll, puzzle | 0x60070000000ll, 06912: partsUsed | 0x400l); 06913: } 06914: if(!(puzzle & 0xd90000000ll)) 06915: doSolve(29, 0x20000000ll, puzzle | 0xd90000000ll, 06916: partsUsed | 0x400l); 06917: piece11at28: 06918: if (partsUsed & 0x800l) goto piece12at28; 06919: if (!(puzzle & 0x10030000000ll)) { 06920: if(!(puzzle & 0x101b0000000ll)) 06921: doSolve(29, 0x20000000ll, puzzle | 0x101b0000000ll, 06922: partsUsed | 0x800l); 06923: if(!(puzzle & 0xb0030000000ll)) 06924: doSolve(29, 0x20000000ll, puzzle | 0xb0030000000ll, 06925: partsUsed | 0x800l); 06926: if(!(puzzle & 0x300b0000000ll)) 06927: doSolve(29, 0x20000000ll, puzzle | 0x300b0000000ll, 06928: partsUsed | 0x800l); 06929: if(!(puzzle & 0x30130000000ll)) 06930: doSolve(29, 0x20000000ll, puzzle | 0x30130000000ll, 06931: partsUsed | 0x800l); 06932: if(!(puzzle & 0x130030000000ll)) 06933: doSolve(29, 0x20000000ll, puzzle | 0x130030000000ll, 06934: partsUsed | 0x800l); 06935: if(!(puzzle & 0x900b0000000ll)) 06936: doSolve(29, 0x20000000ll, puzzle | 0x900b0000000ll, 06937: partsUsed | 0x800l); 06938: } 06939: if (!(puzzle & 0x100110000000ll)) { 06940: if(!(puzzle & 0x180190000000ll)) 06941: doSolve(29, 0x20000000ll, puzzle | 0x180190000000ll, 06942: partsUsed | 0x800l); 06943: if(!(puzzle & 0x120130000000ll)) 06944: doSolve(29, 0x20000000ll, puzzle | 0x120130000000ll, 06945: partsUsed | 0x800l); 06946: if(!(puzzle & 0x1001b0000000ll)) 06947: doSolve(29, 0x20000000ll, puzzle | 0x1001b0000000ll, 06948: partsUsed | 0x800l); 06949: } 06950: if (!(puzzle & 0x80090000000ll)) { 06951: if(!(puzzle & 0xb0090000000ll)) 06952: doSolve(29, 0x20000000ll, puzzle | 0xb0090000000ll, 06953: partsUsed | 0x800l); 06954: if(!(puzzle & 0x90190000000ll)) 06955: doSolve(29, 0x20000000ll, puzzle | 0x90190000000ll, 06956: partsUsed | 0x800l); 06957: if(!(puzzle & 0x801b0000000ll)) 06958: doSolve(29, 0x20000000ll, puzzle | 0x801b0000000ll, 06959: partsUsed | 0x800l); 06960: if(!(puzzle & 0x190090000000ll)) 06961: doSolve(29, 0x20000000ll, puzzle | 0x190090000000ll, 06962: partsUsed | 0x800l); 06963: } 06964: if(!(puzzle & 0x201b0000000ll)) 06965: doSolve(29, 0x20000000ll, puzzle | 0x201b0000000ll, 06966: partsUsed | 0x800l); 06967: if(!(puzzle & 0x1b0010000000ll)) 06968: doSolve(29, 0x20000000ll, puzzle | 0x1b0010000000ll, 06969: partsUsed | 0x800l); 06970: piece12at28: 06971: break; 06972: case 29: 06973: if (partsUsed & 0x2l) goto piece2at29; 06974: if(!(puzzle & 0x5e0000000ll)) 06975: doSolve(30, 0x40000000ll, puzzle | 0x5e0000000ll, 06976: partsUsed | 0x2l); 06977: if(!(puzzle & 0x10030060000000ll)) 06978: doSolve(30, 0x40000000ll, puzzle | 0x10030060000000ll, 06979: partsUsed | 0x2l); 06980: if(!(puzzle & 0x900120020000000ll)) 06981: doSolve(30, 0x40000000ll, puzzle | 0x900120020000000ll, 06982: partsUsed | 0x2l); 06983: if(!(puzzle & 0x800900120000000ll)) 06984: doSolve(30, 0x40000000ll, puzzle | 0x800900120000000ll, 06985: partsUsed | 0x2l); 06986: piece2at29: 06987: if (partsUsed & 0x4l) goto piece3at29; 06988: if(!(puzzle & 0x1d20000000ll)) 06989: doSolve(30, 0x40000000ll, puzzle | 0x1d20000000ll, 06990: partsUsed | 0x4l); 06991: if(!(puzzle & 0x100100920000000ll)) 06992: doSolve(30, 0x40000000ll, puzzle | 0x100100920000000ll, 06993: partsUsed | 0x4l); 06994: if(!(puzzle & 0x70020020000000ll)) 06995: doSolve(30, 0x40000000ll, puzzle | 0x70020020000000ll, 06996: partsUsed | 0x4l); 06997: if(!(puzzle & 0x20920020000000ll)) 06998: doSolve(30, 0x40000000ll, puzzle | 0x20920020000000ll, 06999: partsUsed | 0x4l); 07000: piece3at29: 07001: if (partsUsed & 0x8l) goto piece4at29; 07002: if(!(puzzle & 0xd60000000ll)) 07003: doSolve(30, 0x40000000ll, puzzle | 0xd60000000ll, 07004: partsUsed | 0x8l); 07005: if(!(puzzle & 0x30020060000000ll)) 07006: doSolve(30, 0x40000000ll, puzzle | 0x30020060000000ll, 07007: partsUsed | 0x8l); 07008: if(!(puzzle & 0x800920020000000ll)) 07009: doSolve(30, 0x40000000ll, puzzle | 0x800920020000000ll, 07010: partsUsed | 0x8l); 07011: if(!(puzzle & 0x900100120000000ll)) 07012: doSolve(30, 0x40000000ll, puzzle | 0x900100120000000ll, 07013: partsUsed | 0x8l); 07014: piece4at29: 07015: if (partsUsed & 0x10l) goto piece5at29; 07016: if (!(puzzle & 0x4920000000ll)) { 07017: if(!(puzzle & 0x69a0000000ll)) 07018: doSolve(30, 0x40000000ll, puzzle | 0x69a0000000ll, 07019: partsUsed | 0x10l); 07020: if(!(puzzle & 0x824920000000ll)) 07021: doSolve(30, 0x40000000ll, puzzle | 0x824920000000ll, 07022: partsUsed | 0x10l); 07023: if(!(puzzle & 0xcb20000000ll)) 07024: doSolve(30, 0x40000000ll, puzzle | 0xcb20000000ll, 07025: partsUsed | 0x10l); 07026: if(!(puzzle & 0x4104920000000ll)) 07027: doSolve(30, 0x40000000ll, puzzle | 0x4104920000000ll, 07028: partsUsed | 0x10l); 07029: if(!(puzzle & 0x5960000000ll)) 07030: doSolve(30, 0x40000000ll, puzzle | 0x5960000000ll, 07031: partsUsed | 0x10l); 07032: } 07033: if(!(puzzle & 0x9a60000000ll)) 07034: doSolve(30, 0x40000000ll, puzzle | 0x9a60000000ll, 07035: partsUsed | 0x10l); 07036: if(!(puzzle & 0x4920820000000ll)) 07037: doSolve(30, 0x40000000ll, puzzle | 0x4920820000000ll, 07038: partsUsed | 0x10l); 07039: piece5at29: 07040: if (partsUsed & 0x20l) goto piece6at29; 07041: if (!(puzzle & 0x4920000000ll)) { 07042: if(!(puzzle & 0x6920000000ll)) 07043: doSolve(30, 0x40000000ll, puzzle | 0x6920000000ll, 07044: partsUsed | 0x20l); 07045: if(!(puzzle & 0x4004920000000ll)) 07046: doSolve(30, 0x40000000ll, puzzle | 0x4004920000000ll, 07047: partsUsed | 0x20l); 07048: if(!(puzzle & 0x4960000000ll)) 07049: doSolve(30, 0x40000000ll, puzzle | 0x4960000000ll, 07050: partsUsed | 0x20l); 07051: if(!(puzzle & 0x24920000000ll)) 07052: doSolve(30, 0x40000000ll, puzzle | 0x24920000000ll, 07053: partsUsed | 0x20l); 07054: if(!(puzzle & 0xc920000000ll)) 07055: doSolve(30, 0x40000000ll, puzzle | 0xc920000000ll, 07056: partsUsed | 0x20l); 07057: } 07058: if(!(puzzle & 0x4920020000000ll)) 07059: doSolve(30, 0x40000000ll, puzzle | 0x4920020000000ll, 07060: partsUsed | 0x20l); 07061: if(!(puzzle & 0x9260000000ll)) 07062: doSolve(30, 0x40000000ll, puzzle | 0x9260000000ll, 07063: partsUsed | 0x20l); 07064: piece6at29: 07065: if (partsUsed & 0x40l) goto piece7at29; 07066: if (!(puzzle & 0x4920000000ll)) { 07067: if(!(puzzle & 0x49a0000000ll)) 07068: doSolve(30, 0x40000000ll, puzzle | 0x49a0000000ll, 07069: partsUsed | 0x40l); 07070: if(!(puzzle & 0x4d20000000ll)) 07071: doSolve(30, 0x40000000ll, puzzle | 0x4d20000000ll, 07072: partsUsed | 0x40l); 07073: if(!(puzzle & 0x804920000000ll)) 07074: doSolve(30, 0x40000000ll, puzzle | 0x804920000000ll, 07075: partsUsed | 0x40l); 07076: if(!(puzzle & 0x4b20000000ll)) 07077: doSolve(30, 0x40000000ll, puzzle | 0x4b20000000ll, 07078: partsUsed | 0x40l); 07079: if(!(puzzle & 0x104920000000ll)) 07080: doSolve(30, 0x40000000ll, puzzle | 0x104920000000ll, 07081: partsUsed | 0x40l); 07082: if(!(puzzle & 0x5920000000ll)) 07083: doSolve(30, 0x40000000ll, puzzle | 0x5920000000ll, 07084: partsUsed | 0x40l); 07085: } 07086: piece7at29: 07087: if (partsUsed & 0x80l) goto piece8at29; 07088: if(!(puzzle & 0x120020120000000ll)) 07089: doSolve(30, 0x40000000ll, puzzle | 0x120020120000000ll, 07090: partsUsed | 0x80l); 07091: if(!(puzzle & 0x120100120000000ll)) 07092: doSolve(30, 0x40000000ll, puzzle | 0x120100120000000ll, 07093: partsUsed | 0x80l); 07094: if(!(puzzle & 0x920820000000ll)) 07095: doSolve(30, 0x40000000ll, puzzle | 0x920820000000ll, 07096: partsUsed | 0x80l); 07097: if(!(puzzle & 0x820920000000ll)) 07098: doSolve(30, 0x40000000ll, puzzle | 0x820920000000ll, 07099: partsUsed | 0x80l); 07100: if(!(puzzle & 0x1960000000ll)) 07101: doSolve(30, 0x40000000ll, puzzle | 0x1960000000ll, 07102: partsUsed | 0x80l); 07103: if(!(puzzle & 0x1a60000000ll)) 07104: doSolve(30, 0x40000000ll, puzzle | 0x1a60000000ll, 07105: partsUsed | 0x80l); 07106: if(!(puzzle & 0x60040060000000ll)) 07107: doSolve(30, 0x40000000ll, puzzle | 0x60040060000000ll, 07108: partsUsed | 0x80l); 07109: if(!(puzzle & 0x60020060000000ll)) 07110: doSolve(30, 0x40000000ll, puzzle | 0x60020060000000ll, 07111: partsUsed | 0x80l); 07112: piece8at29: 07113: if (partsUsed & 0x100l) goto piece9at29; 07114: if(!(puzzle & 0x801a0000000ll)) 07115: doSolve(30, 0x40000000ll, puzzle | 0x801a0000000ll, 07116: partsUsed | 0x100l); 07117: if(!(puzzle & 0x30120000000ll)) 07118: doSolve(30, 0x40000000ll, puzzle | 0x30120000000ll, 07119: partsUsed | 0x100l); 07120: if(!(puzzle & 0x20320000000ll)) 07121: doSolve(30, 0x40000000ll, puzzle | 0x20320000000ll, 07122: partsUsed | 0x100l); 07123: if(!(puzzle & 0x1a0020000000ll)) 07124: doSolve(30, 0x40000000ll, puzzle | 0x1a0020000000ll, 07125: partsUsed | 0x100l); 07126: if(!(puzzle & 0x120060000000ll)) 07127: doSolve(30, 0x40000000ll, puzzle | 0x120060000000ll, 07128: partsUsed | 0x100l); 07129: if(!(puzzle & 0x260020000000ll)) 07130: doSolve(30, 0x40000000ll, puzzle | 0x260020000000ll, 07131: partsUsed | 0x100l); 07132: if(!(puzzle & 0x40160000000ll)) 07133: doSolve(30, 0x40000000ll, puzzle | 0x40160000000ll, 07134: partsUsed | 0x100l); 07135: if(!(puzzle & 0x300120000000ll)) 07136: doSolve(30, 0x40000000ll, puzzle | 0x300120000000ll, 07137: partsUsed | 0x100l); 07138: if(!(puzzle & 0x200260000000ll)) 07139: doSolve(30, 0x40000000ll, puzzle | 0x200260000000ll, 07140: partsUsed | 0x100l); 07141: piece9at29: 07142: if (partsUsed & 0x200l) goto piece10at29; 07143: if (!(puzzle & 0x1a0000000ll)) { 07144: if(!(puzzle & 0x13a0000000ll)) 07145: doSolve(30, 0x40000000ll, puzzle | 0x13a0000000ll, 07146: partsUsed | 0x200l); 07147: if(!(puzzle & 0x7a0000000ll)) 07148: doSolve(30, 0x40000000ll, puzzle | 0x7a0000000ll, 07149: partsUsed | 0x200l); 07150: if(!(puzzle & 0x9e0000000ll)) 07151: doSolve(30, 0x40000000ll, puzzle | 0x9e0000000ll, 07152: partsUsed | 0x200l); 07153: if(!(puzzle & 0x19a0000000ll)) 07154: doSolve(30, 0x40000000ll, puzzle | 0x19a0000000ll, 07155: partsUsed | 0x200l); 07156: } 07157: if (!(puzzle & 0x20020020000000ll)) { 07158: if(!(puzzle & 0x20030060000000ll)) 07159: doSolve(30, 0x40000000ll, puzzle | 0x20030060000000ll, 07160: partsUsed | 0x200l); 07161: if(!(puzzle & 0x60030020000000ll)) 07162: doSolve(30, 0x40000000ll, puzzle | 0x60030020000000ll, 07163: partsUsed | 0x200l); 07164: if(!(puzzle & 0x30060020000000ll)) 07165: doSolve(30, 0x40000000ll, puzzle | 0x30060020000000ll, 07166: partsUsed | 0x200l); 07167: } 07168: if(!(puzzle & 0xf20000000ll)) 07169: doSolve(30, 0x40000000ll, puzzle | 0xf20000000ll, 07170: partsUsed | 0x200l); 07171: if(!(puzzle & 0x10070020000000ll)) 07172: doSolve(30, 0x40000000ll, puzzle | 0x10070020000000ll, 07173: partsUsed | 0x200l); 07174: if(!(puzzle & 0x40070020000000ll)) 07175: doSolve(30, 0x40000000ll, puzzle | 0x40070020000000ll, 07176: partsUsed | 0x200l); 07177: if(!(puzzle & 0x100920020000000ll)) 07178: doSolve(30, 0x40000000ll, puzzle | 0x100920020000000ll, 07179: partsUsed | 0x200l); 07180: if(!(puzzle & 0x100900120000000ll)) 07181: doSolve(30, 0x40000000ll, puzzle | 0x100900120000000ll, 07182: partsUsed | 0x200l); 07183: piece10at29: 07184: if (partsUsed & 0x400l) goto piece11at29; 07185: if (!(puzzle & 0x100120000000ll)) { 07186: if(!(puzzle & 0x20120120000000ll)) 07187: doSolve(30, 0x40000000ll, puzzle | 0x20120120000000ll, 07188: partsUsed | 0x400l); 07189: if(!(puzzle & 0x920120000000ll)) 07190: doSolve(30, 0x40000000ll, puzzle | 0x920120000000ll, 07191: partsUsed | 0x400l); 07192: if(!(puzzle & 0x900920000000ll)) 07193: doSolve(30, 0x40000000ll, puzzle | 0x900920000000ll, 07194: partsUsed | 0x400l); 07195: if(!(puzzle & 0x120920000000ll)) 07196: doSolve(30, 0x40000000ll, puzzle | 0x120920000000ll, 07197: partsUsed | 0x400l); 07198: if(!(puzzle & 0x100120120000000ll)) 07199: doSolve(30, 0x40000000ll, puzzle | 0x100120120000000ll, 07200: partsUsed | 0x400l); 07201: } 07202: if (!(puzzle & 0x20020020000000ll)) { 07203: if(!(puzzle & 0x120120020000000ll)) 07204: doSolve(30, 0x40000000ll, puzzle | 0x120120020000000ll, 07205: partsUsed | 0x400l); 07206: if(!(puzzle & 0x20060060000000ll)) 07207: doSolve(30, 0x40000000ll, puzzle | 0x20060060000000ll, 07208: partsUsed | 0x400l); 07209: if(!(puzzle & 0x60060020000000ll)) 07210: doSolve(30, 0x40000000ll, puzzle | 0x60060020000000ll, 07211: partsUsed | 0x400l); 07212: } 07213: if (!(puzzle & 0x320000000ll)) { 07214: if(!(puzzle & 0xb60000000ll)) 07215: doSolve(30, 0x40000000ll, puzzle | 0xb60000000ll, 07216: partsUsed | 0x400l); 07217: if(!(puzzle & 0x1360000000ll)) 07218: doSolve(30, 0x40000000ll, puzzle | 0x1360000000ll, 07219: partsUsed | 0x400l); 07220: if(!(puzzle & 0x1b20000000ll)) 07221: doSolve(30, 0x40000000ll, puzzle | 0x1b20000000ll, 07222: partsUsed | 0x400l); 07223: } 07224: if(!(puzzle & 0x3e0000000ll)) 07225: doSolve(30, 0x40000000ll, puzzle | 0x3e0000000ll, 07226: partsUsed | 0x400l); 07227: if(!(puzzle & 0xda0000000ll)) 07228: doSolve(30, 0x40000000ll, puzzle | 0xda0000000ll, 07229: partsUsed | 0x400l); 07230: if(!(puzzle & 0x70060000000ll)) 07231: doSolve(30, 0x40000000ll, puzzle | 0x70060000000ll, 07232: partsUsed | 0x400l); 07233: if(!(puzzle & 0x30030020000000ll)) 07234: doSolve(30, 0x40000000ll, puzzle | 0x30030020000000ll, 07235: partsUsed | 0x400l); 07236: if(!(puzzle & 0x40060060000000ll)) 07237: doSolve(30, 0x40000000ll, puzzle | 0x40060060000000ll, 07238: partsUsed | 0x400l); 07239: piece11at29: 07240: if (partsUsed & 0x800l) goto piece12at29; 07241: if (!(puzzle & 0x180020000000ll)) { 07242: if(!(puzzle & 0x1b0020000000ll)) 07243: doSolve(30, 0x40000000ll, puzzle | 0x1b0020000000ll, 07244: partsUsed | 0x800l); 07245: if(!(puzzle & 0x1a0120000000ll)) 07246: doSolve(30, 0x40000000ll, puzzle | 0x1a0120000000ll, 07247: partsUsed | 0x800l); 07248: if(!(puzzle & 0x1801a0000000ll)) 07249: doSolve(30, 0x40000000ll, puzzle | 0x1801a0000000ll, 07250: partsUsed | 0x800l); 07251: } 07252: if (!(puzzle & 0x20120000000ll)) { 07253: if(!(puzzle & 0x130120000000ll)) 07254: doSolve(30, 0x40000000ll, puzzle | 0x130120000000ll, 07255: partsUsed | 0x800l); 07256: if(!(puzzle & 0x1201a0000000ll)) 07257: doSolve(30, 0x40000000ll, puzzle | 0x1201a0000000ll, 07258: partsUsed | 0x800l); 07259: if(!(puzzle & 0x20360000000ll)) 07260: doSolve(30, 0x40000000ll, puzzle | 0x20360000000ll, 07261: partsUsed | 0x800l); 07262: if(!(puzzle & 0x160120000000ll)) 07263: doSolve(30, 0x40000000ll, puzzle | 0x160120000000ll, 07264: partsUsed | 0x800l); 07265: if(!(puzzle & 0x60160000000ll)) 07266: doSolve(30, 0x40000000ll, puzzle | 0x60160000000ll, 07267: partsUsed | 0x800l); 07268: if(!(puzzle & 0x120320000000ll)) 07269: doSolve(30, 0x40000000ll, puzzle | 0x120320000000ll, 07270: partsUsed | 0x800l); 07271: if(!(puzzle & 0x320120000000ll)) 07272: doSolve(30, 0x40000000ll, puzzle | 0x320120000000ll, 07273: partsUsed | 0x800l); 07274: if(!(puzzle & 0x120160000000ll)) 07275: doSolve(30, 0x40000000ll, puzzle | 0x120160000000ll, 07276: partsUsed | 0x800l); 07277: } 07278: if (!(puzzle & 0x40060000000ll)) { 07279: if(!(puzzle & 0x160060000000ll)) 07280: doSolve(30, 0x40000000ll, puzzle | 0x160060000000ll, 07281: partsUsed | 0x800l); 07282: if(!(puzzle & 0x240260000000ll)) 07283: doSolve(30, 0x40000000ll, puzzle | 0x240260000000ll, 07284: partsUsed | 0x800l); 07285: if(!(puzzle & 0x60260000000ll)) 07286: doSolve(30, 0x40000000ll, puzzle | 0x60260000000ll, 07287: partsUsed | 0x800l); 07288: if(!(puzzle & 0x260060000000ll)) 07289: doSolve(30, 0x40000000ll, puzzle | 0x260060000000ll, 07290: partsUsed | 0x800l); 07291: if(!(puzzle & 0x40360000000ll)) 07292: doSolve(30, 0x40000000ll, puzzle | 0x40360000000ll, 07293: partsUsed | 0x800l); 07294: } 07295: if (!(puzzle & 0x320000000ll)) { 07296: if(!(puzzle & 0x300320000000ll)) 07297: doSolve(30, 0x40000000ll, puzzle | 0x300320000000ll, 07298: partsUsed | 0x800l); 07299: if(!(puzzle & 0x200360000000ll)) 07300: doSolve(30, 0x40000000ll, puzzle | 0x200360000000ll, 07301: partsUsed | 0x800l); 07302: if(!(puzzle & 0x100360000000ll)) 07303: doSolve(30, 0x40000000ll, puzzle | 0x100360000000ll, 07304: partsUsed | 0x800l); 07305: } 07306: if(!(puzzle & 0x360020000000ll)) 07307: doSolve(30, 0x40000000ll, puzzle | 0x360020000000ll, 07308: partsUsed | 0x800l); 07309: piece12at29: 07310: break; 07311: case 30: 07312: if (partsUsed & 0x2l) goto piece2at30; 07313: if(!(puzzle & 0xf40000000ll)) 07314: doSolve(31, 0x80000000ll, puzzle | 0xf40000000ll, 07315: partsUsed | 0x2l); 07316: if(!(puzzle & 0x30060040000000ll)) 07317: doSolve(31, 0x80000000ll, puzzle | 0x30060040000000ll, 07318: partsUsed | 0x2l); 07319: if(!(puzzle & 0x1200240040000000ll)) 07320: doSolve(31, 0x80000000ll, puzzle | 0x1200240040000000ll, 07321: partsUsed | 0x2l); 07322: if(!(puzzle & 0x1001200240000000ll)) 07323: doSolve(31, 0x80000000ll, puzzle | 0x1001200240000000ll, 07324: partsUsed | 0x2l); 07325: piece2at30: 07326: if (partsUsed & 0x4l) goto piece3at30; 07327: if(!(puzzle & 0x13c0000000ll)) 07328: doSolve(31, 0x80000000ll, puzzle | 0x13c0000000ll, 07329: partsUsed | 0x4l); 07330: if(!(puzzle & 0x200201240000000ll)) 07331: doSolve(31, 0x80000000ll, puzzle | 0x200201240000000ll, 07332: partsUsed | 0x4l); 07333: if(!(puzzle & 0x40070040000000ll)) 07334: doSolve(31, 0x80000000ll, puzzle | 0x40070040000000ll, 07335: partsUsed | 0x4l); 07336: if(!(puzzle & 0x41240040000000ll)) 07337: doSolve(31, 0x80000000ll, puzzle | 0x41240040000000ll, 07338: partsUsed | 0x4l); 07339: piece3at30: 07340: if (partsUsed & 0x8l) goto piece4at30; 07341: if(!(puzzle & 0x7c0000000ll)) 07342: doSolve(31, 0x80000000ll, puzzle | 0x7c0000000ll, 07343: partsUsed | 0x8l); 07344: if(!(puzzle & 0x10070040000000ll)) 07345: doSolve(31, 0x80000000ll, puzzle | 0x10070040000000ll, 07346: partsUsed | 0x8l); 07347: if(!(puzzle & 0x1001240040000000ll)) 07348: doSolve(31, 0x80000000ll, puzzle | 0x1001240040000000ll, 07349: partsUsed | 0x8l); 07350: if(!(puzzle & 0x1200200240000000ll)) 07351: doSolve(31, 0x80000000ll, puzzle | 0x1200200240000000ll, 07352: partsUsed | 0x8l); 07353: piece4at30: 07354: if (partsUsed & 0x10l) goto piece5at30; 07355: if (!(puzzle & 0x9240000000ll)) { 07356: if(!(puzzle & 0xd340000000ll)) 07357: doSolve(31, 0x80000000ll, puzzle | 0xd340000000ll, 07358: partsUsed | 0x10l); 07359: if(!(puzzle & 0x1049240000000ll)) 07360: doSolve(31, 0x80000000ll, puzzle | 0x1049240000000ll, 07361: partsUsed | 0x10l); 07362: if(!(puzzle & 0x8209240000000ll)) 07363: doSolve(31, 0x80000000ll, puzzle | 0x8209240000000ll, 07364: partsUsed | 0x10l); 07365: } 07366: if(!(puzzle & 0x9241040000000ll)) 07367: doSolve(31, 0x80000000ll, puzzle | 0x9241040000000ll, 07368: partsUsed | 0x10l); 07369: piece5at30: 07370: if (partsUsed & 0x20l) goto piece6at30; 07371: if (!(puzzle & 0x9240000000ll)) { 07372: if(!(puzzle & 0xd240000000ll)) 07373: doSolve(31, 0x80000000ll, puzzle | 0xd240000000ll, 07374: partsUsed | 0x20l); 07375: if(!(puzzle & 0x8009240000000ll)) 07376: doSolve(31, 0x80000000ll, puzzle | 0x8009240000000ll, 07377: partsUsed | 0x20l); 07378: if(!(puzzle & 0x49240000000ll)) 07379: doSolve(31, 0x80000000ll, puzzle | 0x49240000000ll, 07380: partsUsed | 0x20l); 07381: } 07382: if(!(puzzle & 0x9240040000000ll)) 07383: doSolve(31, 0x80000000ll, puzzle | 0x9240040000000ll, 07384: partsUsed | 0x20l); 07385: piece6at30: 07386: if (partsUsed & 0x40l) goto piece7at30; 07387: if (!(puzzle & 0x9240000000ll)) { 07388: if(!(puzzle & 0x9340000000ll)) 07389: doSolve(31, 0x80000000ll, puzzle | 0x9340000000ll, 07390: partsUsed | 0x40l); 07391: if(!(puzzle & 0x9a40000000ll)) 07392: doSolve(31, 0x80000000ll, puzzle | 0x9a40000000ll, 07393: partsUsed | 0x40l); 07394: if(!(puzzle & 0x1009240000000ll)) 07395: doSolve(31, 0x80000000ll, puzzle | 0x1009240000000ll, 07396: partsUsed | 0x40l); 07397: if(!(puzzle & 0x209240000000ll)) 07398: doSolve(31, 0x80000000ll, puzzle | 0x209240000000ll, 07399: partsUsed | 0x40l); 07400: } 07401: piece7at30: 07402: if (partsUsed & 0x80l) goto piece8at30; 07403: if(!(puzzle & 0x240040240000000ll)) 07404: doSolve(31, 0x80000000ll, puzzle | 0x240040240000000ll, 07405: partsUsed | 0x80l); 07406: if(!(puzzle & 0x240200240000000ll)) 07407: doSolve(31, 0x80000000ll, puzzle | 0x240200240000000ll, 07408: partsUsed | 0x80l); 07409: if(!(puzzle & 0x1241040000000ll)) 07410: doSolve(31, 0x80000000ll, puzzle | 0x1241040000000ll, 07411: partsUsed | 0x80l); 07412: if(!(puzzle & 0x1041240000000ll)) 07413: doSolve(31, 0x80000000ll, puzzle | 0x1041240000000ll, 07414: partsUsed | 0x80l); 07415: piece8at30: 07416: if (partsUsed & 0x100l) goto piece9at30; 07417: if(!(puzzle & 0x340040000000ll)) 07418: doSolve(31, 0x80000000ll, puzzle | 0x340040000000ll, 07419: partsUsed | 0x100l); 07420: if(!(puzzle & 0x100340000000ll)) 07421: doSolve(31, 0x80000000ll, puzzle | 0x100340000000ll, 07422: partsUsed | 0x100l); 07423: if(!(puzzle & 0x60240000000ll)) 07424: doSolve(31, 0x80000000ll, puzzle | 0x60240000000ll, 07425: partsUsed | 0x100l); 07426: piece9at30: 07427: if (partsUsed & 0x200l) goto piece10at30; 07428: if(!(puzzle & 0xbc0000000ll)) 07429: doSolve(31, 0x80000000ll, puzzle | 0xbc0000000ll, 07430: partsUsed | 0x200l); 07431: if(!(puzzle & 0x20070040000000ll)) 07432: doSolve(31, 0x80000000ll, puzzle | 0x20070040000000ll, 07433: partsUsed | 0x200l); 07434: if(!(puzzle & 0x201240040000000ll)) 07435: doSolve(31, 0x80000000ll, puzzle | 0x201240040000000ll, 07436: partsUsed | 0x200l); 07437: if(!(puzzle & 0x201200240000000ll)) 07438: doSolve(31, 0x80000000ll, puzzle | 0x201200240000000ll, 07439: partsUsed | 0x200l); 07440: piece10at30: 07441: if (partsUsed & 0x400l) goto piece11at30; 07442: if (!(puzzle & 0x1240000000ll)) { 07443: if(!(puzzle & 0x1b40000000ll)) 07444: doSolve(31, 0x80000000ll, puzzle | 0x1b40000000ll, 07445: partsUsed | 0x400l); 07446: if(!(puzzle & 0x1201240000000ll)) 07447: doSolve(31, 0x80000000ll, puzzle | 0x1201240000000ll, 07448: partsUsed | 0x400l); 07449: if(!(puzzle & 0x241240000000ll)) 07450: doSolve(31, 0x80000000ll, puzzle | 0x241240000000ll, 07451: partsUsed | 0x400l); 07452: } 07453: if (!(puzzle & 0x40040040000000ll)) { 07454: if(!(puzzle & 0x60060040000000ll)) 07455: doSolve(31, 0x80000000ll, puzzle | 0x60060040000000ll, 07456: partsUsed | 0x400l); 07457: if(!(puzzle & 0x40240240000000ll)) 07458: doSolve(31, 0x80000000ll, puzzle | 0x40240240000000ll, 07459: partsUsed | 0x400l); 07460: if(!(puzzle & 0x240240040000000ll)) 07461: doSolve(31, 0x80000000ll, puzzle | 0x240240040000000ll, 07462: partsUsed | 0x400l); 07463: } 07464: if(!(puzzle & 0x1240240000000ll)) 07465: doSolve(31, 0x80000000ll, puzzle | 0x1240240000000ll, 07466: partsUsed | 0x400l); 07467: if(!(puzzle & 0x200240240000000ll)) 07468: doSolve(31, 0x80000000ll, puzzle | 0x200240240000000ll, 07469: partsUsed | 0x400l); 07470: piece11at30: 07471: if (partsUsed & 0x800l) goto piece12at30; 07472: if (!(puzzle & 0x300040000000ll)) { 07473: if(!(puzzle & 0x360040000000ll)) 07474: doSolve(31, 0x80000000ll, puzzle | 0x360040000000ll, 07475: partsUsed | 0x800l); 07476: if(!(puzzle & 0x340240000000ll)) 07477: doSolve(31, 0x80000000ll, puzzle | 0x340240000000ll, 07478: partsUsed | 0x800l); 07479: if(!(puzzle & 0x300340000000ll)) 07480: doSolve(31, 0x80000000ll, puzzle | 0x300340000000ll, 07481: partsUsed | 0x800l); 07482: } 07483: if(!(puzzle & 0x260240000000ll)) 07484: doSolve(31, 0x80000000ll, puzzle | 0x260240000000ll, 07485: partsUsed | 0x800l); 07486: if(!(puzzle & 0x240340000000ll)) 07487: doSolve(31, 0x80000000ll, puzzle | 0x240340000000ll, 07488: partsUsed | 0x800l); 07489: piece12at30: 07490: break; 07491: case 31: 07492: if (partsUsed & 0x2l) goto piece2at31; 07493: if(!(puzzle & 0x10090480000000ll)) 07494: doSolve(32, 0x100000000ll, puzzle | 0x10090480000000ll, 07495: partsUsed | 0x2l); 07496: if(!(puzzle & 0x2400480080000000ll)) 07497: doSolve(32, 0x100000000ll, puzzle | 0x2400480080000000ll, 07498: partsUsed | 0x2l); 07499: if(!(puzzle & 0x2002400480000000ll)) 07500: doSolve(32, 0x100000000ll, puzzle | 0x2002400480000000ll, 07501: partsUsed | 0x2l); 07502: if(!(puzzle & 0x9980000000ll)) 07503: doSolve(32, 0x100000000ll, puzzle | 0x9980000000ll, 07504: partsUsed | 0x2l); 07505: if(!(puzzle & 0xcc80000000ll)) 07506: doSolve(32, 0x100000000ll, puzzle | 0xcc80000000ll, 07507: partsUsed | 0x2l); 07508: if(!(puzzle & 0x200300180000000ll)) 07509: doSolve(32, 0x100000000ll, puzzle | 0x200300180000000ll, 07510: partsUsed | 0x2l); 07511: if(!(puzzle & 0x300180080000000ll)) 07512: doSolve(32, 0x100000000ll, puzzle | 0x300180080000000ll, 07513: partsUsed | 0x2l); 07514: piece2at31: 07515: if (partsUsed & 0x4l) goto piece3at31; 07516: if (!(puzzle & 0x80080080000000ll)) { 07517: if(!(puzzle & 0x490080080000000ll)) 07518: doSolve(32, 0x100000000ll, puzzle | 0x490080080000000ll, 07519: partsUsed | 0x4l); 07520: if(!(puzzle & 0x82480080000000ll)) 07521: doSolve(32, 0x100000000ll, puzzle | 0x82480080000000ll, 07522: partsUsed | 0x4l); 07523: if(!(puzzle & 0x80380080000000ll)) 07524: doSolve(32, 0x100000000ll, puzzle | 0x80380080000000ll, 07525: partsUsed | 0x4l); 07526: } 07527: if(!(puzzle & 0x400402480000000ll)) 07528: doSolve(32, 0x100000000ll, puzzle | 0x400402480000000ll, 07529: partsUsed | 0x4l); 07530: if(!(puzzle & 0x3c80000000ll)) 07531: doSolve(32, 0x100000000ll, puzzle | 0x3c80000000ll, 07532: partsUsed | 0x4l); 07533: if(!(puzzle & 0x4b80000000ll)) 07534: doSolve(32, 0x100000000ll, puzzle | 0x4b80000000ll, 07535: partsUsed | 0x4l); 07536: if(!(puzzle & 0x100100380000000ll)) 07537: doSolve(32, 0x100000000ll, puzzle | 0x100100380000000ll, 07538: partsUsed | 0x4l); 07539: piece3at31: 07540: if (partsUsed & 0x8l) goto piece4at31; 07541: if(!(puzzle & 0x90080480000000ll)) 07542: doSolve(32, 0x100000000ll, puzzle | 0x90080480000000ll, 07543: partsUsed | 0x8l); 07544: if(!(puzzle & 0x2002480080000000ll)) 07545: doSolve(32, 0x100000000ll, puzzle | 0x2002480080000000ll, 07546: partsUsed | 0x8l); 07547: if(!(puzzle & 0x2400400480000000ll)) 07548: doSolve(32, 0x100000000ll, puzzle | 0x2400400480000000ll, 07549: partsUsed | 0x8l); 07550: if(!(puzzle & 0xc980000000ll)) 07551: doSolve(32, 0x100000000ll, puzzle | 0xc980000000ll, 07552: partsUsed | 0x8l); 07553: if(!(puzzle & 0x9c80000000ll)) 07554: doSolve(32, 0x100000000ll, puzzle | 0x9c80000000ll, 07555: partsUsed | 0x8l); 07556: if(!(puzzle & 0x200380080000000ll)) 07557: doSolve(32, 0x100000000ll, puzzle | 0x200380080000000ll, 07558: partsUsed | 0x8l); 07559: if(!(puzzle & 0x300100180000000ll)) 07560: doSolve(32, 0x100000000ll, puzzle | 0x300100180000000ll, 07561: partsUsed | 0x8l); 07562: piece4at31: 07563: if (partsUsed & 0x10l) goto piece5at31; 07564: if(!(puzzle & 0x2492080000000ll)) 07565: doSolve(32, 0x100000000ll, puzzle | 0x2492080000000ll, 07566: partsUsed | 0x10l); 07567: piece5at31: 07568: if (partsUsed & 0x40l) goto piece7at31; 07569: if(!(puzzle & 0x2490080000000ll)) 07570: doSolve(32, 0x100000000ll, puzzle | 0x2490080000000ll, 07571: partsUsed | 0x40l); 07572: piece7at31: 07573: if (partsUsed & 0x80l) goto piece8at31; 07574: if(!(puzzle & 0x480080480000000ll)) 07575: doSolve(32, 0x100000000ll, puzzle | 0x480080480000000ll, 07576: partsUsed | 0x80l); 07577: if(!(puzzle & 0x480400480000000ll)) 07578: doSolve(32, 0x100000000ll, puzzle | 0x480400480000000ll, 07579: partsUsed | 0x80l); 07580: if(!(puzzle & 0x2482080000000ll)) 07581: doSolve(32, 0x100000000ll, puzzle | 0x2482080000000ll, 07582: partsUsed | 0x80l); 07583: if(!(puzzle & 0x2082480000000ll)) 07584: doSolve(32, 0x100000000ll, puzzle | 0x2082480000000ll, 07585: partsUsed | 0x80l); 07586: if(!(puzzle & 0x1780000000ll)) 07587: doSolve(32, 0x100000000ll, puzzle | 0x1780000000ll, 07588: partsUsed | 0x80l); 07589: if(!(puzzle & 0x6580000000ll)) 07590: doSolve(32, 0x100000000ll, puzzle | 0x6580000000ll, 07591: partsUsed | 0x80l); 07592: if(!(puzzle & 0x6980000000ll)) 07593: doSolve(32, 0x100000000ll, puzzle | 0x6980000000ll, 07594: partsUsed | 0x80l); 07595: if(!(puzzle & 0x1e80000000ll)) 07596: doSolve(32, 0x100000000ll, puzzle | 0x1e80000000ll, 07597: partsUsed | 0x80l); 07598: if(!(puzzle & 0x180100180000000ll)) 07599: doSolve(32, 0x100000000ll, puzzle | 0x180100180000000ll, 07600: partsUsed | 0x80l); 07601: if(!(puzzle & 0x180080180000000ll)) 07602: doSolve(32, 0x100000000ll, puzzle | 0x180080180000000ll, 07603: partsUsed | 0x80l); 07604: if(!(puzzle & 0x380280000000ll)) 07605: doSolve(32, 0x100000000ll, puzzle | 0x380280000000ll, 07606: partsUsed | 0x80l); 07607: if(!(puzzle & 0x280380000000ll)) 07608: doSolve(32, 0x100000000ll, puzzle | 0x280380000000ll, 07609: partsUsed | 0x80l); 07610: piece8at31: 07611: if (partsUsed & 0x100l) goto piece9at31; 07612: if(!(puzzle & 0x120180000000ll)) 07613: doSolve(32, 0x100000000ll, puzzle | 0x120180000000ll, 07614: partsUsed | 0x100l); 07615: if(!(puzzle & 0x100580000000ll)) 07616: doSolve(32, 0x100000000ll, puzzle | 0x100580000000ll, 07617: partsUsed | 0x100l); 07618: if(!(puzzle & 0xb0080000000ll)) 07619: doSolve(32, 0x100000000ll, puzzle | 0xb0080000000ll, 07620: partsUsed | 0x100l); 07621: if(!(puzzle & 0x980080000000ll)) 07622: doSolve(32, 0x100000000ll, puzzle | 0x980080000000ll, 07623: partsUsed | 0x100l); 07624: if(!(puzzle & 0x480180000000ll)) 07625: doSolve(32, 0x100000000ll, puzzle | 0x480180000000ll, 07626: partsUsed | 0x100l); 07627: if(!(puzzle & 0xc00480000000ll)) 07628: doSolve(32, 0x100000000ll, puzzle | 0xc00480000000ll, 07629: partsUsed | 0x100l); 07630: if(!(puzzle & 0x80c80000000ll)) 07631: doSolve(32, 0x100000000ll, puzzle | 0x80c80000000ll, 07632: partsUsed | 0x100l); 07633: if(!(puzzle & 0x800980000000ll)) 07634: doSolve(32, 0x100000000ll, puzzle | 0x800980000000ll, 07635: partsUsed | 0x100l); 07636: piece9at31: 07637: if (partsUsed & 0x200l) goto piece10at31; 07638: if (!(puzzle & 0x80080080000000ll)) { 07639: if(!(puzzle & 0x80090480000000ll)) 07640: doSolve(32, 0x100000000ll, puzzle | 0x80090480000000ll, 07641: partsUsed | 0x200l); 07642: if(!(puzzle & 0x90480080000000ll)) 07643: doSolve(32, 0x100000000ll, puzzle | 0x90480080000000ll, 07644: partsUsed | 0x200l); 07645: if(!(puzzle & 0x480090080000000ll)) 07646: doSolve(32, 0x100000000ll, puzzle | 0x480090080000000ll, 07647: partsUsed | 0x200l); 07648: } 07649: if (!(puzzle & 0x480080000000ll)) { 07650: if(!(puzzle & 0x400490080000000ll)) 07651: doSolve(32, 0x100000000ll, puzzle | 0x400490080000000ll, 07652: partsUsed | 0x200l); 07653: if(!(puzzle & 0x10490080000000ll)) 07654: doSolve(32, 0x100000000ll, puzzle | 0x10490080000000ll, 07655: partsUsed | 0x200l); 07656: if(!(puzzle & 0x402480080000000ll)) 07657: doSolve(32, 0x100000000ll, puzzle | 0x402480080000000ll, 07658: partsUsed | 0x200l); 07659: } 07660: if(!(puzzle & 0x5980000000ll)) 07661: doSolve(32, 0x100000000ll, puzzle | 0x5980000000ll, 07662: partsUsed | 0x200l); 07663: if(!(puzzle & 0x5c80000000ll)) 07664: doSolve(32, 0x100000000ll, puzzle | 0x5c80000000ll, 07665: partsUsed | 0x200l); 07666: if(!(puzzle & 0x402400480000000ll)) 07667: doSolve(32, 0x100000000ll, puzzle | 0x402400480000000ll, 07668: partsUsed | 0x200l); 07669: if(!(puzzle & 0x100300180000000ll)) 07670: doSolve(32, 0x100000000ll, puzzle | 0x100300180000000ll, 07671: partsUsed | 0x200l); 07672: if(!(puzzle & 0x100380080000000ll)) 07673: doSolve(32, 0x100000000ll, puzzle | 0x100380080000000ll, 07674: partsUsed | 0x200l); 07675: piece10at31: 07676: if (partsUsed & 0x400l) goto piece11at31; 07677: if (!(puzzle & 0x400480000000ll)) { 07678: if(!(puzzle & 0x80480480000000ll)) 07679: doSolve(32, 0x100000000ll, puzzle | 0x80480480000000ll, 07680: partsUsed | 0x400l); 07681: if(!(puzzle & 0x2480480000000ll)) 07682: doSolve(32, 0x100000000ll, puzzle | 0x2480480000000ll, 07683: partsUsed | 0x400l); 07684: if(!(puzzle & 0x2402480000000ll)) 07685: doSolve(32, 0x100000000ll, puzzle | 0x2402480000000ll, 07686: partsUsed | 0x400l); 07687: if(!(puzzle & 0x482480000000ll)) 07688: doSolve(32, 0x100000000ll, puzzle | 0x482480000000ll, 07689: partsUsed | 0x400l); 07690: if(!(puzzle & 0x400480480000000ll)) 07691: doSolve(32, 0x100000000ll, puzzle | 0x400480480000000ll, 07692: partsUsed | 0x400l); 07693: } 07694: if (!(puzzle & 0x980000000ll)) { 07695: if(!(puzzle & 0x1b80000000ll)) 07696: doSolve(32, 0x100000000ll, puzzle | 0x1b80000000ll, 07697: partsUsed | 0x400l); 07698: if(!(puzzle & 0xf80000000ll)) 07699: doSolve(32, 0x100000000ll, puzzle | 0xf80000000ll, 07700: partsUsed | 0x400l); 07701: if(!(puzzle & 0x2d80000000ll)) 07702: doSolve(32, 0x100000000ll, puzzle | 0x2d80000000ll, 07703: partsUsed | 0x400l); 07704: if(!(puzzle & 0x4d80000000ll)) 07705: doSolve(32, 0x100000000ll, puzzle | 0x4d80000000ll, 07706: partsUsed | 0x400l); 07707: if(!(puzzle & 0x1d80000000ll)) 07708: doSolve(32, 0x100000000ll, puzzle | 0x1d80000000ll, 07709: partsUsed | 0x400l); 07710: } 07711: if (!(puzzle & 0x80080080000000ll)) { 07712: if(!(puzzle & 0x480480080000000ll)) 07713: doSolve(32, 0x100000000ll, puzzle | 0x480480080000000ll, 07714: partsUsed | 0x400l); 07715: if(!(puzzle & 0x80180180000000ll)) 07716: doSolve(32, 0x100000000ll, puzzle | 0x80180180000000ll, 07717: partsUsed | 0x400l); 07718: if(!(puzzle & 0x180180080000000ll)) 07719: doSolve(32, 0x100000000ll, puzzle | 0x180180080000000ll, 07720: partsUsed | 0x400l); 07721: } 07722: if (!(puzzle & 0x100180000000ll)) { 07723: if(!(puzzle & 0x100180180000000ll)) 07724: doSolve(32, 0x100000000ll, puzzle | 0x100180180000000ll, 07725: partsUsed | 0x400l); 07726: if(!(puzzle & 0x380180000000ll)) 07727: doSolve(32, 0x100000000ll, puzzle | 0x380180000000ll, 07728: partsUsed | 0x400l); 07729: if(!(puzzle & 0x180380000000ll)) 07730: doSolve(32, 0x100000000ll, puzzle | 0x180380000000ll, 07731: partsUsed | 0x400l); 07732: if(!(puzzle & 0x300380000000ll)) 07733: doSolve(32, 0x100000000ll, puzzle | 0x300380000000ll, 07734: partsUsed | 0x400l); 07735: } 07736: if(!(puzzle & 0x90090080000000ll)) 07737: doSolve(32, 0x100000000ll, puzzle | 0x90090080000000ll, 07738: partsUsed | 0x400l); 07739: if(!(puzzle & 0x490480000000ll)) 07740: doSolve(32, 0x100000000ll, puzzle | 0x490480000000ll, 07741: partsUsed | 0x400l); 07742: if(!(puzzle & 0x6c80000000ll)) 07743: doSolve(32, 0x100000000ll, puzzle | 0x6c80000000ll, 07744: partsUsed | 0x400l); 07745: piece11at31: 07746: if (partsUsed & 0x800l) goto piece12at31; 07747: if (!(puzzle & 0x180080000000ll)) { 07748: if(!(puzzle & 0x1b0080000000ll)) 07749: doSolve(32, 0x100000000ll, puzzle | 0x1b0080000000ll, 07750: partsUsed | 0x800l); 07751: if(!(puzzle & 0x1a0180000000ll)) 07752: doSolve(32, 0x100000000ll, puzzle | 0x1a0180000000ll, 07753: partsUsed | 0x800l); 07754: if(!(puzzle & 0x190180000000ll)) 07755: doSolve(32, 0x100000000ll, puzzle | 0x190180000000ll, 07756: partsUsed | 0x800l); 07757: if(!(puzzle & 0x580180000000ll)) 07758: doSolve(32, 0x100000000ll, puzzle | 0x580180000000ll, 07759: partsUsed | 0x800l); 07760: if(!(puzzle & 0x580480000000ll)) 07761: doSolve(32, 0x100000000ll, puzzle | 0x580480000000ll, 07762: partsUsed | 0x800l); 07763: if(!(puzzle & 0x180580000000ll)) 07764: doSolve(32, 0x100000000ll, puzzle | 0x180580000000ll, 07765: partsUsed | 0x800l); 07766: if(!(puzzle & 0x180980000000ll)) 07767: doSolve(32, 0x100000000ll, puzzle | 0x180980000000ll, 07768: partsUsed | 0x800l); 07769: if(!(puzzle & 0x980180000000ll)) 07770: doSolve(32, 0x100000000ll, puzzle | 0x980180000000ll, 07771: partsUsed | 0x800l); 07772: if(!(puzzle & 0xd80080000000ll)) 07773: doSolve(32, 0x100000000ll, puzzle | 0xd80080000000ll, 07774: partsUsed | 0x800l); 07775: } 07776: if (!(puzzle & 0xc80000000ll)) { 07777: if(!(puzzle & 0x80d80000000ll)) 07778: doSolve(32, 0x100000000ll, puzzle | 0x80d80000000ll, 07779: partsUsed | 0x800l); 07780: if(!(puzzle & 0xc00c80000000ll)) 07781: doSolve(32, 0x100000000ll, puzzle | 0xc00c80000000ll, 07782: partsUsed | 0x800l); 07783: if(!(puzzle & 0x480c80000000ll)) 07784: doSolve(32, 0x100000000ll, puzzle | 0x480c80000000ll, 07785: partsUsed | 0x800l); 07786: if(!(puzzle & 0x800d80000000ll)) 07787: doSolve(32, 0x100000000ll, puzzle | 0x800d80000000ll, 07788: partsUsed | 0x800l); 07789: if(!(puzzle & 0x100d80000000ll)) 07790: doSolve(32, 0x100000000ll, puzzle | 0x100d80000000ll, 07791: partsUsed | 0x800l); 07792: if(!(puzzle & 0x400d80000000ll)) 07793: doSolve(32, 0x100000000ll, puzzle | 0x400d80000000ll, 07794: partsUsed | 0x800l); 07795: } 07796: if(!(puzzle & 0x900980000000ll)) 07797: doSolve(32, 0x100000000ll, puzzle | 0x900980000000ll, 07798: partsUsed | 0x800l); 07799: if(!(puzzle & 0xc80480000000ll)) 07800: doSolve(32, 0x100000000ll, puzzle | 0xc80480000000ll, 07801: partsUsed | 0x800l); 07802: if(!(puzzle & 0x480580000000ll)) 07803: doSolve(32, 0x100000000ll, puzzle | 0x480580000000ll, 07804: partsUsed | 0x800l); 07805: piece12at31: 07806: break; 07807: } 07808: } 07809: 07810: 07811: void doSolve32(int start, int startMask, int puzzle, int partsUsed) 07812: { 07813: for (;(puzzle & startMask) && start < NUM_HI_BITS; start++, startMask <<= 1); 07814: if(partsUsed == (1<<12)-1) { 07815: if(!(++numSolutions%4099)) { write(0, ".", 1); } 07816: if(!((numSolutions) % (409963/10))) { 07817: percent++; 07818: printf("\r%d%% done, %ld seconds so far; expecting %.0lf seconds.\n", 07819: percent*10, (clock()-startTime)/1000000, ((double)(clock()-startTime)/100000/percent)*correction[percent-1]); 07820: fflush(stdout); 07821: } 07822: return; 07823: } 07824: switch(start) { 07825: case 0: 07826: if (partsUsed & 0x2l) goto piece2at0at32; 07827: if(!(puzzle & 0x201209l)) 07828: doSolve32(1, 0x2l, puzzle | 0x201209l, partsUsed | 0x2l); 07829: if(!(puzzle & 0x2fl)) 07830: doSolve32(1, 0x2l, puzzle | 0x2fl, partsUsed | 0x2l); 07831: if(!(puzzle & 0x801803l)) 07832: doSolve32(1, 0x2l, puzzle | 0x801803l, partsUsed | 0x2l); 07833: if(!(puzzle & 0x48009001l)) 07834: doSolve32(1, 0x2l, puzzle | 0x48009001l, partsUsed | 0x2l); 07835: if(!(puzzle & 0x40048009l)) 07836: doSolve32(1, 0x2l, puzzle | 0x40048009l, partsUsed | 0x2l); 07837: piece2at0at32: 07838: if (partsUsed & 0x4l) goto piece3at0at32; 07839: if (!(puzzle & 0x1001001l)) { 07840: if(!(puzzle & 0x9201001l)) 07841: doSolve32(1, 0x2l, puzzle | 0x9201001l, partsUsed | 0x4l); 07842: if(!(puzzle & 0x3801001l)) 07843: doSolve32(1, 0x2l, puzzle | 0x3801001l, partsUsed | 0x4l); 07844: if(!(puzzle & 0x1049001l)) 07845: doSolve32(1, 0x2l, puzzle | 0x1049001l, partsUsed | 0x4l); 07846: } 07847: if(!(puzzle & 0xe9l)) 07848: doSolve32(1, 0x2l, puzzle | 0xe9l, partsUsed | 0x4l); 07849: if(!(puzzle & 0x8008049l)) 07850: doSolve32(1, 0x2l, puzzle | 0x8008049l, partsUsed | 0x4l); 07851: piece3at0at32: 07852: if (partsUsed & 0x8l) goto piece4at0at32; 07853: if(!(puzzle & 0x1201009l)) 07854: doSolve32(1, 0x2l, puzzle | 0x1201009l, partsUsed | 0x8l); 07855: if(!(puzzle & 0x1801003l)) 07856: doSolve32(1, 0x2l, puzzle | 0x1801003l, partsUsed | 0x8l); 07857: if(!(puzzle & 0x6bl)) 07858: doSolve32(1, 0x2l, puzzle | 0x6bl, partsUsed | 0x8l); 07859: if(!(puzzle & 0x40049001l)) 07860: doSolve32(1, 0x2l, puzzle | 0x40049001l, partsUsed | 0x8l); 07861: if(!(puzzle & 0x48008009l)) 07862: doSolve32(1, 0x2l, puzzle | 0x48008009l, partsUsed | 0x8l); 07863: piece4at0at32: 07864: if (partsUsed & 0x10l) goto piece5at0at32; 07865: if(!(puzzle & 0x49241l)) 07866: doSolve32(1, 0x2l, puzzle | 0x49241l, partsUsed | 0x10l); 07867: piece5at0at32: 07868: if (partsUsed & 0x40l) goto piece7at0at32; 07869: if(!(puzzle & 0x49201l)) 07870: doSolve32(1, 0x2l, puzzle | 0x49201l, partsUsed | 0x40l); 07871: piece7at0at32: 07872: if (partsUsed & 0x80l) goto piece8at0at32; 07873: if(!(puzzle & 0x9001009l)) 07874: doSolve32(1, 0x2l, puzzle | 0x9001009l, partsUsed | 0x80l); 07875: if(!(puzzle & 0x9008009l)) 07876: doSolve32(1, 0x2l, puzzle | 0x9008009l, partsUsed | 0x80l); 07877: if(!(puzzle & 0x49041l)) 07878: doSolve32(1, 0x2l, puzzle | 0x49041l, partsUsed | 0x80l); 07879: if(!(puzzle & 0x41049l)) 07880: doSolve32(1, 0x2l, puzzle | 0x41049l, partsUsed | 0x80l); 07881: if(!(puzzle & 0xcbl)) 07882: doSolve32(1, 0x2l, puzzle | 0xcbl, partsUsed | 0x80l); 07883: if(!(puzzle & 0xd3l)) 07884: doSolve32(1, 0x2l, puzzle | 0xd3l, partsUsed | 0x80l); 07885: if(!(puzzle & 0x3002003l)) 07886: doSolve32(1, 0x2l, puzzle | 0x3002003l, partsUsed | 0x80l); 07887: if(!(puzzle & 0x3001003l)) 07888: doSolve32(1, 0x2l, puzzle | 0x3001003l, partsUsed | 0x80l); 07889: piece8at0at32: 07890: if (partsUsed & 0x100l) goto piece9at0at32; 07891: if(!(puzzle & 0x1901l)) 07892: doSolve32(1, 0x2l, puzzle | 0x1901l, partsUsed | 0x100l); 07893: if(!(puzzle & 0x1809l)) 07894: doSolve32(1, 0x2l, puzzle | 0x1809l, partsUsed | 0x100l); 07895: if(!(puzzle & 0x2403l)) 07896: doSolve32(1, 0x2l, puzzle | 0x2403l, partsUsed | 0x100l); 07897: if(!(puzzle & 0x200bl)) 07898: doSolve32(1, 0x2l, puzzle | 0x200bl, partsUsed | 0x100l); 07899: if(!(puzzle & 0x1601l)) 07900: doSolve32(1, 0x2l, puzzle | 0x1601l, partsUsed | 0x100l); 07901: if(!(puzzle & 0x400dl)) 07902: doSolve32(1, 0x2l, puzzle | 0x400dl, partsUsed | 0x100l); 07903: if(!(puzzle & 0xd001l)) 07904: doSolve32(1, 0x2l, puzzle | 0xd001l, partsUsed | 0x100l); 07905: if(!(puzzle & 0x9003l)) 07906: doSolve32(1, 0x2l, puzzle | 0x9003l, partsUsed | 0x100l); 07907: if(!(puzzle & 0x13001l)) 07908: doSolve32(1, 0x2l, puzzle | 0x13001l, partsUsed | 0x100l); 07909: if(!(puzzle & 0x18009l)) 07910: doSolve32(1, 0x2l, puzzle | 0x18009l, partsUsed | 0x100l); 07911: if(!(puzzle & 0x1019l)) 07912: doSolve32(1, 0x2l, puzzle | 0x1019l, partsUsed | 0x100l); 07913: if(!(puzzle & 0x10013l)) 07914: doSolve32(1, 0x2l, puzzle | 0x10013l, partsUsed | 0x100l); 07915: piece9at0at32: 07916: if (partsUsed & 0x200l) goto piece10at0at32; 07917: if (!(puzzle & 0x1001001l)) { 07918: if(!(puzzle & 0x1001209l)) 07919: doSolve32(1, 0x2l, puzzle | 0x1001209l, partsUsed | 0x200l); 07920: if(!(puzzle & 0x1209001l)) 07921: doSolve32(1, 0x2l, puzzle | 0x1209001l, partsUsed | 0x200l); 07922: if(!(puzzle & 0x9001201l)) 07923: doSolve32(1, 0x2l, puzzle | 0x9001201l, partsUsed | 0x200l); 07924: if(!(puzzle & 0x1001803l)) 07925: doSolve32(1, 0x2l, puzzle | 0x1001803l, partsUsed | 0x200l); 07926: if(!(puzzle & 0x3001801l)) 07927: doSolve32(1, 0x2l, puzzle | 0x3001801l, partsUsed | 0x200l); 07928: if(!(puzzle & 0x1803001l)) 07929: doSolve32(1, 0x2l, puzzle | 0x1803001l, partsUsed | 0x200l); 07930: } 07931: if (!(puzzle & 0x9001l)) { 07932: if(!(puzzle & 0x8009201l)) 07933: doSolve32(1, 0x2l, puzzle | 0x8009201l, partsUsed | 0x200l); 07934: if(!(puzzle & 0x209201l)) 07935: doSolve32(1, 0x2l, puzzle | 0x209201l, partsUsed | 0x200l); 07936: if(!(puzzle & 0x8049001l)) 07937: doSolve32(1, 0x2l, puzzle | 0x8049001l, partsUsed | 0x200l); 07938: } 07939: if (!(puzzle & 0xdl)) { 07940: if(!(puzzle & 0x9dl)) 07941: doSolve32(1, 0x2l, puzzle | 0x9dl, partsUsed | 0x200l); 07942: if(!(puzzle & 0x3dl)) 07943: doSolve32(1, 0x2l, puzzle | 0x3dl, partsUsed | 0x200l); 07944: if(!(puzzle & 0x4fl)) 07945: doSolve32(1, 0x2l, puzzle | 0x4fl, partsUsed | 0x200l); 07946: if(!(puzzle & 0xcdl)) 07947: doSolve32(1, 0x2l, puzzle | 0xcdl, partsUsed | 0x200l); 07948: } 07949: if(!(puzzle & 0x79l)) 07950: doSolve32(1, 0x2l, puzzle | 0x79l, partsUsed | 0x200l); 07951: if(!(puzzle & 0x803801l)) 07952: doSolve32(1, 0x2l, puzzle | 0x803801l, partsUsed | 0x200l); 07953: if(!(puzzle & 0x2003801l)) 07954: doSolve32(1, 0x2l, puzzle | 0x2003801l, partsUsed | 0x200l); 07955: if(!(puzzle & 0x8048009l)) 07956: doSolve32(1, 0x2l, puzzle | 0x8048009l, partsUsed | 0x200l); 07957: piece10at0at32: 07958: if (partsUsed & 0x400l) goto piece11at0at32; 07959: if (!(puzzle & 0x8009l)) { 07960: if(!(puzzle & 0x1009009l)) 07961: doSolve32(1, 0x2l, puzzle | 0x1009009l, partsUsed | 0x400l); 07962: if(!(puzzle & 0x49009l)) 07963: doSolve32(1, 0x2l, puzzle | 0x49009l, partsUsed | 0x400l); 07964: if(!(puzzle & 0x48049l)) 07965: doSolve32(1, 0x2l, puzzle | 0x48049l, partsUsed | 0x400l); 07966: if(!(puzzle & 0x9049l)) 07967: doSolve32(1, 0x2l, puzzle | 0x9049l, partsUsed | 0x400l); 07968: if(!(puzzle & 0x8009009l)) 07969: doSolve32(1, 0x2l, puzzle | 0x8009009l, partsUsed | 0x400l); 07970: } 07971: if (!(puzzle & 0x1001001l)) { 07972: if(!(puzzle & 0x9009001l)) 07973: doSolve32(1, 0x2l, puzzle | 0x9009001l, partsUsed | 0x400l); 07974: if(!(puzzle & 0x1003003l)) 07975: doSolve32(1, 0x2l, puzzle | 0x1003003l, partsUsed | 0x400l); 07976: if(!(puzzle & 0x3003001l)) 07977: doSolve32(1, 0x2l, puzzle | 0x3003001l, partsUsed | 0x400l); 07978: } 07979: if (!(puzzle & 0x19l)) { 07980: if(!(puzzle & 0x5bl)) 07981: doSolve32(1, 0x2l, puzzle | 0x5bl, partsUsed | 0x400l); 07982: if(!(puzzle & 0x9bl)) 07983: doSolve32(1, 0x2l, puzzle | 0x9bl, partsUsed | 0x400l); 07984: if(!(puzzle & 0xd9l)) 07985: doSolve32(1, 0x2l, puzzle | 0xd9l, partsUsed | 0x400l); 07986: } 07987: if(!(puzzle & 0x1201201l)) 07988: doSolve32(1, 0x2l, puzzle | 0x1201201l, partsUsed | 0x400l); 07989: if(!(puzzle & 0x9209l)) 07990: doSolve32(1, 0x2l, puzzle | 0x9209l, partsUsed | 0x400l); 07991: if(!(puzzle & 0x1fl)) 07992: doSolve32(1, 0x2l, puzzle | 0x1fl, partsUsed | 0x400l); 07993: if(!(puzzle & 0x6dl)) 07994: doSolve32(1, 0x2l, puzzle | 0x6dl, partsUsed | 0x400l); 07995: if(!(puzzle & 0x3803l)) 07996: doSolve32(1, 0x2l, puzzle | 0x3803l, partsUsed | 0x400l); 07997: if(!(puzzle & 0x1801801l)) 07998: doSolve32(1, 0x2l, puzzle | 0x1801801l, partsUsed | 0x400l); 07999: if(!(puzzle & 0x2003003l)) 08000: doSolve32(1, 0x2l, puzzle | 0x2003003l, partsUsed | 0x400l); 08001: piece11at0at32: 08002: if (partsUsed & 0x800l) goto piece12at0at32; 08003: if (!(puzzle & 0x1201l)) { 08004: if(!(puzzle & 0x1b01l)) 08005: doSolve32(1, 0x2l, puzzle | 0x1b01l, partsUsed | 0x800l); 08006: if(!(puzzle & 0x3601l)) 08007: doSolve32(1, 0x2l, puzzle | 0x3601l, partsUsed | 0x800l); 08008: if(!(puzzle & 0x3203l)) 08009: doSolve32(1, 0x2l, puzzle | 0x3203l, partsUsed | 0x800l); 08010: } 08011: if (!(puzzle & 0x1003l)) { 08012: if(!(puzzle & 0x3403l)) 08013: doSolve32(1, 0x2l, puzzle | 0x3403l, partsUsed | 0x800l); 08014: if(!(puzzle & 0x101bl)) 08015: doSolve32(1, 0x2l, puzzle | 0x101bl, partsUsed | 0x800l); 08016: if(!(puzzle & 0xb003l)) 08017: doSolve32(1, 0x2l, puzzle | 0xb003l, partsUsed | 0x800l); 08018: if(!(puzzle & 0x300bl)) 08019: doSolve32(1, 0x2l, puzzle | 0x300bl, partsUsed | 0x800l); 08020: if(!(puzzle & 0x3013l)) 08021: doSolve32(1, 0x2l, puzzle | 0x3013l, partsUsed | 0x800l); 08022: if(!(puzzle & 0x13003l)) 08023: doSolve32(1, 0x2l, puzzle | 0x13003l, partsUsed | 0x800l); 08024: if(!(puzzle & 0x900bl)) 08025: doSolve32(1, 0x2l, puzzle | 0x900bl, partsUsed | 0x800l); 08026: } 08027: if (!(puzzle & 0xc001l)) { 08028: if(!(puzzle & 0xd801l)) 08029: doSolve32(1, 0x2l, puzzle | 0xd801l, partsUsed | 0x800l); 08030: if(!(puzzle & 0xd009l)) 08031: doSolve32(1, 0x2l, puzzle | 0xd009l, partsUsed | 0x800l); 08032: if(!(puzzle & 0xc00dl)) 08033: doSolve32(1, 0x2l, puzzle | 0xc00dl, partsUsed | 0x800l); 08034: } 08035: if (!(puzzle & 0x8009l)) { 08036: if(!(puzzle & 0x9809l)) 08037: doSolve32(1, 0x2l, puzzle | 0x9809l, partsUsed | 0x800l); 08038: if(!(puzzle & 0x900dl)) 08039: doSolve32(1, 0x2l, puzzle | 0x900dl, partsUsed | 0x800l); 08040: if(!(puzzle & 0x18019l)) 08041: doSolve32(1, 0x2l, puzzle | 0x18019l, partsUsed | 0x800l); 08042: if(!(puzzle & 0xb009l)) 08043: doSolve32(1, 0x2l, puzzle | 0xb009l, partsUsed | 0x800l); 08044: if(!(puzzle & 0x9019l)) 08045: doSolve32(1, 0x2l, puzzle | 0x9019l, partsUsed | 0x800l); 08046: if(!(puzzle & 0x801bl)) 08047: doSolve32(1, 0x2l, puzzle | 0x801bl, partsUsed | 0x800l); 08048: if(!(puzzle & 0x19009l)) 08049: doSolve32(1, 0x2l, puzzle | 0x19009l, partsUsed | 0x800l); 08050: } 08051: if (!(puzzle & 0x13l)) { 08052: if(!(puzzle & 0x12013l)) 08053: doSolve32(1, 0x2l, puzzle | 0x12013l, partsUsed | 0x800l); 08054: if(!(puzzle & 0x1001bl)) 08055: doSolve32(1, 0x2l, puzzle | 0x1001bl, partsUsed | 0x800l); 08056: if(!(puzzle & 0x201bl)) 08057: doSolve32(1, 0x2l, puzzle | 0x201bl, partsUsed | 0x800l); 08058: } 08059: if(!(puzzle & 0x1b001l)) 08060: doSolve32(1, 0x2l, puzzle | 0x1b001l, partsUsed | 0x800l); 08061: piece12at0at32: 08062: break; 08063: case 1: 08064: if (partsUsed & 0x2l) goto piece2at1at32; 08065: if(!(puzzle & 0x402412l)) 08066: doSolve32(2, 0x4l, puzzle | 0x402412l, partsUsed | 0x2l); 08067: if(!(puzzle & 0x7al)) 08068: doSolve32(2, 0x4l, puzzle | 0x7al, partsUsed | 0x2l); 08069: if(!(puzzle & 0x1803002l)) 08070: doSolve32(2, 0x4l, puzzle | 0x1803002l, partsUsed | 0x2l); 08071: if(!(puzzle & 0x90012002l)) 08072: doSolve32(2, 0x4l, puzzle | 0x90012002l, partsUsed | 0x2l); 08073: if(!(puzzle & 0x80090012l)) 08074: doSolve32(2, 0x4l, puzzle | 0x80090012l, partsUsed | 0x2l); 08075: piece2at1at32: 08076: if (partsUsed & 0x4l) goto piece3at1at32; 08077: if (!(puzzle & 0x2002002l)) { 08078: if(!(puzzle & 0x12402002l)) 08079: doSolve32(2, 0x4l, puzzle | 0x12402002l, partsUsed | 0x4l); 08080: if(!(puzzle & 0x2003802l)) 08081: doSolve32(2, 0x4l, puzzle | 0x2003802l, partsUsed | 0x4l); 08082: if(!(puzzle & 0x2092002l)) 08083: doSolve32(2, 0x4l, puzzle | 0x2092002l, partsUsed | 0x4l); 08084: } 08085: if(!(puzzle & 0x9el)) 08086: doSolve32(2, 0x4l, puzzle | 0x9el, partsUsed | 0x4l); 08087: if(!(puzzle & 0x10010092l)) 08088: doSolve32(2, 0x4l, puzzle | 0x10010092l, partsUsed | 0x4l); 08089: piece3at1at32: 08090: if (partsUsed & 0x8l) goto piece4at1at32; 08091: if(!(puzzle & 0x2402012l)) 08092: doSolve32(2, 0x4l, puzzle | 0x2402012l, partsUsed | 0x8l); 08093: if(!(puzzle & 0x3el)) 08094: doSolve32(2, 0x4l, puzzle | 0x3el, partsUsed | 0x8l); 08095: if(!(puzzle & 0x803802l)) 08096: doSolve32(2, 0x4l, puzzle | 0x803802l, partsUsed | 0x8l); 08097: if(!(puzzle & 0x80092002l)) 08098: doSolve32(2, 0x4l, puzzle | 0x80092002l, partsUsed | 0x8l); 08099: if(!(puzzle & 0x90010012l)) 08100: doSolve32(2, 0x4l, puzzle | 0x90010012l, partsUsed | 0x8l); 08101: piece4at1at32: 08102: if (partsUsed & 0x10l) goto piece5at1at32; 08103: if(!(puzzle & 0x92482l)) 08104: doSolve32(2, 0x4l, puzzle | 0x92482l, partsUsed | 0x10l); 08105: piece5at1at32: 08106: if (partsUsed & 0x40l) goto piece7at1at32; 08107: if(!(puzzle & 0x92402l)) 08108: doSolve32(2, 0x4l, puzzle | 0x92402l, partsUsed | 0x40l); 08109: piece7at1at32: 08110: if (partsUsed & 0x80l) goto piece8at1at32; 08111: if(!(puzzle & 0x12002012l)) 08112: doSolve32(2, 0x4l, puzzle | 0x12002012l, partsUsed | 0x80l); 08113: if(!(puzzle & 0x12010012l)) 08114: doSolve32(2, 0x4l, puzzle | 0x12010012l, partsUsed | 0x80l); 08115: if(!(puzzle & 0x92082l)) 08116: doSolve32(2, 0x4l, puzzle | 0x92082l, partsUsed | 0x80l); 08117: if(!(puzzle & 0x82092l)) 08118: doSolve32(2, 0x4l, puzzle | 0x82092l, partsUsed | 0x80l); 08119: piece8at1at32: 08120: if (partsUsed & 0x100l) goto piece9at1at32; 08121: if(!(puzzle & 0x3202l)) 08122: doSolve32(2, 0x4l, puzzle | 0x3202l, partsUsed | 0x100l); 08123: if(!(puzzle & 0x3012l)) 08124: doSolve32(2, 0x4l, puzzle | 0x3012l, partsUsed | 0x100l); 08125: if(!(puzzle & 0x801al)) 08126: doSolve32(2, 0x4l, puzzle | 0x801al, partsUsed | 0x100l); 08127: if(!(puzzle & 0x1a002l)) 08128: doSolve32(2, 0x4l, puzzle | 0x1a002l, partsUsed | 0x100l); 08129: piece9at1at32: 08130: if (partsUsed & 0x200l) goto piece10at1at32; 08131: if (!(puzzle & 0x2002002l)) { 08132: if(!(puzzle & 0x2002412l)) 08133: doSolve32(2, 0x4l, puzzle | 0x2002412l, partsUsed | 0x200l); 08134: if(!(puzzle & 0x2412002l)) 08135: doSolve32(2, 0x4l, puzzle | 0x2412002l, partsUsed | 0x200l); 08136: if(!(puzzle & 0x12002402l)) 08137: doSolve32(2, 0x4l, puzzle | 0x12002402l, partsUsed | 0x200l); 08138: } 08139: if (!(puzzle & 0x12002l)) { 08140: if(!(puzzle & 0x10012402l)) 08141: doSolve32(2, 0x4l, puzzle | 0x10012402l, partsUsed | 0x200l); 08142: if(!(puzzle & 0x412402l)) 08143: doSolve32(2, 0x4l, puzzle | 0x412402l, partsUsed | 0x200l); 08144: if(!(puzzle & 0x10092002l)) 08145: doSolve32(2, 0x4l, puzzle | 0x10092002l, partsUsed | 0x200l); 08146: } 08147: if(!(puzzle & 0x5el)) 08148: doSolve32(2, 0x4l, puzzle | 0x5el, partsUsed | 0x200l); 08149: if(!(puzzle & 0x1003802l)) 08150: doSolve32(2, 0x4l, puzzle | 0x1003802l, partsUsed | 0x200l); 08151: if(!(puzzle & 0x10090012l)) 08152: doSolve32(2, 0x4l, puzzle | 0x10090012l, partsUsed | 0x200l); 08153: piece10at1at32: 08154: if (partsUsed & 0x400l) goto piece11at1at32; 08155: if (!(puzzle & 0x92l)) { 08156: if(!(puzzle & 0xdal)) 08157: doSolve32(2, 0x4l, puzzle | 0xdal, partsUsed | 0x400l); 08158: if(!(puzzle & 0x90092l)) 08159: doSolve32(2, 0x4l, puzzle | 0x90092l, partsUsed | 0x400l); 08160: if(!(puzzle & 0x12092l)) 08161: doSolve32(2, 0x4l, puzzle | 0x12092l, partsUsed | 0x400l); 08162: } 08163: if (!(puzzle & 0x2002002l)) { 08164: if(!(puzzle & 0x3003002l)) 08165: doSolve32(2, 0x4l, puzzle | 0x3003002l, partsUsed | 0x400l); 08166: if(!(puzzle & 0x2012012l)) 08167: doSolve32(2, 0x4l, puzzle | 0x2012012l, partsUsed | 0x400l); 08168: if(!(puzzle & 0x12012002l)) 08169: doSolve32(2, 0x4l, puzzle | 0x12012002l, partsUsed | 0x400l); 08170: } 08171: if(!(puzzle & 0x2402402l)) 08172: doSolve32(2, 0x4l, puzzle | 0x2402402l, partsUsed | 0x400l); 08173: if(!(puzzle & 0x12412l)) 08174: doSolve32(2, 0x4l, puzzle | 0x12412l, partsUsed | 0x400l); 08175: if(!(puzzle & 0x92012l)) 08176: doSolve32(2, 0x4l, puzzle | 0x92012l, partsUsed | 0x400l); 08177: if(!(puzzle & 0x10012012l)) 08178: doSolve32(2, 0x4l, puzzle | 0x10012012l, partsUsed | 0x400l); 08179: piece11at1at32: 08180: if (partsUsed & 0x800l) goto piece12at1at32; 08181: if (!(puzzle & 0x3002l)) { 08182: if(!(puzzle & 0x3602l)) 08183: doSolve32(2, 0x4l, puzzle | 0x3602l, partsUsed | 0x800l); 08184: if(!(puzzle & 0x1b002l)) 08185: doSolve32(2, 0x4l, puzzle | 0x1b002l, partsUsed | 0x800l); 08186: if(!(puzzle & 0x13012l)) 08187: doSolve32(2, 0x4l, puzzle | 0x13012l, partsUsed | 0x800l); 08188: } 08189: if (!(puzzle & 0x10012l)) { 08190: if(!(puzzle & 0x1a012l)) 08191: doSolve32(2, 0x4l, puzzle | 0x1a012l, partsUsed | 0x800l); 08192: if(!(puzzle & 0x1801al)) 08193: doSolve32(2, 0x4l, puzzle | 0x1801al, partsUsed | 0x800l); 08194: if(!(puzzle & 0x1201al)) 08195: doSolve32(2, 0x4l, puzzle | 0x1201al, partsUsed | 0x800l); 08196: } 08197: piece12at1at32: 08198: break; 08199: case 2: 08200: if (partsUsed & 0x2l) goto piece2at2at32; 08201: if(!(puzzle & 0x904804l)) 08202: doSolve32(3, 0x8l, puzzle | 0x904804l, partsUsed | 0x2l); 08203: if(!(puzzle & 0x804824l)) 08204: doSolve32(3, 0x8l, puzzle | 0x804824l, partsUsed | 0x2l); 08205: if(!(puzzle & 0x1001800cl)) 08206: doSolve32(3, 0x8l, puzzle | 0x1001800cl, partsUsed | 0x2l); 08207: if(!(puzzle & 0x1800c004l)) 08208: doSolve32(3, 0x8l, puzzle | 0x1800c004l, partsUsed | 0x2l); 08209: piece2at2at32: 08210: if (partsUsed & 0x4l) goto piece3at2at32; 08211: if (!(puzzle & 0x4004004l)) { 08212: if(!(puzzle & 0x4004904l)) 08213: doSolve32(3, 0x8l, puzzle | 0x4004904l, partsUsed | 0x4l); 08214: if(!(puzzle & 0x24804004l)) 08215: doSolve32(3, 0x8l, puzzle | 0x24804004l, partsUsed | 0x4l); 08216: if(!(puzzle & 0x401c004l)) 08217: doSolve32(3, 0x8l, puzzle | 0x401c004l, partsUsed | 0x4l); 08218: } 08219: if(!(puzzle & 0x800801cl)) 08220: doSolve32(3, 0x8l, puzzle | 0x800801cl, partsUsed | 0x4l); 08221: piece3at2at32: 08222: if (partsUsed & 0x8l) goto piece4at2at32; 08223: if(!(puzzle & 0x104904l)) 08224: doSolve32(3, 0x8l, puzzle | 0x104904l, partsUsed | 0x8l); 08225: if(!(puzzle & 0x4804024l)) 08226: doSolve32(3, 0x8l, puzzle | 0x4804024l, partsUsed | 0x8l); 08227: if(!(puzzle & 0x1001c004l)) 08228: doSolve32(3, 0x8l, puzzle | 0x1001c004l, partsUsed | 0x8l); 08229: if(!(puzzle & 0x1800800cl)) 08230: doSolve32(3, 0x8l, puzzle | 0x1800800cl, partsUsed | 0x8l); 08231: piece4at2at32: 08232: if (partsUsed & 0x40l) goto piece7at2at32; 08233: if(!(puzzle & 0x24904l)) 08234: doSolve32(3, 0x8l, puzzle | 0x24904l, partsUsed | 0x40l); 08235: piece7at2at32: 08236: if (partsUsed & 0x80l) goto piece8at2at32; 08237: if(!(puzzle & 0x24004024l)) 08238: doSolve32(3, 0x8l, puzzle | 0x24004024l, partsUsed | 0x80l); 08239: if(!(puzzle & 0x24020024l)) 08240: doSolve32(3, 0x8l, puzzle | 0x24020024l, partsUsed | 0x80l); 08241: if(!(puzzle & 0xbcl)) 08242: doSolve32(3, 0x8l, puzzle | 0xbcl, partsUsed | 0x80l); 08243: if(!(puzzle & 0xf4l)) 08244: doSolve32(3, 0x8l, puzzle | 0xf4l, partsUsed | 0x80l); 08245: if(!(puzzle & 0xc00800cl)) 08246: doSolve32(3, 0x8l, puzzle | 0xc00800cl, partsUsed | 0x80l); 08247: if(!(puzzle & 0xc00400cl)) 08248: doSolve32(3, 0x8l, puzzle | 0xc00400cl, partsUsed | 0x80l); 08249: if(!(puzzle & 0x1c014l)) 08250: doSolve32(3, 0x8l, puzzle | 0x1c014l, partsUsed | 0x80l); 08251: if(!(puzzle & 0x1401cl)) 08252: doSolve32(3, 0x8l, puzzle | 0x1401cl, partsUsed | 0x80l); 08253: piece8at2at32: 08254: if (partsUsed & 0x100l) goto piece9at2at32; 08255: if(!(puzzle & 0x900cl)) 08256: doSolve32(3, 0x8l, puzzle | 0x900cl, partsUsed | 0x100l); 08257: if(!(puzzle & 0x802cl)) 08258: doSolve32(3, 0x8l, puzzle | 0x802cl, partsUsed | 0x100l); 08259: if(!(puzzle & 0x5804l)) 08260: doSolve32(3, 0x8l, puzzle | 0x5804l, partsUsed | 0x100l); 08261: if(!(puzzle & 0x4c004l)) 08262: doSolve32(3, 0x8l, puzzle | 0x4c004l, partsUsed | 0x100l); 08263: if(!(puzzle & 0x2400cl)) 08264: doSolve32(3, 0x8l, puzzle | 0x2400cl, partsUsed | 0x100l); 08265: if(!(puzzle & 0x60024l)) 08266: doSolve32(3, 0x8l, puzzle | 0x60024l, partsUsed | 0x100l); 08267: if(!(puzzle & 0x4064l)) 08268: doSolve32(3, 0x8l, puzzle | 0x4064l, partsUsed | 0x100l); 08269: if(!(puzzle & 0x4004cl)) 08270: doSolve32(3, 0x8l, puzzle | 0x4004cl, partsUsed | 0x100l); 08271: piece9at2at32: 08272: if (partsUsed & 0x200l) goto piece10at2at32; 08273: if (!(puzzle & 0x4804l)) { 08274: if(!(puzzle & 0x804904l)) 08275: doSolve32(3, 0x8l, puzzle | 0x804904l, partsUsed | 0x200l); 08276: if(!(puzzle & 0x4004824l)) 08277: doSolve32(3, 0x8l, puzzle | 0x4004824l, partsUsed | 0x200l); 08278: if(!(puzzle & 0x20024804l)) 08279: doSolve32(3, 0x8l, puzzle | 0x20024804l, partsUsed | 0x200l); 08280: if(!(puzzle & 0x24004804l)) 08281: doSolve32(3, 0x8l, puzzle | 0x24004804l, partsUsed | 0x200l); 08282: if(!(puzzle & 0x824804l)) 08283: doSolve32(3, 0x8l, puzzle | 0x824804l, partsUsed | 0x200l); 08284: } 08285: if(!(puzzle & 0x4824004l)) 08286: doSolve32(3, 0x8l, puzzle | 0x4824004l, partsUsed | 0x200l); 08287: if(!(puzzle & 0x801800cl)) 08288: doSolve32(3, 0x8l, puzzle | 0x801800cl, partsUsed | 0x200l); 08289: if(!(puzzle & 0x801c004l)) 08290: doSolve32(3, 0x8l, puzzle | 0x801c004l, partsUsed | 0x200l); 08291: piece10at2at32: 08292: if (partsUsed & 0x400l) goto piece11at2at32; 08293: if (!(puzzle & 0x24004l)) { 08294: if(!(puzzle & 0x4024024l)) 08295: doSolve32(3, 0x8l, puzzle | 0x4024024l, partsUsed | 0x400l); 08296: if(!(puzzle & 0x24024004l)) 08297: doSolve32(3, 0x8l, puzzle | 0x24024004l, partsUsed | 0x400l); 08298: if(!(puzzle & 0x20024024l)) 08299: doSolve32(3, 0x8l, puzzle | 0x20024024l, partsUsed | 0x400l); 08300: } 08301: if (!(puzzle & 0x4cl)) { 08302: if(!(puzzle & 0xdcl)) 08303: doSolve32(3, 0x8l, puzzle | 0xdcl, partsUsed | 0x400l); 08304: if(!(puzzle & 0x7cl)) 08305: doSolve32(3, 0x8l, puzzle | 0x7cl, partsUsed | 0x400l); 08306: if(!(puzzle & 0xecl)) 08307: doSolve32(3, 0x8l, puzzle | 0xecl, partsUsed | 0x400l); 08308: } 08309: if (!(puzzle & 0xc004l)) { 08310: if(!(puzzle & 0x800c00cl)) 08311: doSolve32(3, 0x8l, puzzle | 0x800c00cl, partsUsed | 0x400l); 08312: if(!(puzzle & 0x400c00cl)) 08313: doSolve32(3, 0x8l, puzzle | 0x400c00cl, partsUsed | 0x400l); 08314: if(!(puzzle & 0x1c00cl)) 08315: doSolve32(3, 0x8l, puzzle | 0x1c00cl, partsUsed | 0x400l); 08316: if(!(puzzle & 0xc00c004l)) 08317: doSolve32(3, 0x8l, puzzle | 0xc00c004l, partsUsed | 0x400l); 08318: if(!(puzzle & 0xc01cl)) 08319: doSolve32(3, 0x8l, puzzle | 0xc01cl, partsUsed | 0x400l); 08320: } 08321: if(!(puzzle & 0x4804804l)) 08322: doSolve32(3, 0x8l, puzzle | 0x4804804l, partsUsed | 0x400l); 08323: if(!(puzzle & 0x24824l)) 08324: doSolve32(3, 0x8l, puzzle | 0x24824l, partsUsed | 0x400l); 08325: if(!(puzzle & 0x1801cl)) 08326: doSolve32(3, 0x8l, puzzle | 0x1801cl, partsUsed | 0x400l); 08327: piece11at2at32: 08328: if (partsUsed & 0x800l) goto piece12at2at32; 08329: if (!(puzzle & 0xc004l)) { 08330: if(!(puzzle & 0xd804l)) 08331: doSolve32(3, 0x8l, puzzle | 0xd804l, partsUsed | 0x800l); 08332: if(!(puzzle & 0xd00cl)) 08333: doSolve32(3, 0x8l, puzzle | 0xd00cl, partsUsed | 0x800l); 08334: if(!(puzzle & 0xc80cl)) 08335: doSolve32(3, 0x8l, puzzle | 0xc80cl, partsUsed | 0x800l); 08336: if(!(puzzle & 0x2c00cl)) 08337: doSolve32(3, 0x8l, puzzle | 0x2c00cl, partsUsed | 0x800l); 08338: if(!(puzzle & 0x2c024l)) 08339: doSolve32(3, 0x8l, puzzle | 0x2c024l, partsUsed | 0x800l); 08340: if(!(puzzle & 0xc02cl)) 08341: doSolve32(3, 0x8l, puzzle | 0xc02cl, partsUsed | 0x800l); 08342: if(!(puzzle & 0xc04cl)) 08343: doSolve32(3, 0x8l, puzzle | 0xc04cl, partsUsed | 0x800l); 08344: if(!(puzzle & 0x4c00cl)) 08345: doSolve32(3, 0x8l, puzzle | 0x4c00cl, partsUsed | 0x800l); 08346: if(!(puzzle & 0x6c004l)) 08347: doSolve32(3, 0x8l, puzzle | 0x6c004l, partsUsed | 0x800l); 08348: } 08349: if (!(puzzle & 0x64l)) { 08350: if(!(puzzle & 0x406cl)) 08351: doSolve32(3, 0x8l, puzzle | 0x406cl, partsUsed | 0x800l); 08352: if(!(puzzle & 0x60064l)) 08353: doSolve32(3, 0x8l, puzzle | 0x60064l, partsUsed | 0x800l); 08354: if(!(puzzle & 0x24064l)) 08355: doSolve32(3, 0x8l, puzzle | 0x24064l, partsUsed | 0x800l); 08356: if(!(puzzle & 0x4006cl)) 08357: doSolve32(3, 0x8l, puzzle | 0x4006cl, partsUsed | 0x800l); 08358: if(!(puzzle & 0x806cl)) 08359: doSolve32(3, 0x8l, puzzle | 0x806cl, partsUsed | 0x800l); 08360: if(!(puzzle & 0x2006cl)) 08361: doSolve32(3, 0x8l, puzzle | 0x2006cl, partsUsed | 0x800l); 08362: } 08363: if(!(puzzle & 0x4804cl)) 08364: doSolve32(3, 0x8l, puzzle | 0x4804cl, partsUsed | 0x800l); 08365: if(!(puzzle & 0x64024l)) 08366: doSolve32(3, 0x8l, puzzle | 0x64024l, partsUsed | 0x800l); 08367: if(!(puzzle & 0x2402cl)) 08368: doSolve32(3, 0x8l, puzzle | 0x2402cl, partsUsed | 0x800l); 08369: piece12at2at32: 08370: break; 08371: case 3: 08372: if (partsUsed & 0x2l) goto piece2at3at32; 08373: if(!(puzzle & 0x400c018l)) 08374: doSolve32(4, 0x10l, puzzle | 0x400c018l, partsUsed | 0x2l); 08375: if(!(puzzle & 0x1209008l)) 08376: doSolve32(4, 0x10l, puzzle | 0x1209008l, partsUsed | 0x2l); 08377: if(!(puzzle & 0x1009048l)) 08378: doSolve32(4, 0x10l, puzzle | 0x1009048l, partsUsed | 0x2l); 08379: piece2at3at32: 08380: if (partsUsed & 0x4l) goto piece3at3at32; 08381: if (!(puzzle & 0x8008008l)) { 08382: if(!(puzzle & 0x8009208l)) 08383: doSolve32(4, 0x10l, puzzle | 0x8009208l, partsUsed | 0x4l); 08384: if(!(puzzle & 0x49008008l)) 08385: doSolve32(4, 0x10l, puzzle | 0x49008008l, partsUsed | 0x4l); 08386: if(!(puzzle & 0x1c008008l)) 08387: doSolve32(4, 0x10l, puzzle | 0x1c008008l, partsUsed | 0x4l); 08388: } 08389: piece3at3at32: 08390: if (partsUsed & 0x8l) goto piece4at3at32; 08391: if(!(puzzle & 0x209208l)) 08392: doSolve32(4, 0x10l, puzzle | 0x209208l, partsUsed | 0x8l); 08393: if(!(puzzle & 0x9008048l)) 08394: doSolve32(4, 0x10l, puzzle | 0x9008048l, partsUsed | 0x8l); 08395: if(!(puzzle & 0xc008018l)) 08396: doSolve32(4, 0x10l, puzzle | 0xc008018l, partsUsed | 0x8l); 08397: piece4at3at32: 08398: if (partsUsed & 0x40l) goto piece7at3at32; 08399: if(!(puzzle & 0x49208l)) 08400: doSolve32(4, 0x10l, puzzle | 0x49208l, partsUsed | 0x40l); 08401: piece7at3at32: 08402: if (partsUsed & 0x80l) goto piece8at3at32; 08403: if(!(puzzle & 0x48008048l)) 08404: doSolve32(4, 0x10l, puzzle | 0x48008048l, partsUsed | 0x80l); 08405: if(!(puzzle & 0x48040048l)) 08406: doSolve32(4, 0x10l, puzzle | 0x48040048l, partsUsed | 0x80l); 08407: if(!(puzzle & 0x18010018l)) 08408: doSolve32(4, 0x10l, puzzle | 0x18010018l, partsUsed | 0x80l); 08409: if(!(puzzle & 0x18008018l)) 08410: doSolve32(4, 0x10l, puzzle | 0x18008018l, partsUsed | 0x80l); 08411: piece8at3at32: 08412: if (partsUsed & 0x100l) goto piece9at3at32; 08413: if(!(puzzle & 0xc808l)) 08414: doSolve32(4, 0x10l, puzzle | 0xc808l, partsUsed | 0x100l); 08415: if(!(puzzle & 0xc048l)) 08416: doSolve32(4, 0x10l, puzzle | 0xc048l, partsUsed | 0x100l); 08417: if(!(puzzle & 0x12018l)) 08418: doSolve32(4, 0x10l, puzzle | 0x12018l, partsUsed | 0x100l); 08419: if(!(puzzle & 0x10058l)) 08420: doSolve32(4, 0x10l, puzzle | 0x10058l, partsUsed | 0x100l); 08421: if(!(puzzle & 0xb008l)) 08422: doSolve32(4, 0x10l, puzzle | 0xb008l, partsUsed | 0x100l); 08423: if(!(puzzle & 0x20068l)) 08424: doSolve32(4, 0x10l, puzzle | 0x20068l, partsUsed | 0x100l); 08425: if(!(puzzle & 0x68008l)) 08426: doSolve32(4, 0x10l, puzzle | 0x68008l, partsUsed | 0x100l); 08427: if(!(puzzle & 0x48018l)) 08428: doSolve32(4, 0x10l, puzzle | 0x48018l, partsUsed | 0x100l); 08429: if(!(puzzle & 0x98008l)) 08430: doSolve32(4, 0x10l, puzzle | 0x98008l, partsUsed | 0x100l); 08431: if(!(puzzle & 0xc0048l)) 08432: doSolve32(4, 0x10l, puzzle | 0xc0048l, partsUsed | 0x100l); 08433: if(!(puzzle & 0x80c8l)) 08434: doSolve32(4, 0x10l, puzzle | 0x80c8l, partsUsed | 0x100l); 08435: if(!(puzzle & 0x80098l)) 08436: doSolve32(4, 0x10l, puzzle | 0x80098l, partsUsed | 0x100l); 08437: piece9at3at32: 08438: if (partsUsed & 0x200l) goto piece10at3at32; 08439: if (!(puzzle & 0x9008l)) { 08440: if(!(puzzle & 0x1009208l)) 08441: doSolve32(4, 0x10l, puzzle | 0x1009208l, partsUsed | 0x200l); 08442: if(!(puzzle & 0x8009048l)) 08443: doSolve32(4, 0x10l, puzzle | 0x8009048l, partsUsed | 0x200l); 08444: if(!(puzzle & 0x40049008l)) 08445: doSolve32(4, 0x10l, puzzle | 0x40049008l, partsUsed | 0x200l); 08446: if(!(puzzle & 0x48009008l)) 08447: doSolve32(4, 0x10l, puzzle | 0x48009008l, partsUsed | 0x200l); 08448: if(!(puzzle & 0x1049008l)) 08449: doSolve32(4, 0x10l, puzzle | 0x1049008l, partsUsed | 0x200l); 08450: } 08451: if (!(puzzle & 0x8008008l)) { 08452: if(!(puzzle & 0x9048008l)) 08453: doSolve32(4, 0x10l, puzzle | 0x9048008l, partsUsed | 0x200l); 08454: if(!(puzzle & 0x800c018l)) 08455: doSolve32(4, 0x10l, puzzle | 0x800c018l, partsUsed | 0x200l); 08456: if(!(puzzle & 0x1800c008l)) 08457: doSolve32(4, 0x10l, puzzle | 0x1800c008l, partsUsed | 0x200l); 08458: if(!(puzzle & 0xc018008l)) 08459: doSolve32(4, 0x10l, puzzle | 0xc018008l, partsUsed | 0x200l); 08460: } 08461: if(!(puzzle & 0x401c008l)) 08462: doSolve32(4, 0x10l, puzzle | 0x401c008l, partsUsed | 0x200l); 08463: if(!(puzzle & 0x1001c008l)) 08464: doSolve32(4, 0x10l, puzzle | 0x1001c008l, partsUsed | 0x200l); 08465: piece10at3at32: 08466: if (partsUsed & 0x400l) goto piece11at3at32; 08467: if (!(puzzle & 0x48008l)) { 08468: if(!(puzzle & 0x8048048l)) 08469: doSolve32(4, 0x10l, puzzle | 0x8048048l, partsUsed | 0x400l); 08470: if(!(puzzle & 0x48048008l)) 08471: doSolve32(4, 0x10l, puzzle | 0x48048008l, partsUsed | 0x400l); 08472: if(!(puzzle & 0x40048048l)) 08473: doSolve32(4, 0x10l, puzzle | 0x40048048l, partsUsed | 0x400l); 08474: } 08475: if (!(puzzle & 0x18008l)) { 08476: if(!(puzzle & 0x10018018l)) 08477: doSolve32(4, 0x10l, puzzle | 0x10018018l, partsUsed | 0x400l); 08478: if(!(puzzle & 0x8018018l)) 08479: doSolve32(4, 0x10l, puzzle | 0x8018018l, partsUsed | 0x400l); 08480: if(!(puzzle & 0x18018008l)) 08481: doSolve32(4, 0x10l, puzzle | 0x18018008l, partsUsed | 0x400l); 08482: } 08483: if(!(puzzle & 0x9009008l)) 08484: doSolve32(4, 0x10l, puzzle | 0x9009008l, partsUsed | 0x400l); 08485: if(!(puzzle & 0x49048l)) 08486: doSolve32(4, 0x10l, puzzle | 0x49048l, partsUsed | 0x400l); 08487: if(!(puzzle & 0xf8l)) 08488: doSolve32(4, 0x10l, puzzle | 0xf8l, partsUsed | 0x400l); 08489: if(!(puzzle & 0x1c018l)) 08490: doSolve32(4, 0x10l, puzzle | 0x1c018l, partsUsed | 0x400l); 08491: if(!(puzzle & 0xc00c008l)) 08492: doSolve32(4, 0x10l, puzzle | 0xc00c008l, partsUsed | 0x400l); 08493: piece11at3at32: 08494: if (partsUsed & 0x800l) goto piece12at3at32; 08495: if (!(puzzle & 0x9008l)) { 08496: if(!(puzzle & 0xd808l)) 08497: doSolve32(4, 0x10l, puzzle | 0xd808l, partsUsed | 0x800l); 08498: if(!(puzzle & 0x1b008l)) 08499: doSolve32(4, 0x10l, puzzle | 0x1b008l, partsUsed | 0x800l); 08500: if(!(puzzle & 0x19018l)) 08501: doSolve32(4, 0x10l, puzzle | 0x19018l, partsUsed | 0x800l); 08502: } 08503: if (!(puzzle & 0x8018l)) { 08504: if(!(puzzle & 0x1a018l)) 08505: doSolve32(4, 0x10l, puzzle | 0x1a018l, partsUsed | 0x800l); 08506: if(!(puzzle & 0x80d8l)) 08507: doSolve32(4, 0x10l, puzzle | 0x80d8l, partsUsed | 0x800l); 08508: if(!(puzzle & 0x58018l)) 08509: doSolve32(4, 0x10l, puzzle | 0x58018l, partsUsed | 0x800l); 08510: if(!(puzzle & 0x18058l)) 08511: doSolve32(4, 0x10l, puzzle | 0x18058l, partsUsed | 0x800l); 08512: if(!(puzzle & 0x18098l)) 08513: doSolve32(4, 0x10l, puzzle | 0x18098l, partsUsed | 0x800l); 08514: if(!(puzzle & 0x98018l)) 08515: doSolve32(4, 0x10l, puzzle | 0x98018l, partsUsed | 0x800l); 08516: if(!(puzzle & 0x48058l)) 08517: doSolve32(4, 0x10l, puzzle | 0x48058l, partsUsed | 0x800l); 08518: } 08519: if (!(puzzle & 0x60008l)) { 08520: if(!(puzzle & 0x6c008l)) 08521: doSolve32(4, 0x10l, puzzle | 0x6c008l, partsUsed | 0x800l); 08522: if(!(puzzle & 0x68048l)) 08523: doSolve32(4, 0x10l, puzzle | 0x68048l, partsUsed | 0x800l); 08524: if(!(puzzle & 0x60068l)) 08525: doSolve32(4, 0x10l, puzzle | 0x60068l, partsUsed | 0x800l); 08526: } 08527: if (!(puzzle & 0x40048l)) { 08528: if(!(puzzle & 0x4c048l)) 08529: doSolve32(4, 0x10l, puzzle | 0x4c048l, partsUsed | 0x800l); 08530: if(!(puzzle & 0x48068l)) 08531: doSolve32(4, 0x10l, puzzle | 0x48068l, partsUsed | 0x800l); 08532: if(!(puzzle & 0xc00c8l)) 08533: doSolve32(4, 0x10l, puzzle | 0xc00c8l, partsUsed | 0x800l); 08534: if(!(puzzle & 0x58048l)) 08535: doSolve32(4, 0x10l, puzzle | 0x58048l, partsUsed | 0x800l); 08536: if(!(puzzle & 0x480c8l)) 08537: doSolve32(4, 0x10l, puzzle | 0x480c8l, partsUsed | 0x800l); 08538: if(!(puzzle & 0x400d8l)) 08539: doSolve32(4, 0x10l, puzzle | 0x400d8l, partsUsed | 0x800l); 08540: if(!(puzzle & 0xc8048l)) 08541: doSolve32(4, 0x10l, puzzle | 0xc8048l, partsUsed | 0x800l); 08542: } 08543: if (!(puzzle & 0x98l)) { 08544: if(!(puzzle & 0x90098l)) 08545: doSolve32(4, 0x10l, puzzle | 0x90098l, partsUsed | 0x800l); 08546: if(!(puzzle & 0x800d8l)) 08547: doSolve32(4, 0x10l, puzzle | 0x800d8l, partsUsed | 0x800l); 08548: if(!(puzzle & 0x100d8l)) 08549: doSolve32(4, 0x10l, puzzle | 0x100d8l, partsUsed | 0x800l); 08550: } 08551: if(!(puzzle & 0xd8008l)) 08552: doSolve32(4, 0x10l, puzzle | 0xd8008l, partsUsed | 0x800l); 08553: piece12at3at32: 08554: break; 08555: case 4: 08556: if (partsUsed & 0x2l) goto piece2at4at32; 08557: if(!(puzzle & 0xc018010l)) 08558: doSolve32(5, 0x20l, puzzle | 0xc018010l, partsUsed | 0x2l); 08559: if(!(puzzle & 0x2412010l)) 08560: doSolve32(5, 0x20l, puzzle | 0x2412010l, partsUsed | 0x2l); 08561: if(!(puzzle & 0x2012090l)) 08562: doSolve32(5, 0x20l, puzzle | 0x2012090l, partsUsed | 0x2l); 08563: piece2at4at32: 08564: if (partsUsed & 0x4l) goto piece3at4at32; 08565: if (!(puzzle & 0x10010010l)) { 08566: if(!(puzzle & 0x10012410l)) 08567: doSolve32(5, 0x20l, puzzle | 0x10012410l, partsUsed | 0x4l); 08568: if(!(puzzle & 0x92010010l)) 08569: doSolve32(5, 0x20l, puzzle | 0x92010010l, partsUsed | 0x4l); 08570: if(!(puzzle & 0x1001c010l)) 08571: doSolve32(5, 0x20l, puzzle | 0x1001c010l, partsUsed | 0x4l); 08572: } 08573: piece3at4at32: 08574: if (partsUsed & 0x8l) goto piece4at4at32; 08575: if(!(puzzle & 0x401c010l)) 08576: doSolve32(5, 0x20l, puzzle | 0x401c010l, partsUsed | 0x8l); 08577: if(!(puzzle & 0x412410l)) 08578: doSolve32(5, 0x20l, puzzle | 0x412410l, partsUsed | 0x8l); 08579: if(!(puzzle & 0x12010090l)) 08580: doSolve32(5, 0x20l, puzzle | 0x12010090l, partsUsed | 0x8l); 08581: piece4at4at32: 08582: if (partsUsed & 0x40l) goto piece7at4at32; 08583: if(!(puzzle & 0x92410l)) 08584: doSolve32(5, 0x20l, puzzle | 0x92410l, partsUsed | 0x40l); 08585: piece7at4at32: 08586: if (partsUsed & 0x80l) goto piece8at4at32; 08587: if(!(puzzle & 0x90010090l)) 08588: doSolve32(5, 0x20l, puzzle | 0x90010090l, partsUsed | 0x80l); 08589: if(!(puzzle & 0x90080090l)) 08590: doSolve32(5, 0x20l, puzzle | 0x90080090l, partsUsed | 0x80l); 08591: piece8at4at32: 08592: if (partsUsed & 0x100l) goto piece9at4at32; 08593: if(!(puzzle & 0x19010l)) 08594: doSolve32(5, 0x20l, puzzle | 0x19010l, partsUsed | 0x100l); 08595: if(!(puzzle & 0x18090l)) 08596: doSolve32(5, 0x20l, puzzle | 0x18090l, partsUsed | 0x100l); 08597: if(!(puzzle & 0x400d0l)) 08598: doSolve32(5, 0x20l, puzzle | 0x400d0l, partsUsed | 0x100l); 08599: if(!(puzzle & 0xd0010l)) 08600: doSolve32(5, 0x20l, puzzle | 0xd0010l, partsUsed | 0x100l); 08601: piece9at4at32: 08602: if (partsUsed & 0x200l) goto piece10at4at32; 08603: if (!(puzzle & 0x12010l)) { 08604: if(!(puzzle & 0x2012410l)) 08605: doSolve32(5, 0x20l, puzzle | 0x2012410l, partsUsed | 0x200l); 08606: if(!(puzzle & 0x10012090l)) 08607: doSolve32(5, 0x20l, puzzle | 0x10012090l, partsUsed | 0x200l); 08608: if(!(puzzle & 0x80092010l)) 08609: doSolve32(5, 0x20l, puzzle | 0x80092010l, partsUsed | 0x200l); 08610: if(!(puzzle & 0x90012010l)) 08611: doSolve32(5, 0x20l, puzzle | 0x90012010l, partsUsed | 0x200l); 08612: if(!(puzzle & 0x2092010l)) 08613: doSolve32(5, 0x20l, puzzle | 0x2092010l, partsUsed | 0x200l); 08614: } 08615: if(!(puzzle & 0x12090010l)) 08616: doSolve32(5, 0x20l, puzzle | 0x12090010l, partsUsed | 0x200l); 08617: if(!(puzzle & 0x801c010l)) 08618: doSolve32(5, 0x20l, puzzle | 0x801c010l, partsUsed | 0x200l); 08619: piece10at4at32: 08620: if (partsUsed & 0x400l) goto piece11at4at32; 08621: if (!(puzzle & 0x10010010l)) { 08622: if(!(puzzle & 0x18018010l)) 08623: doSolve32(5, 0x20l, puzzle | 0x18018010l, partsUsed | 0x400l); 08624: if(!(puzzle & 0x10090090l)) 08625: doSolve32(5, 0x20l, puzzle | 0x10090090l, partsUsed | 0x400l); 08626: if(!(puzzle & 0x90090010l)) 08627: doSolve32(5, 0x20l, puzzle | 0x90090010l, partsUsed | 0x400l); 08628: } 08629: if(!(puzzle & 0x12012010l)) 08630: doSolve32(5, 0x20l, puzzle | 0x12012010l, partsUsed | 0x400l); 08631: if(!(puzzle & 0x92090l)) 08632: doSolve32(5, 0x20l, puzzle | 0x92090l, partsUsed | 0x400l); 08633: if(!(puzzle & 0x80090090l)) 08634: doSolve32(5, 0x20l, puzzle | 0x80090090l, partsUsed | 0x400l); 08635: piece11at4at32: 08636: if (partsUsed & 0x800l) goto piece12at4at32; 08637: if (!(puzzle & 0x18010l)) { 08638: if(!(puzzle & 0x1b010l)) 08639: doSolve32(5, 0x20l, puzzle | 0x1b010l, partsUsed | 0x800l); 08640: if(!(puzzle & 0xd8010l)) 08641: doSolve32(5, 0x20l, puzzle | 0xd8010l, partsUsed | 0x800l); 08642: if(!(puzzle & 0x98090l)) 08643: doSolve32(5, 0x20l, puzzle | 0x98090l, partsUsed | 0x800l); 08644: } 08645: if (!(puzzle & 0x80090l)) { 08646: if(!(puzzle & 0xd0090l)) 08647: doSolve32(5, 0x20l, puzzle | 0xd0090l, partsUsed | 0x800l); 08648: if(!(puzzle & 0xc00d0l)) 08649: doSolve32(5, 0x20l, puzzle | 0xc00d0l, partsUsed | 0x800l); 08650: if(!(puzzle & 0x900d0l)) 08651: doSolve32(5, 0x20l, puzzle | 0x900d0l, partsUsed | 0x800l); 08652: } 08653: piece12at4at32: 08654: break; 08655: case 5: 08656: if (partsUsed & 0x2l) goto piece2at5at32; 08657: if(!(puzzle & 0x4824020l)) 08658: doSolve32(6, 0x40l, puzzle | 0x4824020l, partsUsed | 0x2l); 08659: if(!(puzzle & 0x800c0060l)) 08660: doSolve32(6, 0x40l, puzzle | 0x800c0060l, partsUsed | 0x2l); 08661: if(!(puzzle & 0xc0060020l)) 08662: doSolve32(6, 0x40l, puzzle | 0xc0060020l, partsUsed | 0x2l); 08663: piece2at5at32: 08664: if (partsUsed & 0x4l) goto piece3at5at32; 08665: if(!(puzzle & 0x400400e0l)) 08666: doSolve32(6, 0x40l, puzzle | 0x400400e0l, partsUsed | 0x4l); 08667: if(!(puzzle & 0x20024820l)) 08668: doSolve32(6, 0x40l, puzzle | 0x20024820l, partsUsed | 0x4l); 08669: if(!(puzzle & 0x200e0020l)) 08670: doSolve32(6, 0x40l, puzzle | 0x200e0020l, partsUsed | 0x4l); 08671: piece3at5at32: 08672: if (partsUsed & 0x8l) goto piece4at5at32; 08673: if(!(puzzle & 0x824820l)) 08674: doSolve32(6, 0x40l, puzzle | 0x824820l, partsUsed | 0x8l); 08675: if(!(puzzle & 0x800e0020l)) 08676: doSolve32(6, 0x40l, puzzle | 0x800e0020l, partsUsed | 0x8l); 08677: if(!(puzzle & 0xc0040060l)) 08678: doSolve32(6, 0x40l, puzzle | 0xc0040060l, partsUsed | 0x8l); 08679: piece4at5at32: 08680: if (partsUsed & 0x20l) goto piece6at5at32; 08681: if(!(puzzle & 0x24920l)) 08682: doSolve32(6, 0x40l, puzzle | 0x24920l, partsUsed | 0x20l); 08683: piece6at5at32: 08684: if (partsUsed & 0x80l) goto piece8at5at32; 08685: if(!(puzzle & 0x60040060l)) 08686: doSolve32(6, 0x40l, puzzle | 0x60040060l, partsUsed | 0x80l); 08687: if(!(puzzle & 0x60020060l)) 08688: doSolve32(6, 0x40l, puzzle | 0x60020060l, partsUsed | 0x80l); 08689: if(!(puzzle & 0xe00a0l)) 08690: doSolve32(6, 0x40l, puzzle | 0xe00a0l, partsUsed | 0x80l); 08691: if(!(puzzle & 0xa00e0l)) 08692: doSolve32(6, 0x40l, puzzle | 0xa00e0l, partsUsed | 0x80l); 08693: piece8at5at32: 08694: if (partsUsed & 0x100l) goto piece9at5at32; 08695: if(!(puzzle & 0x48060l)) 08696: doSolve32(6, 0x40l, puzzle | 0x48060l, partsUsed | 0x100l); 08697: if(!(puzzle & 0x2c020l)) 08698: doSolve32(6, 0x40l, puzzle | 0x2c020l, partsUsed | 0x100l); 08699: piece9at5at32: 08700: if (partsUsed & 0x200l) goto piece10at5at32; 08701: if(!(puzzle & 0x4024820l)) 08702: doSolve32(6, 0x40l, puzzle | 0x4024820l, partsUsed | 0x200l); 08703: if(!(puzzle & 0x400c0060l)) 08704: doSolve32(6, 0x40l, puzzle | 0x400c0060l, partsUsed | 0x200l); 08705: if(!(puzzle & 0x400e0020l)) 08706: doSolve32(6, 0x40l, puzzle | 0x400e0020l, partsUsed | 0x200l); 08707: piece10at5at32: 08708: if (partsUsed & 0x400l) goto piece11at5at32; 08709: if (!(puzzle & 0x20020020l)) { 08710: if(!(puzzle & 0x24024020l)) 08711: doSolve32(6, 0x40l, puzzle | 0x24024020l, partsUsed | 0x400l); 08712: if(!(puzzle & 0x20060060l)) 08713: doSolve32(6, 0x40l, puzzle | 0x20060060l, partsUsed | 0x400l); 08714: if(!(puzzle & 0x60060020l)) 08715: doSolve32(6, 0x40l, puzzle | 0x60060020l, partsUsed | 0x400l); 08716: } 08717: if (!(puzzle & 0x40060l)) { 08718: if(!(puzzle & 0x40060060l)) 08719: doSolve32(6, 0x40l, puzzle | 0x40060060l, partsUsed | 0x400l); 08720: if(!(puzzle & 0xe0060l)) 08721: doSolve32(6, 0x40l, puzzle | 0xe0060l, partsUsed | 0x400l); 08722: if(!(puzzle & 0x600e0l)) 08723: doSolve32(6, 0x40l, puzzle | 0x600e0l, partsUsed | 0x400l); 08724: if(!(puzzle & 0xc00e0l)) 08725: doSolve32(6, 0x40l, puzzle | 0xc00e0l, partsUsed | 0x400l); 08726: } 08727: piece11at5at32: 08728: if (partsUsed & 0x800l) goto piece12at5at32; 08729: if (!(puzzle & 0x60020l)) { 08730: if(!(puzzle & 0x6c020l)) 08731: doSolve32(6, 0x40l, puzzle | 0x6c020l, partsUsed | 0x800l); 08732: if(!(puzzle & 0x68060l)) 08733: doSolve32(6, 0x40l, puzzle | 0x68060l, partsUsed | 0x800l); 08734: if(!(puzzle & 0x64060l)) 08735: doSolve32(6, 0x40l, puzzle | 0x64060l, partsUsed | 0x800l); 08736: } 08737: piece12at5at32: 08738: break; 08739: case 6: 08740: if (partsUsed & 0x2l) goto piece2at6at32; 08741: if(!(puzzle & 0x9048040l)) 08742: doSolve32(7, 0x80l, puzzle | 0x9048040l, partsUsed | 0x2l); 08743: if(!(puzzle & 0x200600c0l)) 08744: doSolve32(7, 0x80l, puzzle | 0x200600c0l, partsUsed | 0x2l); 08745: piece2at6at32: 08746: if (partsUsed & 0x4l) goto piece3at6at32; 08747: if(!(puzzle & 0x40049040l)) 08748: doSolve32(7, 0x80l, puzzle | 0x40049040l, partsUsed | 0x4l); 08749: if(!(puzzle & 0xe0040040l)) 08750: doSolve32(7, 0x80l, puzzle | 0xe0040040l, partsUsed | 0x4l); 08751: piece3at6at32: 08752: if (partsUsed & 0x8l) goto piece4at6at32; 08753: if(!(puzzle & 0x1049040l)) 08754: doSolve32(7, 0x80l, puzzle | 0x1049040l, partsUsed | 0x8l); 08755: if(!(puzzle & 0x600400c0l)) 08756: doSolve32(7, 0x80l, puzzle | 0x600400c0l, partsUsed | 0x8l); 08757: piece4at6at32: 08758: if (partsUsed & 0x20l) goto piece6at6at32; 08759: if(!(puzzle & 0x49240l)) 08760: doSolve32(7, 0x80l, puzzle | 0x49240l, partsUsed | 0x20l); 08761: piece6at6at32: 08762: if (partsUsed & 0x80l) goto piece8at6at32; 08763: if(!(puzzle & 0xc00800c0l)) 08764: doSolve32(7, 0x80l, puzzle | 0xc00800c0l, partsUsed | 0x80l); 08765: if(!(puzzle & 0xc00400c0l)) 08766: doSolve32(7, 0x80l, puzzle | 0xc00400c0l, partsUsed | 0x80l); 08767: piece8at6at32: 08768: if (partsUsed & 0x100l) goto piece9at6at32; 08769: if(!(puzzle & 0x58040l)) 08770: doSolve32(7, 0x80l, puzzle | 0x58040l, partsUsed | 0x100l); 08771: if(!(puzzle & 0x64040l)) 08772: doSolve32(7, 0x80l, puzzle | 0x64040l, partsUsed | 0x100l); 08773: if(!(puzzle & 0x900c0l)) 08774: doSolve32(7, 0x80l, puzzle | 0x900c0l, partsUsed | 0x100l); 08775: piece9at6at32: 08776: if (partsUsed & 0x200l) goto piece10at6at32; 08777: if (!(puzzle & 0x40040040l)) { 08778: if(!(puzzle & 0x400600c0l)) 08779: doSolve32(7, 0x80l, puzzle | 0x400600c0l, partsUsed | 0x200l); 08780: if(!(puzzle & 0xc0060040l)) 08781: doSolve32(7, 0x80l, puzzle | 0xc0060040l, partsUsed | 0x200l); 08782: if(!(puzzle & 0x600c0040l)) 08783: doSolve32(7, 0x80l, puzzle | 0x600c0040l, partsUsed | 0x200l); 08784: } 08785: if(!(puzzle & 0x8049040l)) 08786: doSolve32(7, 0x80l, puzzle | 0x8049040l, partsUsed | 0x200l); 08787: if(!(puzzle & 0x200e0040l)) 08788: doSolve32(7, 0x80l, puzzle | 0x200e0040l, partsUsed | 0x200l); 08789: if(!(puzzle & 0x800e0040l)) 08790: doSolve32(7, 0x80l, puzzle | 0x800e0040l, partsUsed | 0x200l); 08791: piece10at6at32: 08792: if (partsUsed & 0x400l) goto piece11at6at32; 08793: if (!(puzzle & 0x40040040l)) { 08794: if(!(puzzle & 0x48048040l)) 08795: doSolve32(7, 0x80l, puzzle | 0x48048040l, partsUsed | 0x400l); 08796: if(!(puzzle & 0x60060040l)) 08797: doSolve32(7, 0x80l, puzzle | 0x60060040l, partsUsed | 0x400l); 08798: if(!(puzzle & 0x400c00c0l)) 08799: doSolve32(7, 0x80l, puzzle | 0x400c00c0l, partsUsed | 0x400l); 08800: if(!(puzzle & 0xc00c0040l)) 08801: doSolve32(7, 0x80l, puzzle | 0xc00c0040l, partsUsed | 0x400l); 08802: } 08803: if(!(puzzle & 0xe00c0l)) 08804: doSolve32(7, 0x80l, puzzle | 0xe00c0l, partsUsed | 0x400l); 08805: if(!(puzzle & 0x800c00c0l)) 08806: doSolve32(7, 0x80l, puzzle | 0x800c00c0l, partsUsed | 0x400l); 08807: piece11at6at32: 08808: if (partsUsed & 0x800l) goto piece12at6at32; 08809: if (!(puzzle & 0x48040l)) { 08810: if(!(puzzle & 0x6c040l)) 08811: doSolve32(7, 0x80l, puzzle | 0x6c040l, partsUsed | 0x800l); 08812: if(!(puzzle & 0xd8040l)) 08813: doSolve32(7, 0x80l, puzzle | 0xd8040l, partsUsed | 0x800l); 08814: if(!(puzzle & 0xc80c0l)) 08815: doSolve32(7, 0x80l, puzzle | 0xc80c0l, partsUsed | 0x800l); 08816: } 08817: if(!(puzzle & 0xd00c0l)) 08818: doSolve32(7, 0x80l, puzzle | 0xd00c0l, partsUsed | 0x800l); 08819: piece12at6at32: 08820: break; 08821: case 7: 08822: if (partsUsed & 0x2l) goto piece2at7at32; 08823: if(!(puzzle & 0x12090080l)) 08824: doSolve32(8, 0x100l, puzzle | 0x12090080l, partsUsed | 0x2l); 08825: if(!(puzzle & 0x600c0080l)) 08826: doSolve32(8, 0x100l, puzzle | 0x600c0080l, partsUsed | 0x2l); 08827: piece2at7at32: 08828: if (partsUsed & 0x4l) goto piece3at7at32; 08829: if(!(puzzle & 0x80092080l)) 08830: doSolve32(8, 0x100l, puzzle | 0x80092080l, partsUsed | 0x4l); 08831: if(!(puzzle & 0x800e0080l)) 08832: doSolve32(8, 0x100l, puzzle | 0x800e0080l, partsUsed | 0x4l); 08833: piece3at7at32: 08834: if (partsUsed & 0x8l) goto piece4at7at32; 08835: if(!(puzzle & 0x2092080l)) 08836: doSolve32(8, 0x100l, puzzle | 0x2092080l, partsUsed | 0x8l); 08837: if(!(puzzle & 0x200e0080l)) 08838: doSolve32(8, 0x100l, puzzle | 0x200e0080l, partsUsed | 0x8l); 08839: piece4at7at32: 08840: if (partsUsed & 0x20l) goto piece6at7at32; 08841: if(!(puzzle & 0x92480l)) 08842: doSolve32(8, 0x100l, puzzle | 0x92480l, partsUsed | 0x20l); 08843: piece6at7at32: 08844: if (partsUsed & 0x100l) goto piece9at7at32; 08845: if(!(puzzle & 0xc8080l)) 08846: doSolve32(8, 0x100l, puzzle | 0xc8080l, partsUsed | 0x100l); 08847: piece9at7at32: 08848: if (partsUsed & 0x200l) goto piece10at7at32; 08849: if(!(puzzle & 0x10092080l)) 08850: doSolve32(8, 0x100l, puzzle | 0x10092080l, partsUsed | 0x200l); 08851: if(!(puzzle & 0x400e0080l)) 08852: doSolve32(8, 0x100l, puzzle | 0x400e0080l, partsUsed | 0x200l); 08853: piece10at7at32: 08854: if (partsUsed & 0x400l) goto piece11at7at32; 08855: if(!(puzzle & 0x90090080l)) 08856: doSolve32(8, 0x100l, puzzle | 0x90090080l, partsUsed | 0x400l); 08857: if(!(puzzle & 0xc00c0080l)) 08858: doSolve32(8, 0x100l, puzzle | 0xc00c0080l, partsUsed | 0x400l); 08859: piece11at7at32: 08860: if (partsUsed & 0x800l) goto piece12at7at32; 08861: if(!(puzzle & 0xd8080l)) 08862: doSolve32(8, 0x100l, puzzle | 0xd8080l, partsUsed | 0x800l); 08863: piece12at7at32: 08864: break; 08865: case 8: 08866: if (partsUsed & 0x2l) goto piece2at8at32; 08867: if(!(puzzle & 0x13300l)) 08868: doSolve32(9, 0x200l, puzzle | 0x13300l, partsUsed | 0x2l); 08869: if(!(puzzle & 0x19900l)) 08870: doSolve32(9, 0x200l, puzzle | 0x19900l, partsUsed | 0x2l); 08871: piece2at8at32: 08872: if (partsUsed & 0x4l) goto piece3at8at32; 08873: if(!(puzzle & 0x9700l)) 08874: doSolve32(9, 0x200l, puzzle | 0x9700l, partsUsed | 0x4l); 08875: if(!(puzzle & 0x7900l)) 08876: doSolve32(9, 0x200l, puzzle | 0x7900l, partsUsed | 0x4l); 08877: piece3at8at32: 08878: if (partsUsed & 0x8l) goto piece4at8at32; 08879: if(!(puzzle & 0x19300l)) 08880: doSolve32(9, 0x200l, puzzle | 0x19300l, partsUsed | 0x8l); 08881: if(!(puzzle & 0x13900l)) 08882: doSolve32(9, 0x200l, puzzle | 0x13900l, partsUsed | 0x8l); 08883: piece4at8at32: 08884: if (partsUsed & 0x10l) goto piece5at8at32; 08885: if (!(puzzle & 0x24900l)) { 08886: if(!(puzzle & 0x4124900l)) 08887: doSolve32(9, 0x200l, puzzle | 0x4124900l, partsUsed | 0x10l); 08888: if(!(puzzle & 0x65900l)) 08889: doSolve32(9, 0x200l, puzzle | 0x65900l, partsUsed | 0x10l); 08890: if(!(puzzle & 0x20824900l)) 08891: doSolve32(9, 0x200l, puzzle | 0x20824900l, partsUsed | 0x10l); 08892: if(!(puzzle & 0x2cb00l)) 08893: doSolve32(9, 0x200l, puzzle | 0x2cb00l, partsUsed | 0x10l); 08894: } 08895: if(!(puzzle & 0x4d300l)) 08896: doSolve32(9, 0x200l, puzzle | 0x4d300l, partsUsed | 0x10l); 08897: if(!(puzzle & 0x24904100l)) 08898: doSolve32(9, 0x200l, puzzle | 0x24904100l, partsUsed | 0x10l); 08899: piece5at8at32: 08900: if (partsUsed & 0x20l) goto piece6at8at32; 08901: if (!(puzzle & 0x24900l)) { 08902: if(!(puzzle & 0x20024900l)) 08903: doSolve32(9, 0x200l, puzzle | 0x20024900l, partsUsed | 0x20l); 08904: if(!(puzzle & 0x24b00l)) 08905: doSolve32(9, 0x200l, puzzle | 0x24b00l, partsUsed | 0x20l); 08906: if(!(puzzle & 0x124900l)) 08907: doSolve32(9, 0x200l, puzzle | 0x124900l, partsUsed | 0x20l); 08908: if(!(puzzle & 0x64900l)) 08909: doSolve32(9, 0x200l, puzzle | 0x64900l, partsUsed | 0x20l); 08910: } 08911: if(!(puzzle & 0x24900100l)) 08912: doSolve32(9, 0x200l, puzzle | 0x24900100l, partsUsed | 0x20l); 08913: if(!(puzzle & 0x49300l)) 08914: doSolve32(9, 0x200l, puzzle | 0x49300l, partsUsed | 0x20l); 08915: piece6at8at32: 08916: if (partsUsed & 0x40l) goto piece7at8at32; 08917: if (!(puzzle & 0x24900l)) { 08918: if(!(puzzle & 0x4024900l)) 08919: doSolve32(9, 0x200l, puzzle | 0x4024900l, partsUsed | 0x40l); 08920: if(!(puzzle & 0x25900l)) 08921: doSolve32(9, 0x200l, puzzle | 0x25900l, partsUsed | 0x40l); 08922: if(!(puzzle & 0x824900l)) 08923: doSolve32(9, 0x200l, puzzle | 0x824900l, partsUsed | 0x40l); 08924: if(!(puzzle & 0x2c900l)) 08925: doSolve32(9, 0x200l, puzzle | 0x2c900l, partsUsed | 0x40l); 08926: } 08927: piece7at8at32: 08928: if (partsUsed & 0x80l) goto piece8at8at32; 08929: if(!(puzzle & 0x4904100l)) 08930: doSolve32(9, 0x200l, puzzle | 0x4904100l, partsUsed | 0x80l); 08931: if(!(puzzle & 0x4104900l)) 08932: doSolve32(9, 0x200l, puzzle | 0x4104900l, partsUsed | 0x80l); 08933: if(!(puzzle & 0x2f00l)) 08934: doSolve32(9, 0x200l, puzzle | 0x2f00l, partsUsed | 0x80l); 08935: if(!(puzzle & 0xcb00l)) 08936: doSolve32(9, 0x200l, puzzle | 0xcb00l, partsUsed | 0x80l); 08937: if(!(puzzle & 0xd300l)) 08938: doSolve32(9, 0x200l, puzzle | 0xd300l, partsUsed | 0x80l); 08939: if(!(puzzle & 0x3d00l)) 08940: doSolve32(9, 0x200l, puzzle | 0x3d00l, partsUsed | 0x80l); 08941: if(!(puzzle & 0x700500l)) 08942: doSolve32(9, 0x200l, puzzle | 0x700500l, partsUsed | 0x80l); 08943: if(!(puzzle & 0x500700l)) 08944: doSolve32(9, 0x200l, puzzle | 0x500700l, partsUsed | 0x80l); 08945: piece8at8at32: 08946: if (partsUsed & 0x100l) goto piece9at8at32; 08947: if(!(puzzle & 0x1001300l)) 08948: doSolve32(9, 0x200l, puzzle | 0x1001300l, partsUsed | 0x100l); 08949: if(!(puzzle & 0x1300100l)) 08950: doSolve32(9, 0x200l, puzzle | 0x1300100l, partsUsed | 0x100l); 08951: if(!(puzzle & 0x200b00l)) 08952: doSolve32(9, 0x200l, puzzle | 0x200b00l, partsUsed | 0x100l); 08953: if(!(puzzle & 0x900300l)) 08954: doSolve32(9, 0x200l, puzzle | 0x900300l, partsUsed | 0x100l); 08955: if(!(puzzle & 0x1800900l)) 08956: doSolve32(9, 0x200l, puzzle | 0x1800900l, partsUsed | 0x100l); 08957: if(!(puzzle & 0x101900l)) 08958: doSolve32(9, 0x200l, puzzle | 0x101900l, partsUsed | 0x100l); 08959: piece9at8at32: 08960: if (partsUsed & 0x200l) goto piece10at8at32; 08961: if(!(puzzle & 0xb300l)) 08962: doSolve32(9, 0x200l, puzzle | 0xb300l, partsUsed | 0x200l); 08963: if(!(puzzle & 0xb900l)) 08964: doSolve32(9, 0x200l, puzzle | 0xb900l, partsUsed | 0x200l); 08965: piece10at8at32: 08966: if (partsUsed & 0x400l) goto piece11at8at32; 08967: if (!(puzzle & 0x800900l)) { 08968: if(!(puzzle & 0x4900900l)) 08969: doSolve32(9, 0x200l, puzzle | 0x4900900l, partsUsed | 0x400l); 08970: if(!(puzzle & 0x4804900l)) 08971: doSolve32(9, 0x200l, puzzle | 0x4804900l, partsUsed | 0x400l); 08972: if(!(puzzle & 0x904900l)) 08973: doSolve32(9, 0x200l, puzzle | 0x904900l, partsUsed | 0x400l); 08974: } 08975: if (!(puzzle & 0x1300l)) { 08976: if(!(puzzle & 0x3700l)) 08977: doSolve32(9, 0x200l, puzzle | 0x3700l, partsUsed | 0x400l); 08978: if(!(puzzle & 0x1f00l)) 08979: doSolve32(9, 0x200l, puzzle | 0x1f00l, partsUsed | 0x400l); 08980: if(!(puzzle & 0x5b00l)) 08981: doSolve32(9, 0x200l, puzzle | 0x5b00l, partsUsed | 0x400l); 08982: if(!(puzzle & 0x9b00l)) 08983: doSolve32(9, 0x200l, puzzle | 0x9b00l, partsUsed | 0x400l); 08984: if(!(puzzle & 0x3b00l)) 08985: doSolve32(9, 0x200l, puzzle | 0x3b00l, partsUsed | 0x400l); 08986: } 08987: if (!(puzzle & 0x200300l)) { 08988: if(!(puzzle & 0x700300l)) 08989: doSolve32(9, 0x200l, puzzle | 0x700300l, partsUsed | 0x400l); 08990: if(!(puzzle & 0x300700l)) 08991: doSolve32(9, 0x200l, puzzle | 0x300700l, partsUsed | 0x400l); 08992: if(!(puzzle & 0x600700l)) 08993: doSolve32(9, 0x200l, puzzle | 0x600700l, partsUsed | 0x400l); 08994: } 08995: if(!(puzzle & 0xd900l)) 08996: doSolve32(9, 0x200l, puzzle | 0xd900l, partsUsed | 0x400l); 08997: piece11at8at32: 08998: if (partsUsed & 0x800l) goto piece12at8at32; 08999: if (!(puzzle & 0x100300l)) { 09000: if(!(puzzle & 0x101b00l)) 09001: doSolve32(9, 0x200l, puzzle | 0x101b00l, partsUsed | 0x800l); 09002: if(!(puzzle & 0xb00300l)) 09003: doSolve32(9, 0x200l, puzzle | 0xb00300l, partsUsed | 0x800l); 09004: if(!(puzzle & 0x300b00l)) 09005: doSolve32(9, 0x200l, puzzle | 0x300b00l, partsUsed | 0x800l); 09006: if(!(puzzle & 0x301300l)) 09007: doSolve32(9, 0x200l, puzzle | 0x301300l, partsUsed | 0x800l); 09008: if(!(puzzle & 0x1300300l)) 09009: doSolve32(9, 0x200l, puzzle | 0x1300300l, partsUsed | 0x800l); 09010: if(!(puzzle & 0x900b00l)) 09011: doSolve32(9, 0x200l, puzzle | 0x900b00l, partsUsed | 0x800l); 09012: } 09013: if (!(puzzle & 0x1001100l)) { 09014: if(!(puzzle & 0x1801900l)) 09015: doSolve32(9, 0x200l, puzzle | 0x1801900l, partsUsed | 0x800l); 09016: if(!(puzzle & 0x1201300l)) 09017: doSolve32(9, 0x200l, puzzle | 0x1201300l, partsUsed | 0x800l); 09018: if(!(puzzle & 0x1001b00l)) 09019: doSolve32(9, 0x200l, puzzle | 0x1001b00l, partsUsed | 0x800l); 09020: } 09021: if (!(puzzle & 0x800900l)) { 09022: if(!(puzzle & 0xb00900l)) 09023: doSolve32(9, 0x200l, puzzle | 0xb00900l, partsUsed | 0x800l); 09024: if(!(puzzle & 0x901900l)) 09025: doSolve32(9, 0x200l, puzzle | 0x901900l, partsUsed | 0x800l); 09026: if(!(puzzle & 0x801b00l)) 09027: doSolve32(9, 0x200l, puzzle | 0x801b00l, partsUsed | 0x800l); 09028: if(!(puzzle & 0x1900900l)) 09029: doSolve32(9, 0x200l, puzzle | 0x1900900l, partsUsed | 0x800l); 09030: } 09031: if(!(puzzle & 0x201b00l)) 09032: doSolve32(9, 0x200l, puzzle | 0x201b00l, partsUsed | 0x800l); 09033: if(!(puzzle & 0x1b00100l)) 09034: doSolve32(9, 0x200l, puzzle | 0x1b00100l, partsUsed | 0x800l); 09035: piece12at8at32: 09036: break; 09037: case 9: 09038: if (partsUsed & 0x2l) goto piece2at9at32; 09039: if(!(puzzle & 0x5e00l)) 09040: doSolve32(10, 0x400l, puzzle | 0x5e00l, partsUsed | 0x2l); 09041: piece2at9at32: 09042: if (partsUsed & 0x4l) goto piece3at9at32; 09043: if(!(puzzle & 0x1d200l)) 09044: doSolve32(10, 0x400l, puzzle | 0x1d200l, partsUsed | 0x4l); 09045: piece3at9at32: 09046: if (partsUsed & 0x8l) goto piece4at9at32; 09047: if(!(puzzle & 0xd600l)) 09048: doSolve32(10, 0x400l, puzzle | 0xd600l, partsUsed | 0x8l); 09049: piece4at9at32: 09050: if (partsUsed & 0x10l) goto piece5at9at32; 09051: if (!(puzzle & 0x49200l)) { 09052: if(!(puzzle & 0x69a00l)) 09053: doSolve32(10, 0x400l, puzzle | 0x69a00l, partsUsed | 0x10l); 09054: if(!(puzzle & 0x8249200l)) 09055: doSolve32(10, 0x400l, puzzle | 0x8249200l, partsUsed | 0x10l); 09056: if(!(puzzle & 0xcb200l)) 09057: doSolve32(10, 0x400l, puzzle | 0xcb200l, partsUsed | 0x10l); 09058: if(!(puzzle & 0x41049200l)) 09059: doSolve32(10, 0x400l, puzzle | 0x41049200l, partsUsed | 0x10l); 09060: if(!(puzzle & 0x59600l)) 09061: doSolve32(10, 0x400l, puzzle | 0x59600l, partsUsed | 0x10l); 09062: } 09063: if(!(puzzle & 0x9a600l)) 09064: doSolve32(10, 0x400l, puzzle | 0x9a600l, partsUsed | 0x10l); 09065: if(!(puzzle & 0x49208200l)) 09066: doSolve32(10, 0x400l, puzzle | 0x49208200l, partsUsed | 0x10l); 09067: piece5at9at32: 09068: if (partsUsed & 0x20l) goto piece6at9at32; 09069: if (!(puzzle & 0x49200l)) { 09070: if(!(puzzle & 0x69200l)) 09071: doSolve32(10, 0x400l, puzzle | 0x69200l, partsUsed | 0x20l); 09072: if(!(puzzle & 0x40049200l)) 09073: doSolve32(10, 0x400l, puzzle | 0x40049200l, partsUsed | 0x20l); 09074: if(!(puzzle & 0x49600l)) 09075: doSolve32(10, 0x400l, puzzle | 0x49600l, partsUsed | 0x20l); 09076: if(!(puzzle & 0x249200l)) 09077: doSolve32(10, 0x400l, puzzle | 0x249200l, partsUsed | 0x20l); 09078: if(!(puzzle & 0xc9200l)) 09079: doSolve32(10, 0x400l, puzzle | 0xc9200l, partsUsed | 0x20l); 09080: } 09081: if(!(puzzle & 0x49200200l)) 09082: doSolve32(10, 0x400l, puzzle | 0x49200200l, partsUsed | 0x20l); 09083: if(!(puzzle & 0x92600l)) 09084: doSolve32(10, 0x400l, puzzle | 0x92600l, partsUsed | 0x20l); 09085: piece6at9at32: 09086: if (partsUsed & 0x40l) goto piece7at9at32; 09087: if (!(puzzle & 0x49200l)) { 09088: if(!(puzzle & 0x49a00l)) 09089: doSolve32(10, 0x400l, puzzle | 0x49a00l, partsUsed | 0x40l); 09090: if(!(puzzle & 0x4d200l)) 09091: doSolve32(10, 0x400l, puzzle | 0x4d200l, partsUsed | 0x40l); 09092: if(!(puzzle & 0x8049200l)) 09093: doSolve32(10, 0x400l, puzzle | 0x8049200l, partsUsed | 0x40l); 09094: if(!(puzzle & 0x4b200l)) 09095: doSolve32(10, 0x400l, puzzle | 0x4b200l, partsUsed | 0x40l); 09096: if(!(puzzle & 0x1049200l)) 09097: doSolve32(10, 0x400l, puzzle | 0x1049200l, partsUsed | 0x40l); 09098: if(!(puzzle & 0x59200l)) 09099: doSolve32(10, 0x400l, puzzle | 0x59200l, partsUsed | 0x40l); 09100: } 09101: piece7at9at32: 09102: if (partsUsed & 0x80l) goto piece8at9at32; 09103: if(!(puzzle & 0x9208200l)) 09104: doSolve32(10, 0x400l, puzzle | 0x9208200l, partsUsed | 0x80l); 09105: if(!(puzzle & 0x8209200l)) 09106: doSolve32(10, 0x400l, puzzle | 0x8209200l, partsUsed | 0x80l); 09107: if(!(puzzle & 0x19600l)) 09108: doSolve32(10, 0x400l, puzzle | 0x19600l, partsUsed | 0x80l); 09109: if(!(puzzle & 0x1a600l)) 09110: doSolve32(10, 0x400l, puzzle | 0x1a600l, partsUsed | 0x80l); 09111: piece8at9at32: 09112: if (partsUsed & 0x100l) goto piece9at9at32; 09113: if(!(puzzle & 0x801a00l)) 09114: doSolve32(10, 0x400l, puzzle | 0x801a00l, partsUsed | 0x100l); 09115: if(!(puzzle & 0x301200l)) 09116: doSolve32(10, 0x400l, puzzle | 0x301200l, partsUsed | 0x100l); 09117: if(!(puzzle & 0x203200l)) 09118: doSolve32(10, 0x400l, puzzle | 0x203200l, partsUsed | 0x100l); 09119: if(!(puzzle & 0x1a00200l)) 09120: doSolve32(10, 0x400l, puzzle | 0x1a00200l, partsUsed | 0x100l); 09121: if(!(puzzle & 0x1200600l)) 09122: doSolve32(10, 0x400l, puzzle | 0x1200600l, partsUsed | 0x100l); 09123: if(!(puzzle & 0x2600200l)) 09124: doSolve32(10, 0x400l, puzzle | 0x2600200l, partsUsed | 0x100l); 09125: if(!(puzzle & 0x401600l)) 09126: doSolve32(10, 0x400l, puzzle | 0x401600l, partsUsed | 0x100l); 09127: if(!(puzzle & 0x3001200l)) 09128: doSolve32(10, 0x400l, puzzle | 0x3001200l, partsUsed | 0x100l); 09129: if(!(puzzle & 0x2002600l)) 09130: doSolve32(10, 0x400l, puzzle | 0x2002600l, partsUsed | 0x100l); 09131: piece9at9at32: 09132: if (partsUsed & 0x200l) goto piece10at9at32; 09133: if (!(puzzle & 0x1a00l)) { 09134: if(!(puzzle & 0x13a00l)) 09135: doSolve32(10, 0x400l, puzzle | 0x13a00l, partsUsed | 0x200l); 09136: if(!(puzzle & 0x7a00l)) 09137: doSolve32(10, 0x400l, puzzle | 0x7a00l, partsUsed | 0x200l); 09138: if(!(puzzle & 0x9e00l)) 09139: doSolve32(10, 0x400l, puzzle | 0x9e00l, partsUsed | 0x200l); 09140: if(!(puzzle & 0x19a00l)) 09141: doSolve32(10, 0x400l, puzzle | 0x19a00l, partsUsed | 0x200l); 09142: } 09143: if(!(puzzle & 0xf200l)) 09144: doSolve32(10, 0x400l, puzzle | 0xf200l, partsUsed | 0x200l); 09145: piece10at9at32: 09146: if (partsUsed & 0x400l) goto piece11at9at32; 09147: if (!(puzzle & 0x1001200l)) { 09148: if(!(puzzle & 0x9201200l)) 09149: doSolve32(10, 0x400l, puzzle | 0x9201200l, partsUsed | 0x400l); 09150: if(!(puzzle & 0x9009200l)) 09151: doSolve32(10, 0x400l, puzzle | 0x9009200l, partsUsed | 0x400l); 09152: if(!(puzzle & 0x1209200l)) 09153: doSolve32(10, 0x400l, puzzle | 0x1209200l, partsUsed | 0x400l); 09154: } 09155: if (!(puzzle & 0x3200l)) { 09156: if(!(puzzle & 0xb600l)) 09157: doSolve32(10, 0x400l, puzzle | 0xb600l, partsUsed | 0x400l); 09158: if(!(puzzle & 0x13600l)) 09159: doSolve32(10, 0x400l, puzzle | 0x13600l, partsUsed | 0x400l); 09160: if(!(puzzle & 0x1b200l)) 09161: doSolve32(10, 0x400l, puzzle | 0x1b200l, partsUsed | 0x400l); 09162: } 09163: if(!(puzzle & 0x3e00l)) 09164: doSolve32(10, 0x400l, puzzle | 0x3e00l, partsUsed | 0x400l); 09165: if(!(puzzle & 0xda00l)) 09166: doSolve32(10, 0x400l, puzzle | 0xda00l, partsUsed | 0x400l); 09167: if(!(puzzle & 0x700600l)) 09168: doSolve32(10, 0x400l, puzzle | 0x700600l, partsUsed | 0x400l); 09169: piece11at9at32: 09170: if (partsUsed & 0x800l) goto piece12at9at32; 09171: if (!(puzzle & 0x1800200l)) { 09172: if(!(puzzle & 0x1b00200l)) 09173: doSolve32(10, 0x400l, puzzle | 0x1b00200l, partsUsed | 0x800l); 09174: if(!(puzzle & 0x1a01200l)) 09175: doSolve32(10, 0x400l, puzzle | 0x1a01200l, partsUsed | 0x800l); 09176: if(!(puzzle & 0x1801a00l)) 09177: doSolve32(10, 0x400l, puzzle | 0x1801a00l, partsUsed | 0x800l); 09178: } 09179: if (!(puzzle & 0x201200l)) { 09180: if(!(puzzle & 0x1301200l)) 09181: doSolve32(10, 0x400l, puzzle | 0x1301200l, partsUsed | 0x800l); 09182: if(!(puzzle & 0x1201a00l)) 09183: doSolve32(10, 0x400l, puzzle | 0x1201a00l, partsUsed | 0x800l); 09184: if(!(puzzle & 0x203600l)) 09185: doSolve32(10, 0x400l, puzzle | 0x203600l, partsUsed | 0x800l); 09186: if(!(puzzle & 0x1601200l)) 09187: doSolve32(10, 0x400l, puzzle | 0x1601200l, partsUsed | 0x800l); 09188: if(!(puzzle & 0x601600l)) 09189: doSolve32(10, 0x400l, puzzle | 0x601600l, partsUsed | 0x800l); 09190: if(!(puzzle & 0x1203200l)) 09191: doSolve32(10, 0x400l, puzzle | 0x1203200l, partsUsed | 0x800l); 09192: if(!(puzzle & 0x3201200l)) 09193: doSolve32(10, 0x400l, puzzle | 0x3201200l, partsUsed | 0x800l); 09194: if(!(puzzle & 0x1201600l)) 09195: doSolve32(10, 0x400l, puzzle | 0x1201600l, partsUsed | 0x800l); 09196: } 09197: if (!(puzzle & 0x400600l)) { 09198: if(!(puzzle & 0x1600600l)) 09199: doSolve32(10, 0x400l, puzzle | 0x1600600l, partsUsed | 0x800l); 09200: if(!(puzzle & 0x2402600l)) 09201: doSolve32(10, 0x400l, puzzle | 0x2402600l, partsUsed | 0x800l); 09202: if(!(puzzle & 0x602600l)) 09203: doSolve32(10, 0x400l, puzzle | 0x602600l, partsUsed | 0x800l); 09204: if(!(puzzle & 0x2600600l)) 09205: doSolve32(10, 0x400l, puzzle | 0x2600600l, partsUsed | 0x800l); 09206: if(!(puzzle & 0x403600l)) 09207: doSolve32(10, 0x400l, puzzle | 0x403600l, partsUsed | 0x800l); 09208: } 09209: if (!(puzzle & 0x3200l)) { 09210: if(!(puzzle & 0x3003200l)) 09211: doSolve32(10, 0x400l, puzzle | 0x3003200l, partsUsed | 0x800l); 09212: if(!(puzzle & 0x2003600l)) 09213: doSolve32(10, 0x400l, puzzle | 0x2003600l, partsUsed | 0x800l); 09214: if(!(puzzle & 0x1003600l)) 09215: doSolve32(10, 0x400l, puzzle | 0x1003600l, partsUsed | 0x800l); 09216: } 09217: if(!(puzzle & 0x3600200l)) 09218: doSolve32(10, 0x400l, puzzle | 0x3600200l, partsUsed | 0x800l); 09219: piece12at9at32: 09220: break; 09221: case 10: 09222: if (partsUsed & 0x2l) goto piece2at10at32; 09223: if(!(puzzle & 0xf400l)) 09224: doSolve32(11, 0x800l, puzzle | 0xf400l, partsUsed | 0x2l); 09225: piece2at10at32: 09226: if (partsUsed & 0x4l) goto piece3at10at32; 09227: if(!(puzzle & 0x13c00l)) 09228: doSolve32(11, 0x800l, puzzle | 0x13c00l, partsUsed | 0x4l); 09229: piece3at10at32: 09230: if (partsUsed & 0x8l) goto piece4at10at32; 09231: if(!(puzzle & 0x7c00l)) 09232: doSolve32(11, 0x800l, puzzle | 0x7c00l, partsUsed | 0x8l); 09233: piece4at10at32: 09234: if (partsUsed & 0x10l) goto piece5at10at32; 09235: if (!(puzzle & 0x92400l)) { 09236: if(!(puzzle & 0xd3400l)) 09237: doSolve32(11, 0x800l, puzzle | 0xd3400l, partsUsed | 0x10l); 09238: if(!(puzzle & 0x10492400l)) 09239: doSolve32(11, 0x800l, puzzle | 0x10492400l, partsUsed | 0x10l); 09240: if(!(puzzle & 0x82092400l)) 09241: doSolve32(11, 0x800l, puzzle | 0x82092400l, partsUsed | 0x10l); 09242: } 09243: if(!(puzzle & 0x92410400l)) 09244: doSolve32(11, 0x800l, puzzle | 0x92410400l, partsUsed | 0x10l); 09245: piece5at10at32: 09246: if (partsUsed & 0x20l) goto piece6at10at32; 09247: if (!(puzzle & 0x92400l)) { 09248: if(!(puzzle & 0xd2400l)) 09249: doSolve32(11, 0x800l, puzzle | 0xd2400l, partsUsed | 0x20l); 09250: if(!(puzzle & 0x80092400l)) 09251: doSolve32(11, 0x800l, puzzle | 0x80092400l, partsUsed | 0x20l); 09252: if(!(puzzle & 0x492400l)) 09253: doSolve32(11, 0x800l, puzzle | 0x492400l, partsUsed | 0x20l); 09254: } 09255: if(!(puzzle & 0x92400400l)) 09256: doSolve32(11, 0x800l, puzzle | 0x92400400l, partsUsed | 0x20l); 09257: piece6at10at32: 09258: if (partsUsed & 0x40l) goto piece7at10at32; 09259: if (!(puzzle & 0x92400l)) { 09260: if(!(puzzle & 0x93400l)) 09261: doSolve32(11, 0x800l, puzzle | 0x93400l, partsUsed | 0x40l); 09262: if(!(puzzle & 0x9a400l)) 09263: doSolve32(11, 0x800l, puzzle | 0x9a400l, partsUsed | 0x40l); 09264: if(!(puzzle & 0x10092400l)) 09265: doSolve32(11, 0x800l, puzzle | 0x10092400l, partsUsed | 0x40l); 09266: if(!(puzzle & 0x2092400l)) 09267: doSolve32(11, 0x800l, puzzle | 0x2092400l, partsUsed | 0x40l); 09268: } 09269: piece7at10at32: 09270: if (partsUsed & 0x80l) goto piece8at10at32; 09271: if(!(puzzle & 0x12410400l)) 09272: doSolve32(11, 0x800l, puzzle | 0x12410400l, partsUsed | 0x80l); 09273: if(!(puzzle & 0x10412400l)) 09274: doSolve32(11, 0x800l, puzzle | 0x10412400l, partsUsed | 0x80l); 09275: piece8at10at32: 09276: if (partsUsed & 0x100l) goto piece9at10at32; 09277: if(!(puzzle & 0x3400400l)) 09278: doSolve32(11, 0x800l, puzzle | 0x3400400l, partsUsed | 0x100l); 09279: if(!(puzzle & 0x1003400l)) 09280: doSolve32(11, 0x800l, puzzle | 0x1003400l, partsUsed | 0x100l); 09281: if(!(puzzle & 0x602400l)) 09282: doSolve32(11, 0x800l, puzzle | 0x602400l, partsUsed | 0x100l); 09283: piece9at10at32: 09284: if (partsUsed & 0x200l) goto piece10at10at32; 09285: if(!(puzzle & 0xbc00l)) 09286: doSolve32(11, 0x800l, puzzle | 0xbc00l, partsUsed | 0x200l); 09287: piece10at10at32: 09288: if (partsUsed & 0x400l) goto piece11at10at32; 09289: if (!(puzzle & 0x12400l)) { 09290: if(!(puzzle & 0x1b400l)) 09291: doSolve32(11, 0x800l, puzzle | 0x1b400l, partsUsed | 0x400l); 09292: if(!(puzzle & 0x12012400l)) 09293: doSolve32(11, 0x800l, puzzle | 0x12012400l, partsUsed | 0x400l); 09294: if(!(puzzle & 0x2412400l)) 09295: doSolve32(11, 0x800l, puzzle | 0x2412400l, partsUsed | 0x400l); 09296: } 09297: if(!(puzzle & 0x12402400l)) 09298: doSolve32(11, 0x800l, puzzle | 0x12402400l, partsUsed | 0x400l); 09299: piece11at10at32: 09300: if (partsUsed & 0x800l) goto piece12at10at32; 09301: if (!(puzzle & 0x3000400l)) { 09302: if(!(puzzle & 0x3600400l)) 09303: doSolve32(11, 0x800l, puzzle | 0x3600400l, partsUsed | 0x800l); 09304: if(!(puzzle & 0x3402400l)) 09305: doSolve32(11, 0x800l, puzzle | 0x3402400l, partsUsed | 0x800l); 09306: if(!(puzzle & 0x3003400l)) 09307: doSolve32(11, 0x800l, puzzle | 0x3003400l, partsUsed | 0x800l); 09308: } 09309: if(!(puzzle & 0x2602400l)) 09310: doSolve32(11, 0x800l, puzzle | 0x2602400l, partsUsed | 0x800l); 09311: if(!(puzzle & 0x2403400l)) 09312: doSolve32(11, 0x800l, puzzle | 0x2403400l, partsUsed | 0x800l); 09313: piece12at10at32: 09314: break; 09315: case 11: 09316: if (partsUsed & 0x2l) goto piece2at11at32; 09317: if(!(puzzle & 0x99800l)) 09318: doSolve32(12, 0x1000l, puzzle | 0x99800l, partsUsed | 0x2l); 09319: if(!(puzzle & 0xcc800l)) 09320: doSolve32(12, 0x1000l, puzzle | 0xcc800l, partsUsed | 0x2l); 09321: piece2at11at32: 09322: if (partsUsed & 0x4l) goto piece3at11at32; 09323: if(!(puzzle & 0x4b800l)) 09324: doSolve32(12, 0x1000l, puzzle | 0x4b800l, partsUsed | 0x4l); 09325: if(!(puzzle & 0x3c800l)) 09326: doSolve32(12, 0x1000l, puzzle | 0x3c800l, partsUsed | 0x4l); 09327: piece3at11at32: 09328: if (partsUsed & 0x8l) goto piece4at11at32; 09329: if(!(puzzle & 0xc9800l)) 09330: doSolve32(12, 0x1000l, puzzle | 0xc9800l, partsUsed | 0x8l); 09331: if(!(puzzle & 0x9c800l)) 09332: doSolve32(12, 0x1000l, puzzle | 0x9c800l, partsUsed | 0x8l); 09333: piece4at11at32: 09334: if (partsUsed & 0x10l) goto piece5at11at32; 09335: if(!(puzzle & 0x24920800l)) 09336: doSolve32(12, 0x1000l, puzzle | 0x24920800l, partsUsed | 0x10l); 09337: piece5at11at32: 09338: if (partsUsed & 0x40l) goto piece7at11at32; 09339: if(!(puzzle & 0x24900800l)) 09340: doSolve32(12, 0x1000l, puzzle | 0x24900800l, partsUsed | 0x40l); 09341: piece7at11at32: 09342: if (partsUsed & 0x80l) goto piece8at11at32; 09343: if(!(puzzle & 0x24820800l)) 09344: doSolve32(12, 0x1000l, puzzle | 0x24820800l, partsUsed | 0x80l); 09345: if(!(puzzle & 0x20824800l)) 09346: doSolve32(12, 0x1000l, puzzle | 0x20824800l, partsUsed | 0x80l); 09347: if(!(puzzle & 0x17800l)) 09348: doSolve32(12, 0x1000l, puzzle | 0x17800l, partsUsed | 0x80l); 09349: if(!(puzzle & 0x65800l)) 09350: doSolve32(12, 0x1000l, puzzle | 0x65800l, partsUsed | 0x80l); 09351: if(!(puzzle & 0x69800l)) 09352: doSolve32(12, 0x1000l, puzzle | 0x69800l, partsUsed | 0x80l); 09353: if(!(puzzle & 0x1e800l)) 09354: doSolve32(12, 0x1000l, puzzle | 0x1e800l, partsUsed | 0x80l); 09355: if(!(puzzle & 0x3802800l)) 09356: doSolve32(12, 0x1000l, puzzle | 0x3802800l, partsUsed | 0x80l); 09357: if(!(puzzle & 0x2803800l)) 09358: doSolve32(12, 0x1000l, puzzle | 0x2803800l, partsUsed | 0x80l); 09359: piece8at11at32: 09360: if (partsUsed & 0x100l) goto piece9at11at32; 09361: if(!(puzzle & 0x1201800l)) 09362: doSolve32(12, 0x1000l, puzzle | 0x1201800l, partsUsed | 0x100l); 09363: if(!(puzzle & 0x1005800l)) 09364: doSolve32(12, 0x1000l, puzzle | 0x1005800l, partsUsed | 0x100l); 09365: if(!(puzzle & 0xb00800l)) 09366: doSolve32(12, 0x1000l, puzzle | 0xb00800l, partsUsed | 0x100l); 09367: if(!(puzzle & 0x9800800l)) 09368: doSolve32(12, 0x1000l, puzzle | 0x9800800l, partsUsed | 0x100l); 09369: if(!(puzzle & 0x4801800l)) 09370: doSolve32(12, 0x1000l, puzzle | 0x4801800l, partsUsed | 0x100l); 09371: if(!(puzzle & 0xc004800l)) 09372: doSolve32(12, 0x1000l, puzzle | 0xc004800l, partsUsed | 0x100l); 09373: if(!(puzzle & 0x80c800l)) 09374: doSolve32(12, 0x1000l, puzzle | 0x80c800l, partsUsed | 0x100l); 09375: if(!(puzzle & 0x8009800l)) 09376: doSolve32(12, 0x1000l, puzzle | 0x8009800l, partsUsed | 0x100l); 09377: piece9at11at32: 09378: if (partsUsed & 0x200l) goto piece10at11at32; 09379: if(!(puzzle & 0x59800l)) 09380: doSolve32(12, 0x1000l, puzzle | 0x59800l, partsUsed | 0x200l); 09381: if(!(puzzle & 0x5c800l)) 09382: doSolve32(12, 0x1000l, puzzle | 0x5c800l, partsUsed | 0x200l); 09383: piece10at11at32: 09384: if (partsUsed & 0x400l) goto piece11at11at32; 09385: if (!(puzzle & 0x4004800l)) { 09386: if(!(puzzle & 0x4904800l)) 09387: doSolve32(12, 0x1000l, puzzle | 0x4904800l, partsUsed | 0x400l); 09388: if(!(puzzle & 0x24804800l)) 09389: doSolve32(12, 0x1000l, puzzle | 0x24804800l, partsUsed | 0x400l); 09390: if(!(puzzle & 0x24024800l)) 09391: doSolve32(12, 0x1000l, puzzle | 0x24024800l, partsUsed | 0x400l); 09392: if(!(puzzle & 0x4824800l)) 09393: doSolve32(12, 0x1000l, puzzle | 0x4824800l, partsUsed | 0x400l); 09394: } 09395: if (!(puzzle & 0x9800l)) { 09396: if(!(puzzle & 0x1b800l)) 09397: doSolve32(12, 0x1000l, puzzle | 0x1b800l, partsUsed | 0x400l); 09398: if(!(puzzle & 0xf800l)) 09399: doSolve32(12, 0x1000l, puzzle | 0xf800l, partsUsed | 0x400l); 09400: if(!(puzzle & 0x2d800l)) 09401: doSolve32(12, 0x1000l, puzzle | 0x2d800l, partsUsed | 0x400l); 09402: if(!(puzzle & 0x4d800l)) 09403: doSolve32(12, 0x1000l, puzzle | 0x4d800l, partsUsed | 0x400l); 09404: if(!(puzzle & 0x1d800l)) 09405: doSolve32(12, 0x1000l, puzzle | 0x1d800l, partsUsed | 0x400l); 09406: } 09407: if (!(puzzle & 0x1001800l)) { 09408: if(!(puzzle & 0x3801800l)) 09409: doSolve32(12, 0x1000l, puzzle | 0x3801800l, partsUsed | 0x400l); 09410: if(!(puzzle & 0x1803800l)) 09411: doSolve32(12, 0x1000l, puzzle | 0x1803800l, partsUsed | 0x400l); 09412: if(!(puzzle & 0x3003800l)) 09413: doSolve32(12, 0x1000l, puzzle | 0x3003800l, partsUsed | 0x400l); 09414: } 09415: if(!(puzzle & 0x6c800l)) 09416: doSolve32(12, 0x1000l, puzzle | 0x6c800l, partsUsed | 0x400l); 09417: piece11at11at32: 09418: if (partsUsed & 0x800l) goto piece12at11at32; 09419: if (!(puzzle & 0x1800800l)) { 09420: if(!(puzzle & 0x1b00800l)) 09421: doSolve32(12, 0x1000l, puzzle | 0x1b00800l, partsUsed | 0x800l); 09422: if(!(puzzle & 0x1a01800l)) 09423: doSolve32(12, 0x1000l, puzzle | 0x1a01800l, partsUsed | 0x800l); 09424: if(!(puzzle & 0x1901800l)) 09425: doSolve32(12, 0x1000l, puzzle | 0x1901800l, partsUsed | 0x800l); 09426: if(!(puzzle & 0x5801800l)) 09427: doSolve32(12, 0x1000l, puzzle | 0x5801800l, partsUsed | 0x800l); 09428: if(!(puzzle & 0x5804800l)) 09429: doSolve32(12, 0x1000l, puzzle | 0x5804800l, partsUsed | 0x800l); 09430: if(!(puzzle & 0x1805800l)) 09431: doSolve32(12, 0x1000l, puzzle | 0x1805800l, partsUsed | 0x800l); 09432: if(!(puzzle & 0x1809800l)) 09433: doSolve32(12, 0x1000l, puzzle | 0x1809800l, partsUsed | 0x800l); 09434: if(!(puzzle & 0x9801800l)) 09435: doSolve32(12, 0x1000l, puzzle | 0x9801800l, partsUsed | 0x800l); 09436: if(!(puzzle & 0xd800800l)) 09437: doSolve32(12, 0x1000l, puzzle | 0xd800800l, partsUsed | 0x800l); 09438: } 09439: if (!(puzzle & 0xc800l)) { 09440: if(!(puzzle & 0x80d800l)) 09441: doSolve32(12, 0x1000l, puzzle | 0x80d800l, partsUsed | 0x800l); 09442: if(!(puzzle & 0xc00c800l)) 09443: doSolve32(12, 0x1000l, puzzle | 0xc00c800l, partsUsed | 0x800l); 09444: if(!(puzzle & 0x480c800l)) 09445: doSolve32(12, 0x1000l, puzzle | 0x480c800l, partsUsed | 0x800l); 09446: if(!(puzzle & 0x800d800l)) 09447: doSolve32(12, 0x1000l, puzzle | 0x800d800l, partsUsed | 0x800l); 09448: if(!(puzzle & 0x100d800l)) 09449: doSolve32(12, 0x1000l, puzzle | 0x100d800l, partsUsed | 0x800l); 09450: if(!(puzzle & 0x400d800l)) 09451: doSolve32(12, 0x1000l, puzzle | 0x400d800l, partsUsed | 0x800l); 09452: } 09453: if(!(puzzle & 0x9009800l)) 09454: doSolve32(12, 0x1000l, puzzle | 0x9009800l, partsUsed | 0x800l); 09455: if(!(puzzle & 0xc804800l)) 09456: doSolve32(12, 0x1000l, puzzle | 0xc804800l, partsUsed | 0x800l); 09457: if(!(puzzle & 0x4805800l)) 09458: doSolve32(12, 0x1000l, puzzle | 0x4805800l, partsUsed | 0x800l); 09459: piece12at11at32: 09460: break; 09461: case 12: 09462: if (partsUsed & 0x2l) goto piece2at12at32; 09463: if(!(puzzle & 0x2f000l)) 09464: doSolve32(13, 0x2000l, puzzle | 0x2f000l, partsUsed | 0x2l); 09465: piece2at12at32: 09466: if (partsUsed & 0x4l) goto piece3at12at32; 09467: if(!(puzzle & 0xe9000l)) 09468: doSolve32(13, 0x2000l, puzzle | 0xe9000l, partsUsed | 0x4l); 09469: piece3at12at32: 09470: if (partsUsed & 0x8l) goto piece4at12at32; 09471: if(!(puzzle & 0x6b000l)) 09472: doSolve32(13, 0x2000l, puzzle | 0x6b000l, partsUsed | 0x8l); 09473: piece4at12at32: 09474: if (partsUsed & 0x10l) goto piece5at12at32; 09475: if(!(puzzle & 0x49241000l)) 09476: doSolve32(13, 0x2000l, puzzle | 0x49241000l, partsUsed | 0x10l); 09477: piece5at12at32: 09478: if (partsUsed & 0x40l) goto piece7at12at32; 09479: if(!(puzzle & 0x49201000l)) 09480: doSolve32(13, 0x2000l, puzzle | 0x49201000l, partsUsed | 0x40l); 09481: piece7at12at32: 09482: if (partsUsed & 0x80l) goto piece8at12at32; 09483: if(!(puzzle & 0x49041000l)) 09484: doSolve32(13, 0x2000l, puzzle | 0x49041000l, partsUsed | 0x80l); 09485: if(!(puzzle & 0x41049000l)) 09486: doSolve32(13, 0x2000l, puzzle | 0x41049000l, partsUsed | 0x80l); 09487: if(!(puzzle & 0xcb000l)) 09488: doSolve32(13, 0x2000l, puzzle | 0xcb000l, partsUsed | 0x80l); 09489: if(!(puzzle & 0xd3000l)) 09490: doSolve32(13, 0x2000l, puzzle | 0xd3000l, partsUsed | 0x80l); 09491: piece8at12at32: 09492: if (partsUsed & 0x100l) goto piece9at12at32; 09493: if(!(puzzle & 0x1901000l)) 09494: doSolve32(13, 0x2000l, puzzle | 0x1901000l, partsUsed | 0x100l); 09495: if(!(puzzle & 0x1809000l)) 09496: doSolve32(13, 0x2000l, puzzle | 0x1809000l, partsUsed | 0x100l); 09497: if(!(puzzle & 0x2403000l)) 09498: doSolve32(13, 0x2000l, puzzle | 0x2403000l, partsUsed | 0x100l); 09499: if(!(puzzle & 0x200b000l)) 09500: doSolve32(13, 0x2000l, puzzle | 0x200b000l, partsUsed | 0x100l); 09501: if(!(puzzle & 0x1601000l)) 09502: doSolve32(13, 0x2000l, puzzle | 0x1601000l, partsUsed | 0x100l); 09503: if(!(puzzle & 0x400d000l)) 09504: doSolve32(13, 0x2000l, puzzle | 0x400d000l, partsUsed | 0x100l); 09505: if(!(puzzle & 0xd001000l)) 09506: doSolve32(13, 0x2000l, puzzle | 0xd001000l, partsUsed | 0x100l); 09507: if(!(puzzle & 0x9003000l)) 09508: doSolve32(13, 0x2000l, puzzle | 0x9003000l, partsUsed | 0x100l); 09509: if(!(puzzle & 0x13001000l)) 09510: doSolve32(13, 0x2000l, puzzle | 0x13001000l, partsUsed | 0x100l); 09511: if(!(puzzle & 0x18009000l)) 09512: doSolve32(13, 0x2000l, puzzle | 0x18009000l, partsUsed | 0x100l); 09513: if(!(puzzle & 0x1019000l)) 09514: doSolve32(13, 0x2000l, puzzle | 0x1019000l, partsUsed | 0x100l); 09515: if(!(puzzle & 0x10013000l)) 09516: doSolve32(13, 0x2000l, puzzle | 0x10013000l, partsUsed | 0x100l); 09517: piece9at12at32: 09518: if (partsUsed & 0x200l) goto piece10at12at32; 09519: if (!(puzzle & 0xd000l)) { 09520: if(!(puzzle & 0x9d000l)) 09521: doSolve32(13, 0x2000l, puzzle | 0x9d000l, partsUsed | 0x200l); 09522: if(!(puzzle & 0x3d000l)) 09523: doSolve32(13, 0x2000l, puzzle | 0x3d000l, partsUsed | 0x200l); 09524: if(!(puzzle & 0x4f000l)) 09525: doSolve32(13, 0x2000l, puzzle | 0x4f000l, partsUsed | 0x200l); 09526: if(!(puzzle & 0xcd000l)) 09527: doSolve32(13, 0x2000l, puzzle | 0xcd000l, partsUsed | 0x200l); 09528: } 09529: if(!(puzzle & 0x79000l)) 09530: doSolve32(13, 0x2000l, puzzle | 0x79000l, partsUsed | 0x200l); 09531: piece10at12at32: 09532: if (partsUsed & 0x400l) goto piece11at12at32; 09533: if (!(puzzle & 0x8009000l)) { 09534: if(!(puzzle & 0x9209000l)) 09535: doSolve32(13, 0x2000l, puzzle | 0x9209000l, partsUsed | 0x400l); 09536: if(!(puzzle & 0x49009000l)) 09537: doSolve32(13, 0x2000l, puzzle | 0x49009000l, partsUsed | 0x400l); 09538: if(!(puzzle & 0x48049000l)) 09539: doSolve32(13, 0x2000l, puzzle | 0x48049000l, partsUsed | 0x400l); 09540: if(!(puzzle & 0x9049000l)) 09541: doSolve32(13, 0x2000l, puzzle | 0x9049000l, partsUsed | 0x400l); 09542: } 09543: if (!(puzzle & 0x19000l)) { 09544: if(!(puzzle & 0x5b000l)) 09545: doSolve32(13, 0x2000l, puzzle | 0x5b000l, partsUsed | 0x400l); 09546: if(!(puzzle & 0x9b000l)) 09547: doSolve32(13, 0x2000l, puzzle | 0x9b000l, partsUsed | 0x400l); 09548: if(!(puzzle & 0xd9000l)) 09549: doSolve32(13, 0x2000l, puzzle | 0xd9000l, partsUsed | 0x400l); 09550: } 09551: if(!(puzzle & 0x1f000l)) 09552: doSolve32(13, 0x2000l, puzzle | 0x1f000l, partsUsed | 0x400l); 09553: if(!(puzzle & 0x6d000l)) 09554: doSolve32(13, 0x2000l, puzzle | 0x6d000l, partsUsed | 0x400l); 09555: if(!(puzzle & 0x3803000l)) 09556: doSolve32(13, 0x2000l, puzzle | 0x3803000l, partsUsed | 0x400l); 09557: piece11at12at32: 09558: if (partsUsed & 0x800l) goto piece12at12at32; 09559: if (!(puzzle & 0x1201000l)) { 09560: if(!(puzzle & 0x1b01000l)) 09561: doSolve32(13, 0x2000l, puzzle | 0x1b01000l, partsUsed | 0x800l); 09562: if(!(puzzle & 0x3601000l)) 09563: doSolve32(13, 0x2000l, puzzle | 0x3601000l, partsUsed | 0x800l); 09564: if(!(puzzle & 0x3203000l)) 09565: doSolve32(13, 0x2000l, puzzle | 0x3203000l, partsUsed | 0x800l); 09566: } 09567: if (!(puzzle & 0x1003000l)) { 09568: if(!(puzzle & 0x3403000l)) 09569: doSolve32(13, 0x2000l, puzzle | 0x3403000l, partsUsed | 0x800l); 09570: if(!(puzzle & 0x101b000l)) 09571: doSolve32(13, 0x2000l, puzzle | 0x101b000l, partsUsed | 0x800l); 09572: if(!(puzzle & 0xb003000l)) 09573: doSolve32(13, 0x2000l, puzzle | 0xb003000l, partsUsed | 0x800l); 09574: if(!(puzzle & 0x300b000l)) 09575: doSolve32(13, 0x2000l, puzzle | 0x300b000l, partsUsed | 0x800l); 09576: if(!(puzzle & 0x3013000l)) 09577: doSolve32(13, 0x2000l, puzzle | 0x3013000l, partsUsed | 0x800l); 09578: if(!(puzzle & 0x13003000l)) 09579: doSolve32(13, 0x2000l, puzzle | 0x13003000l, partsUsed | 0x800l); 09580: if(!(puzzle & 0x900b000l)) 09581: doSolve32(13, 0x2000l, puzzle | 0x900b000l, partsUsed | 0x800l); 09582: } 09583: if (!(puzzle & 0xc001000l)) { 09584: if(!(puzzle & 0xd801000l)) 09585: doSolve32(13, 0x2000l, puzzle | 0xd801000l, partsUsed | 0x800l); 09586: if(!(puzzle & 0xd009000l)) 09587: doSolve32(13, 0x2000l, puzzle | 0xd009000l, partsUsed | 0x800l); 09588: if(!(puzzle & 0xc00d000l)) 09589: doSolve32(13, 0x2000l, puzzle | 0xc00d000l, partsUsed | 0x800l); 09590: } 09591: if (!(puzzle & 0x8009000l)) { 09592: if(!(puzzle & 0x9809000l)) 09593: doSolve32(13, 0x2000l, puzzle | 0x9809000l, partsUsed | 0x800l); 09594: if(!(puzzle & 0x900d000l)) 09595: doSolve32(13, 0x2000l, puzzle | 0x900d000l, partsUsed | 0x800l); 09596: if(!(puzzle & 0x18019000l)) 09597: doSolve32(13, 0x2000l, puzzle | 0x18019000l, partsUsed | 0x800l); 09598: if(!(puzzle & 0xb009000l)) 09599: doSolve32(13, 0x2000l, puzzle | 0xb009000l, partsUsed | 0x800l); 09600: if(!(puzzle & 0x9019000l)) 09601: doSolve32(13, 0x2000l, puzzle | 0x9019000l, partsUsed | 0x800l); 09602: if(!(puzzle & 0x801b000l)) 09603: doSolve32(13, 0x2000l, puzzle | 0x801b000l, partsUsed | 0x800l); 09604: if(!(puzzle & 0x19009000l)) 09605: doSolve32(13, 0x2000l, puzzle | 0x19009000l, partsUsed | 0x800l); 09606: } 09607: if (!(puzzle & 0x13000l)) { 09608: if(!(puzzle & 0x12013000l)) 09609: doSolve32(13, 0x2000l, puzzle | 0x12013000l, partsUsed | 0x800l); 09610: if(!(puzzle & 0x1001b000l)) 09611: doSolve32(13, 0x2000l, puzzle | 0x1001b000l, partsUsed | 0x800l); 09612: if(!(puzzle & 0x201b000l)) 09613: doSolve32(13, 0x2000l, puzzle | 0x201b000l, partsUsed | 0x800l); 09614: } 09615: if(!(puzzle & 0x1b001000l)) 09616: doSolve32(13, 0x2000l, puzzle | 0x1b001000l, partsUsed | 0x800l); 09617: piece12at12at32: 09618: break; 09619: case 13: 09620: if (partsUsed & 0x2l) goto piece2at13at32; 09621: if(!(puzzle & 0x7a000l)) 09622: doSolve32(14, 0x4000l, puzzle | 0x7a000l, partsUsed | 0x2l); 09623: piece2at13at32: 09624: if (partsUsed & 0x4l) goto piece3at13at32; 09625: if(!(puzzle & 0x9e000l)) 09626: doSolve32(14, 0x4000l, puzzle | 0x9e000l, partsUsed | 0x4l); 09627: piece3at13at32: 09628: if (partsUsed & 0x8l) goto piece4at13at32; 09629: if(!(puzzle & 0x3e000l)) 09630: doSolve32(14, 0x4000l, puzzle | 0x3e000l, partsUsed | 0x8l); 09631: piece4at13at32: 09632: if (partsUsed & 0x10l) goto piece5at13at32; 09633: if(!(puzzle & 0x92482000l)) 09634: doSolve32(14, 0x4000l, puzzle | 0x92482000l, partsUsed | 0x10l); 09635: piece5at13at32: 09636: if (partsUsed & 0x40l) goto piece7at13at32; 09637: if(!(puzzle & 0x92402000l)) 09638: doSolve32(14, 0x4000l, puzzle | 0x92402000l, partsUsed | 0x40l); 09639: piece7at13at32: 09640: if (partsUsed & 0x80l) goto piece8at13at32; 09641: if(!(puzzle & 0x92082000l)) 09642: doSolve32(14, 0x4000l, puzzle | 0x92082000l, partsUsed | 0x80l); 09643: if(!(puzzle & 0x82092000l)) 09644: doSolve32(14, 0x4000l, puzzle | 0x82092000l, partsUsed | 0x80l); 09645: piece8at13at32: 09646: if (partsUsed & 0x100l) goto piece9at13at32; 09647: if(!(puzzle & 0x3202000l)) 09648: doSolve32(14, 0x4000l, puzzle | 0x3202000l, partsUsed | 0x100l); 09649: if(!(puzzle & 0x3012000l)) 09650: doSolve32(14, 0x4000l, puzzle | 0x3012000l, partsUsed | 0x100l); 09651: if(!(puzzle & 0x801a000l)) 09652: doSolve32(14, 0x4000l, puzzle | 0x801a000l, partsUsed | 0x100l); 09653: if(!(puzzle & 0x1a002000l)) 09654: doSolve32(14, 0x4000l, puzzle | 0x1a002000l, partsUsed | 0x100l); 09655: piece9at13at32: 09656: if (partsUsed & 0x200l) goto piece10at13at32; 09657: if(!(puzzle & 0x5e000l)) 09658: doSolve32(14, 0x4000l, puzzle | 0x5e000l, partsUsed | 0x200l); 09659: piece10at13at32: 09660: if (partsUsed & 0x400l) goto piece11at13at32; 09661: if (!(puzzle & 0x10012000l)) { 09662: if(!(puzzle & 0x12412000l)) 09663: doSolve32(14, 0x4000l, puzzle | 0x12412000l, partsUsed | 0x400l); 09664: if(!(puzzle & 0x92012000l)) 09665: doSolve32(14, 0x4000l, puzzle | 0x92012000l, partsUsed | 0x400l); 09666: if(!(puzzle & 0x90092000l)) 09667: doSolve32(14, 0x4000l, puzzle | 0x90092000l, partsUsed | 0x400l); 09668: if(!(puzzle & 0x12092000l)) 09669: doSolve32(14, 0x4000l, puzzle | 0x12092000l, partsUsed | 0x400l); 09670: } 09671: if(!(puzzle & 0xda000l)) 09672: doSolve32(14, 0x4000l, puzzle | 0xda000l, partsUsed | 0x400l); 09673: piece11at13at32: 09674: if (partsUsed & 0x800l) goto piece12at13at32; 09675: if (!(puzzle & 0x3002000l)) { 09676: if(!(puzzle & 0x3602000l)) 09677: doSolve32(14, 0x4000l, puzzle | 0x3602000l, partsUsed | 0x800l); 09678: if(!(puzzle & 0x1b002000l)) 09679: doSolve32(14, 0x4000l, puzzle | 0x1b002000l, partsUsed | 0x800l); 09680: if(!(puzzle & 0x13012000l)) 09681: doSolve32(14, 0x4000l, puzzle | 0x13012000l, partsUsed | 0x800l); 09682: } 09683: if (!(puzzle & 0x10012000l)) { 09684: if(!(puzzle & 0x1a012000l)) 09685: doSolve32(14, 0x4000l, puzzle | 0x1a012000l, partsUsed | 0x800l); 09686: if(!(puzzle & 0x1801a000l)) 09687: doSolve32(14, 0x4000l, puzzle | 0x1801a000l, partsUsed | 0x800l); 09688: if(!(puzzle & 0x1201a000l)) 09689: doSolve32(14, 0x4000l, puzzle | 0x1201a000l, partsUsed | 0x800l); 09690: } 09691: piece12at13at32: 09692: break; 09693: case 14: 09694: if (partsUsed & 0x40l) goto piece7at14at32; 09695: if(!(puzzle & 0x24904000l)) 09696: doSolve32(15, 0x8000l, puzzle | 0x24904000l, partsUsed | 0x40l); 09697: piece7at14at32: 09698: if (partsUsed & 0x80l) goto piece8at14at32; 09699: if(!(puzzle & 0xbc000l)) 09700: doSolve32(15, 0x8000l, puzzle | 0xbc000l, partsUsed | 0x80l); 09701: if(!(puzzle & 0xf4000l)) 09702: doSolve32(15, 0x8000l, puzzle | 0xf4000l, partsUsed | 0x80l); 09703: if(!(puzzle & 0x1c014000l)) 09704: doSolve32(15, 0x8000l, puzzle | 0x1c014000l, partsUsed | 0x80l); 09705: if(!(puzzle & 0x1401c000l)) 09706: doSolve32(15, 0x8000l, puzzle | 0x1401c000l, partsUsed | 0x80l); 09707: piece8at14at32: 09708: if (partsUsed & 0x100l) goto piece9at14at32; 09709: if(!(puzzle & 0x900c000l)) 09710: doSolve32(15, 0x8000l, puzzle | 0x900c000l, partsUsed | 0x100l); 09711: if(!(puzzle & 0x802c000l)) 09712: doSolve32(15, 0x8000l, puzzle | 0x802c000l, partsUsed | 0x100l); 09713: if(!(puzzle & 0x5804000l)) 09714: doSolve32(15, 0x8000l, puzzle | 0x5804000l, partsUsed | 0x100l); 09715: if(!(puzzle & 0x4c004000l)) 09716: doSolve32(15, 0x8000l, puzzle | 0x4c004000l, partsUsed | 0x100l); 09717: if(!(puzzle & 0x2400c000l)) 09718: doSolve32(15, 0x8000l, puzzle | 0x2400c000l, partsUsed | 0x100l); 09719: if(!(puzzle & 0x60024000l)) 09720: doSolve32(15, 0x8000l, puzzle | 0x60024000l, partsUsed | 0x100l); 09721: if(!(puzzle & 0x4064000l)) 09722: doSolve32(15, 0x8000l, puzzle | 0x4064000l, partsUsed | 0x100l); 09723: if(!(puzzle & 0x4004c000l)) 09724: doSolve32(15, 0x8000l, puzzle | 0x4004c000l, partsUsed | 0x100l); 09725: piece9at14at32: 09726: if (partsUsed & 0x400l) goto piece11at14at32; 09727: if (!(puzzle & 0x4c000l)) { 09728: if(!(puzzle & 0xdc000l)) 09729: doSolve32(15, 0x8000l, puzzle | 0xdc000l, partsUsed | 0x400l); 09730: if(!(puzzle & 0x7c000l)) 09731: doSolve32(15, 0x8000l, puzzle | 0x7c000l, partsUsed | 0x400l); 09732: if(!(puzzle & 0xec000l)) 09733: doSolve32(15, 0x8000l, puzzle | 0xec000l, partsUsed | 0x400l); 09734: } 09735: if (!(puzzle & 0x800c000l)) { 09736: if(!(puzzle & 0x1c00c000l)) 09737: doSolve32(15, 0x8000l, puzzle | 0x1c00c000l, partsUsed | 0x400l); 09738: if(!(puzzle & 0xc01c000l)) 09739: doSolve32(15, 0x8000l, puzzle | 0xc01c000l, partsUsed | 0x400l); 09740: if(!(puzzle & 0x1801c000l)) 09741: doSolve32(15, 0x8000l, puzzle | 0x1801c000l, partsUsed | 0x400l); 09742: } 09743: if(!(puzzle & 0x24824000l)) 09744: doSolve32(15, 0x8000l, puzzle | 0x24824000l, partsUsed | 0x400l); 09745: piece11at14at32: 09746: if (partsUsed & 0x800l) goto piece12at14at32; 09747: if (!(puzzle & 0xc004000l)) { 09748: if(!(puzzle & 0xd804000l)) 09749: doSolve32(15, 0x8000l, puzzle | 0xd804000l, partsUsed | 0x800l); 09750: if(!(puzzle & 0xd00c000l)) 09751: doSolve32(15, 0x8000l, puzzle | 0xd00c000l, partsUsed | 0x800l); 09752: if(!(puzzle & 0xc80c000l)) 09753: doSolve32(15, 0x8000l, puzzle | 0xc80c000l, partsUsed | 0x800l); 09754: if(!(puzzle & 0x2c00c000l)) 09755: doSolve32(15, 0x8000l, puzzle | 0x2c00c000l, partsUsed | 0x800l); 09756: if(!(puzzle & 0x2c024000l)) 09757: doSolve32(15, 0x8000l, puzzle | 0x2c024000l, partsUsed | 0x800l); 09758: if(!(puzzle & 0xc02c000l)) 09759: doSolve32(15, 0x8000l, puzzle | 0xc02c000l, partsUsed | 0x800l); 09760: if(!(puzzle & 0xc04c000l)) 09761: doSolve32(15, 0x8000l, puzzle | 0xc04c000l, partsUsed | 0x800l); 09762: if(!(puzzle & 0x4c00c000l)) 09763: doSolve32(15, 0x8000l, puzzle | 0x4c00c000l, partsUsed | 0x800l); 09764: if(!(puzzle & 0x6c004000l)) 09765: doSolve32(15, 0x8000l, puzzle | 0x6c004000l, partsUsed | 0x800l); 09766: } 09767: if (!(puzzle & 0x64000l)) { 09768: if(!(puzzle & 0x406c000l)) 09769: doSolve32(15, 0x8000l, puzzle | 0x406c000l, partsUsed | 0x800l); 09770: if(!(puzzle & 0x60064000l)) 09771: doSolve32(15, 0x8000l, puzzle | 0x60064000l, partsUsed | 0x800l); 09772: if(!(puzzle & 0x24064000l)) 09773: doSolve32(15, 0x8000l, puzzle | 0x24064000l, partsUsed | 0x800l); 09774: if(!(puzzle & 0x4006c000l)) 09775: doSolve32(15, 0x8000l, puzzle | 0x4006c000l, partsUsed | 0x800l); 09776: if(!(puzzle & 0x806c000l)) 09777: doSolve32(15, 0x8000l, puzzle | 0x806c000l, partsUsed | 0x800l); 09778: if(!(puzzle & 0x2006c000l)) 09779: doSolve32(15, 0x8000l, puzzle | 0x2006c000l, partsUsed | 0x800l); 09780: } 09781: if(!(puzzle & 0x4804c000l)) 09782: doSolve32(15, 0x8000l, puzzle | 0x4804c000l, partsUsed | 0x800l); 09783: if(!(puzzle & 0x64024000l)) 09784: doSolve32(15, 0x8000l, puzzle | 0x64024000l, partsUsed | 0x800l); 09785: if(!(puzzle & 0x2402c000l)) 09786: doSolve32(15, 0x8000l, puzzle | 0x2402c000l, partsUsed | 0x800l); 09787: piece12at14at32: 09788: break; 09789: case 15: 09790: if (partsUsed & 0x40l) goto piece7at15at32; 09791: if(!(puzzle & 0x49208000l)) 09792: doSolve32(16, 0x10000l, puzzle | 0x49208000l, partsUsed | 0x40l); 09793: piece7at15at32: 09794: if (partsUsed & 0x100l) goto piece9at15at32; 09795: if(!(puzzle & 0xc808000l)) 09796: doSolve32(16, 0x10000l, puzzle | 0xc808000l, partsUsed | 0x100l); 09797: if(!(puzzle & 0xc048000l)) 09798: doSolve32(16, 0x10000l, puzzle | 0xc048000l, partsUsed | 0x100l); 09799: if(!(puzzle & 0x12018000l)) 09800: doSolve32(16, 0x10000l, puzzle | 0x12018000l, partsUsed | 0x100l); 09801: if(!(puzzle & 0x10058000l)) 09802: doSolve32(16, 0x10000l, puzzle | 0x10058000l, partsUsed | 0x100l); 09803: if(!(puzzle & 0xb008000l)) 09804: doSolve32(16, 0x10000l, puzzle | 0xb008000l, partsUsed | 0x100l); 09805: if(!(puzzle & 0x20068000l)) 09806: doSolve32(16, 0x10000l, puzzle | 0x20068000l, partsUsed | 0x100l); 09807: if(!(puzzle & 0x68008000l)) 09808: doSolve32(16, 0x10000l, puzzle | 0x68008000l, partsUsed | 0x100l); 09809: if(!(puzzle & 0x48018000l)) 09810: doSolve32(16, 0x10000l, puzzle | 0x48018000l, partsUsed | 0x100l); 09811: if(!(puzzle & 0x98008000l)) 09812: doSolve32(16, 0x10000l, puzzle | 0x98008000l, partsUsed | 0x100l); 09813: if(!(puzzle & 0xc0048000l)) 09814: doSolve32(16, 0x10000l, puzzle | 0xc0048000l, partsUsed | 0x100l); 09815: if(!(puzzle & 0x80c8000l)) 09816: doSolve32(16, 0x10000l, puzzle | 0x80c8000l, partsUsed | 0x100l); 09817: if(!(puzzle & 0x80098000l)) 09818: doSolve32(16, 0x10000l, puzzle | 0x80098000l, partsUsed | 0x100l); 09819: piece9at15at32: 09820: if (partsUsed & 0x400l) goto piece11at15at32; 09821: if(!(puzzle & 0x1c018000l)) 09822: doSolve32(16, 0x10000l, puzzle | 0x1c018000l, partsUsed | 0x400l); 09823: if(!(puzzle & 0x49048000l)) 09824: doSolve32(16, 0x10000l, puzzle | 0x49048000l, partsUsed | 0x400l); 09825: if(!(puzzle & 0xf8000l)) 09826: doSolve32(16, 0x10000l, puzzle | 0xf8000l, partsUsed | 0x400l); 09827: piece11at15at32: 09828: if (partsUsed & 0x800l) goto piece12at15at32; 09829: if (!(puzzle & 0x9008000l)) { 09830: if(!(puzzle & 0xd808000l)) 09831: doSolve32(16, 0x10000l, puzzle | 0xd808000l, partsUsed | 0x800l); 09832: if(!(puzzle & 0x1b008000l)) 09833: doSolve32(16, 0x10000l, puzzle | 0x1b008000l, partsUsed | 0x800l); 09834: if(!(puzzle & 0x19018000l)) 09835: doSolve32(16, 0x10000l, puzzle | 0x19018000l, partsUsed | 0x800l); 09836: } 09837: if (!(puzzle & 0x8018000l)) { 09838: if(!(puzzle & 0x1a018000l)) 09839: doSolve32(16, 0x10000l, puzzle | 0x1a018000l, partsUsed | 0x800l); 09840: if(!(puzzle & 0x80d8000l)) 09841: doSolve32(16, 0x10000l, puzzle | 0x80d8000l, partsUsed | 0x800l); 09842: if(!(puzzle & 0x58018000l)) 09843: doSolve32(16, 0x10000l, puzzle | 0x58018000l, partsUsed | 0x800l); 09844: if(!(puzzle & 0x18058000l)) 09845: doSolve32(16, 0x10000l, puzzle | 0x18058000l, partsUsed | 0x800l); 09846: if(!(puzzle & 0x18098000l)) 09847: doSolve32(16, 0x10000l, puzzle | 0x18098000l, partsUsed | 0x800l); 09848: if(!(puzzle & 0x98018000l)) 09849: doSolve32(16, 0x10000l, puzzle | 0x98018000l, partsUsed | 0x800l); 09850: if(!(puzzle & 0x48058000l)) 09851: doSolve32(16, 0x10000l, puzzle | 0x48058000l, partsUsed | 0x800l); 09852: } 09853: if (!(puzzle & 0x60008000l)) { 09854: if(!(puzzle & 0x6c008000l)) 09855: doSolve32(16, 0x10000l, puzzle | 0x6c008000l, partsUsed | 0x800l); 09856: if(!(puzzle & 0x68048000l)) 09857: doSolve32(16, 0x10000l, puzzle | 0x68048000l, partsUsed | 0x800l); 09858: if(!(puzzle & 0x60068000l)) 09859: doSolve32(16, 0x10000l, puzzle | 0x60068000l, partsUsed | 0x800l); 09860: } 09861: if (!(puzzle & 0x40048000l)) { 09862: if(!(puzzle & 0x4c048000l)) 09863: doSolve32(16, 0x10000l, puzzle | 0x4c048000l, partsUsed | 0x800l); 09864: if(!(puzzle & 0x48068000l)) 09865: doSolve32(16, 0x10000l, puzzle | 0x48068000l, partsUsed | 0x800l); 09866: if(!(puzzle & 0xc00c8000l)) 09867: doSolve32(16, 0x10000l, puzzle | 0xc00c8000l, partsUsed | 0x800l); 09868: if(!(puzzle & 0x58048000l)) 09869: doSolve32(16, 0x10000l, puzzle | 0x58048000l, partsUsed | 0x800l); 09870: if(!(puzzle & 0x480c8000l)) 09871: doSolve32(16, 0x10000l, puzzle | 0x480c8000l, partsUsed | 0x800l); 09872: if(!(puzzle & 0x400d8000l)) 09873: doSolve32(16, 0x10000l, puzzle | 0x400d8000l, partsUsed | 0x800l); 09874: if(!(puzzle & 0xc8048000l)) 09875: doSolve32(16, 0x10000l, puzzle | 0xc8048000l, partsUsed | 0x800l); 09876: } 09877: if (!(puzzle & 0x98000l)) { 09878: if(!(puzzle & 0x90098000l)) 09879: doSolve32(16, 0x10000l, puzzle | 0x90098000l, partsUsed | 0x800l); 09880: if(!(puzzle & 0x800d8000l)) 09881: doSolve32(16, 0x10000l, puzzle | 0x800d8000l, partsUsed | 0x800l); 09882: if(!(puzzle & 0x100d8000l)) 09883: doSolve32(16, 0x10000l, puzzle | 0x100d8000l, partsUsed | 0x800l); 09884: } 09885: if(!(puzzle & 0xd8008000l)) 09886: doSolve32(16, 0x10000l, puzzle | 0xd8008000l, partsUsed | 0x800l); 09887: piece12at15at32: 09888: break; 09889: case 16: 09890: if (partsUsed & 0x40l) goto piece7at16at32; 09891: if(!(puzzle & 0x92410000l)) 09892: doSolve32(17, 0x20000l, puzzle | 0x92410000l, partsUsed | 0x40l); 09893: piece7at16at32: 09894: if (partsUsed & 0x100l) goto piece9at16at32; 09895: if(!(puzzle & 0x19010000l)) 09896: doSolve32(17, 0x20000l, puzzle | 0x19010000l, partsUsed | 0x100l); 09897: if(!(puzzle & 0x18090000l)) 09898: doSolve32(17, 0x20000l, puzzle | 0x18090000l, partsUsed | 0x100l); 09899: if(!(puzzle & 0x400d0000l)) 09900: doSolve32(17, 0x20000l, puzzle | 0x400d0000l, partsUsed | 0x100l); 09901: if(!(puzzle & 0xd0010000l)) 09902: doSolve32(17, 0x20000l, puzzle | 0xd0010000l, partsUsed | 0x100l); 09903: piece9at16at32: 09904: if (partsUsed & 0x400l) goto piece11at16at32; 09905: if(!(puzzle & 0x92090000l)) 09906: doSolve32(17, 0x20000l, puzzle | 0x92090000l, partsUsed | 0x400l); 09907: piece11at16at32: 09908: if (partsUsed & 0x800l) goto piece12at16at32; 09909: if (!(puzzle & 0x18010000l)) { 09910: if(!(puzzle & 0x1b010000l)) 09911: doSolve32(17, 0x20000l, puzzle | 0x1b010000l, partsUsed | 0x800l); 09912: if(!(puzzle & 0xd8010000l)) 09913: doSolve32(17, 0x20000l, puzzle | 0xd8010000l, partsUsed | 0x800l); 09914: if(!(puzzle & 0x98090000l)) 09915: doSolve32(17, 0x20000l, puzzle | 0x98090000l, partsUsed | 0x800l); 09916: } 09917: if (!(puzzle & 0x80090000l)) { 09918: if(!(puzzle & 0xd0090000l)) 09919: doSolve32(17, 0x20000l, puzzle | 0xd0090000l, partsUsed | 0x800l); 09920: if(!(puzzle & 0xc00d0000l)) 09921: doSolve32(17, 0x20000l, puzzle | 0xc00d0000l, partsUsed | 0x800l); 09922: if(!(puzzle & 0x900d0000l)) 09923: doSolve32(17, 0x20000l, puzzle | 0x900d0000l, partsUsed | 0x800l); 09924: } 09925: piece12at16at32: 09926: break; 09927: case 17: 09928: if (partsUsed & 0x20l) goto piece6at17at32; 09929: if(!(puzzle & 0x24920000l)) 09930: doSolve32(18, 0x40000l, puzzle | 0x24920000l, partsUsed | 0x20l); 09931: piece6at17at32: 09932: if (partsUsed & 0x80l) goto piece8at17at32; 09933: if(!(puzzle & 0xe00a0000l)) 09934: doSolve32(18, 0x40000l, puzzle | 0xe00a0000l, partsUsed | 0x80l); 09935: if(!(puzzle & 0xa00e0000l)) 09936: doSolve32(18, 0x40000l, puzzle | 0xa00e0000l, partsUsed | 0x80l); 09937: piece8at17at32: 09938: if (partsUsed & 0x100l) goto piece9at17at32; 09939: if(!(puzzle & 0x48060000l)) 09940: doSolve32(18, 0x40000l, puzzle | 0x48060000l, partsUsed | 0x100l); 09941: if(!(puzzle & 0x2c020000l)) 09942: doSolve32(18, 0x40000l, puzzle | 0x2c020000l, partsUsed | 0x100l); 09943: piece9at17at32: 09944: if (partsUsed & 0x400l) goto piece11at17at32; 09945: if (!(puzzle & 0x40060000l)) { 09946: if(!(puzzle & 0xe0060000l)) 09947: doSolve32(18, 0x40000l, puzzle | 0xe0060000l, partsUsed | 0x400l); 09948: if(!(puzzle & 0x600e0000l)) 09949: doSolve32(18, 0x40000l, puzzle | 0x600e0000l, partsUsed | 0x400l); 09950: if(!(puzzle & 0xc00e0000l)) 09951: doSolve32(18, 0x40000l, puzzle | 0xc00e0000l, partsUsed | 0x400l); 09952: } 09953: piece11at17at32: 09954: if (partsUsed & 0x800l) goto piece12at17at32; 09955: if (!(puzzle & 0x60020000l)) { 09956: if(!(puzzle & 0x6c020000l)) 09957: doSolve32(18, 0x40000l, puzzle | 0x6c020000l, partsUsed | 0x800l); 09958: if(!(puzzle & 0x68060000l)) 09959: doSolve32(18, 0x40000l, puzzle | 0x68060000l, partsUsed | 0x800l); 09960: if(!(puzzle & 0x64060000l)) 09961: doSolve32(18, 0x40000l, puzzle | 0x64060000l, partsUsed | 0x800l); 09962: } 09963: piece12at17at32: 09964: break; 09965: case 18: 09966: if (partsUsed & 0x20l) goto piece6at18at32; 09967: if(!(puzzle & 0x49240000l)) 09968: doSolve32(19, 0x80000l, puzzle | 0x49240000l, partsUsed | 0x20l); 09969: piece6at18at32: 09970: if (partsUsed & 0x100l) goto piece9at18at32; 09971: if(!(puzzle & 0x58040000l)) 09972: doSolve32(19, 0x80000l, puzzle | 0x58040000l, partsUsed | 0x100l); 09973: if(!(puzzle & 0x64040000l)) 09974: doSolve32(19, 0x80000l, puzzle | 0x64040000l, partsUsed | 0x100l); 09975: if(!(puzzle & 0x900c0000l)) 09976: doSolve32(19, 0x80000l, puzzle | 0x900c0000l, partsUsed | 0x100l); 09977: piece9at18at32: 09978: if (partsUsed & 0x400l) goto piece11at18at32; 09979: if(!(puzzle & 0xe00c0000l)) 09980: doSolve32(19, 0x80000l, puzzle | 0xe00c0000l, partsUsed | 0x400l); 09981: piece11at18at32: 09982: if (partsUsed & 0x800l) goto piece12at18at32; 09983: if (!(puzzle & 0x48040000l)) { 09984: if(!(puzzle & 0x6c040000l)) 09985: doSolve32(19, 0x80000l, puzzle | 0x6c040000l, partsUsed | 0x800l); 09986: if(!(puzzle & 0xd8040000l)) 09987: doSolve32(19, 0x80000l, puzzle | 0xd8040000l, partsUsed | 0x800l); 09988: if(!(puzzle & 0xc80c0000l)) 09989: doSolve32(19, 0x80000l, puzzle | 0xc80c0000l, partsUsed | 0x800l); 09990: } 09991: if(!(puzzle & 0xd00c0000l)) 09992: doSolve32(19, 0x80000l, puzzle | 0xd00c0000l, partsUsed | 0x800l); 09993: piece12at18at32: 09994: break; 09995: case 19: 09996: if (partsUsed & 0x20l) goto piece6at19at32; 09997: if(!(puzzle & 0x92480000l)) 09998: doSolve32(20, 0x100000l, puzzle | 0x92480000l, partsUsed | 0x20l); 09999: piece6at19at32: 10000: if (partsUsed & 0x100l) goto piece9at19at32; 10001: if(!(puzzle & 0xc8080000l)) 10002: doSolve32(20, 0x100000l, puzzle | 0xc8080000l, partsUsed | 0x100l); 10003: piece9at19at32: 10004: if (partsUsed & 0x800l) goto piece12at19at32; 10005: if(!(puzzle & 0xd8080000l)) 10006: doSolve32(20, 0x100000l, puzzle | 0xd8080000l, partsUsed | 0x800l); 10007: piece12at19at32: 10008: break; 10009: case 20: 10010: if (partsUsed & 0x2l) goto piece2at20at32; 10011: if(!(puzzle & 0x13300000l)) 10012: doSolve32(21, 0x200000l, puzzle | 0x13300000l, partsUsed | 0x2l); 10013: if(!(puzzle & 0x19900000l)) 10014: doSolve32(21, 0x200000l, puzzle | 0x19900000l, partsUsed | 0x2l); 10015: piece2at20at32: 10016: if (partsUsed & 0x4l) goto piece3at20at32; 10017: if(!(puzzle & 0x9700000l)) 10018: doSolve32(21, 0x200000l, puzzle | 0x9700000l, partsUsed | 0x4l); 10019: if(!(puzzle & 0x7900000l)) 10020: doSolve32(21, 0x200000l, puzzle | 0x7900000l, partsUsed | 0x4l); 10021: piece3at20at32: 10022: if (partsUsed & 0x8l) goto piece4at20at32; 10023: if(!(puzzle & 0x19300000l)) 10024: doSolve32(21, 0x200000l, puzzle | 0x19300000l, partsUsed | 0x8l); 10025: if(!(puzzle & 0x13900000l)) 10026: doSolve32(21, 0x200000l, puzzle | 0x13900000l, partsUsed | 0x8l); 10027: piece4at20at32: 10028: if (partsUsed & 0x10l) goto piece5at20at32; 10029: if(!(puzzle & 0x2cb00000l)) 10030: doSolve32(21, 0x200000l, puzzle | 0x2cb00000l, partsUsed | 0x10l); 10031: if(!(puzzle & 0x65900000l)) 10032: doSolve32(21, 0x200000l, puzzle | 0x65900000l, partsUsed | 0x10l); 10033: if(!(puzzle & 0x4d300000l)) 10034: doSolve32(21, 0x200000l, puzzle | 0x4d300000l, partsUsed | 0x10l); 10035: piece5at20at32: 10036: if (partsUsed & 0x20l) goto piece6at20at32; 10037: if(!(puzzle & 0x24b00000l)) 10038: doSolve32(21, 0x200000l, puzzle | 0x24b00000l, partsUsed | 0x20l); 10039: if(!(puzzle & 0x64900000l)) 10040: doSolve32(21, 0x200000l, puzzle | 0x64900000l, partsUsed | 0x20l); 10041: if(!(puzzle & 0x49300000l)) 10042: doSolve32(21, 0x200000l, puzzle | 0x49300000l, partsUsed | 0x20l); 10043: piece6at20at32: 10044: if (partsUsed & 0x40l) goto piece7at20at32; 10045: if(!(puzzle & 0x25900000l)) 10046: doSolve32(21, 0x200000l, puzzle | 0x25900000l, partsUsed | 0x40l); 10047: if(!(puzzle & 0x2c900000l)) 10048: doSolve32(21, 0x200000l, puzzle | 0x2c900000l, partsUsed | 0x40l); 10049: piece7at20at32: 10050: if (partsUsed & 0x80l) goto piece8at20at32; 10051: if(!(puzzle & 0x3d00000l)) 10052: doSolve32(21, 0x200000l, puzzle | 0x3d00000l, partsUsed | 0x80l); 10053: if(!(puzzle & 0x2f00000l)) 10054: doSolve32(21, 0x200000l, puzzle | 0x2f00000l, partsUsed | 0x80l); 10055: if(!(puzzle & 0xcb00000l)) 10056: doSolve32(21, 0x200000l, puzzle | 0xcb00000l, partsUsed | 0x80l); 10057: if(!(puzzle & 0xd300000l)) 10058: doSolve32(21, 0x200000l, puzzle | 0xd300000l, partsUsed | 0x80l); 10059: piece8at20at32: 10060: if (partsUsed & 0x200l) goto piece10at20at32; 10061: if(!(puzzle & 0xb300000l)) 10062: doSolve32(21, 0x200000l, puzzle | 0xb300000l, partsUsed | 0x200l); 10063: if(!(puzzle & 0xb900000l)) 10064: doSolve32(21, 0x200000l, puzzle | 0xb900000l, partsUsed | 0x200l); 10065: piece10at20at32: 10066: if (partsUsed & 0x400l) goto piece11at20at32; 10067: if (!(puzzle & 0x1300000l)) { 10068: if(!(puzzle & 0x3700000l)) 10069: doSolve32(21, 0x200000l, puzzle | 0x3700000l, partsUsed | 0x400l); 10070: if(!(puzzle & 0x1f00000l)) 10071: doSolve32(21, 0x200000l, puzzle | 0x1f00000l, partsUsed | 0x400l); 10072: if(!(puzzle & 0x5b00000l)) 10073: doSolve32(21, 0x200000l, puzzle | 0x5b00000l, partsUsed | 0x400l); 10074: if(!(puzzle & 0x9b00000l)) 10075: doSolve32(21, 0x200000l, puzzle | 0x9b00000l, partsUsed | 0x400l); 10076: if(!(puzzle & 0x3b00000l)) 10077: doSolve32(21, 0x200000l, puzzle | 0x3b00000l, partsUsed | 0x400l); 10078: } 10079: if(!(puzzle & 0xd900000l)) 10080: doSolve32(21, 0x200000l, puzzle | 0xd900000l, partsUsed | 0x400l); 10081: piece11at20at32: 10082: break; 10083: case 21: 10084: if (partsUsed & 0x2l) goto piece2at21at32; 10085: if(!(puzzle & 0x5e00000l)) 10086: doSolve32(22, 0x400000l, puzzle | 0x5e00000l, partsUsed | 0x2l); 10087: piece2at21at32: 10088: if (partsUsed & 0x4l) goto piece3at21at32; 10089: if(!(puzzle & 0x1d200000l)) 10090: doSolve32(22, 0x400000l, puzzle | 0x1d200000l, partsUsed | 0x4l); 10091: piece3at21at32: 10092: if (partsUsed & 0x8l) goto piece4at21at32; 10093: if(!(puzzle & 0xd600000l)) 10094: doSolve32(22, 0x400000l, puzzle | 0xd600000l, partsUsed | 0x8l); 10095: piece4at21at32: 10096: if (partsUsed & 0x10l) goto piece5at21at32; 10097: if (!(puzzle & 0x49200000l)) { 10098: if(!(puzzle & 0x69a00000l)) 10099: doSolve32(22, 0x400000l, puzzle | 0x69a00000l, partsUsed | 0x10l); 10100: if(!(puzzle & 0xcb200000l)) 10101: doSolve32(22, 0x400000l, puzzle | 0xcb200000l, partsUsed | 0x10l); 10102: if(!(puzzle & 0x59600000l)) 10103: doSolve32(22, 0x400000l, puzzle | 0x59600000l, partsUsed | 0x10l); 10104: } 10105: if(!(puzzle & 0x9a600000l)) 10106: doSolve32(22, 0x400000l, puzzle | 0x9a600000l, partsUsed | 0x10l); 10107: piece5at21at32: 10108: if (partsUsed & 0x20l) goto piece6at21at32; 10109: if (!(puzzle & 0x49200000l)) { 10110: if(!(puzzle & 0x69200000l)) 10111: doSolve32(22, 0x400000l, puzzle | 0x69200000l, partsUsed | 0x20l); 10112: if(!(puzzle & 0x49600000l)) 10113: doSolve32(22, 0x400000l, puzzle | 0x49600000l, partsUsed | 0x20l); 10114: if(!(puzzle & 0xc9200000l)) 10115: doSolve32(22, 0x400000l, puzzle | 0xc9200000l, partsUsed | 0x20l); 10116: } 10117: if(!(puzzle & 0x92600000l)) 10118: doSolve32(22, 0x400000l, puzzle | 0x92600000l, partsUsed | 0x20l); 10119: piece6at21at32: 10120: if (partsUsed & 0x40l) goto piece7at21at32; 10121: if (!(puzzle & 0x49200000l)) { 10122: if(!(puzzle & 0x49a00000l)) 10123: doSolve32(22, 0x400000l, puzzle | 0x49a00000l, partsUsed | 0x40l); 10124: if(!(puzzle & 0x4d200000l)) 10125: doSolve32(22, 0x400000l, puzzle | 0x4d200000l, partsUsed | 0x40l); 10126: if(!(puzzle & 0x4b200000l)) 10127: doSolve32(22, 0x400000l, puzzle | 0x4b200000l, partsUsed | 0x40l); 10128: if(!(puzzle & 0x59200000l)) 10129: doSolve32(22, 0x400000l, puzzle | 0x59200000l, partsUsed | 0x40l); 10130: } 10131: piece7at21at32: 10132: if (partsUsed & 0x80l) goto piece8at21at32; 10133: if(!(puzzle & 0x19600000l)) 10134: doSolve32(22, 0x400000l, puzzle | 0x19600000l, partsUsed | 0x80l); 10135: if(!(puzzle & 0x1a600000l)) 10136: doSolve32(22, 0x400000l, puzzle | 0x1a600000l, partsUsed | 0x80l); 10137: piece8at21at32: 10138: if (partsUsed & 0x200l) goto piece10at21at32; 10139: if (!(puzzle & 0x1a00000l)) { 10140: if(!(puzzle & 0x13a00000l)) 10141: doSolve32(22, 0x400000l, puzzle | 0x13a00000l, partsUsed | 0x200l); 10142: if(!(puzzle & 0x7a00000l)) 10143: doSolve32(22, 0x400000l, puzzle | 0x7a00000l, partsUsed | 0x200l); 10144: if(!(puzzle & 0x9e00000l)) 10145: doSolve32(22, 0x400000l, puzzle | 0x9e00000l, partsUsed | 0x200l); 10146: if(!(puzzle & 0x19a00000l)) 10147: doSolve32(22, 0x400000l, puzzle | 0x19a00000l, partsUsed | 0x200l); 10148: } 10149: if(!(puzzle & 0xf200000l)) 10150: doSolve32(22, 0x400000l, puzzle | 0xf200000l, partsUsed | 0x200l); 10151: piece10at21at32: 10152: if (partsUsed & 0x400l) goto piece11at21at32; 10153: if (!(puzzle & 0x3200000l)) { 10154: if(!(puzzle & 0xb600000l)) 10155: doSolve32(22, 0x400000l, puzzle | 0xb600000l, partsUsed | 0x400l); 10156: if(!(puzzle & 0x13600000l)) 10157: doSolve32(22, 0x400000l, puzzle | 0x13600000l, partsUsed | 0x400l); 10158: if(!(puzzle & 0x1b200000l)) 10159: doSolve32(22, 0x400000l, puzzle | 0x1b200000l, partsUsed | 0x400l); 10160: } 10161: if(!(puzzle & 0x3e00000l)) 10162: doSolve32(22, 0x400000l, puzzle | 0x3e00000l, partsUsed | 0x400l); 10163: if(!(puzzle & 0xda00000l)) 10164: doSolve32(22, 0x400000l, puzzle | 0xda00000l, partsUsed | 0x400l); 10165: piece11at21at32: 10166: break; 10167: case 22: 10168: if (partsUsed & 0x2l) goto piece2at22at32; 10169: if(!(puzzle & 0xf400000l)) 10170: doSolve32(23, 0x800000l, puzzle | 0xf400000l, partsUsed | 0x2l); 10171: piece2at22at32: 10172: if (partsUsed & 0x4l) goto piece3at22at32; 10173: if(!(puzzle & 0x13c00000l)) 10174: doSolve32(23, 0x800000l, puzzle | 0x13c00000l, partsUsed | 0x4l); 10175: piece3at22at32: 10176: if (partsUsed & 0x8l) goto piece4at22at32; 10177: if(!(puzzle & 0x7c00000l)) 10178: doSolve32(23, 0x800000l, puzzle | 0x7c00000l, partsUsed | 0x8l); 10179: piece4at22at32: 10180: if (partsUsed & 0x10l) goto piece5at22at32; 10181: if(!(puzzle & 0xd3400000l)) 10182: doSolve32(23, 0x800000l, puzzle | 0xd3400000l, partsUsed | 0x10l); 10183: piece5at22at32: 10184: if (partsUsed & 0x20l) goto piece6at22at32; 10185: if(!(puzzle & 0xd2400000l)) 10186: doSolve32(23, 0x800000l, puzzle | 0xd2400000l, partsUsed | 0x20l); 10187: piece6at22at32: 10188: if (partsUsed & 0x40l) goto piece7at22at32; 10189: if(!(puzzle & 0x93400000l)) 10190: doSolve32(23, 0x800000l, puzzle | 0x93400000l, partsUsed | 0x40l); 10191: if(!(puzzle & 0x9a400000l)) 10192: doSolve32(23, 0x800000l, puzzle | 0x9a400000l, partsUsed | 0x40l); 10193: piece7at22at32: 10194: if (partsUsed & 0x200l) goto piece10at22at32; 10195: if(!(puzzle & 0xbc00000l)) 10196: doSolve32(23, 0x800000l, puzzle | 0xbc00000l, partsUsed | 0x200l); 10197: piece10at22at32: 10198: if (partsUsed & 0x400l) goto piece11at22at32; 10199: if(!(puzzle & 0x1b400000l)) 10200: doSolve32(23, 0x800000l, puzzle | 0x1b400000l, partsUsed | 0x400l); 10201: piece11at22at32: 10202: break; 10203: case 23: 10204: if (partsUsed & 0x2l) goto piece2at23at32; 10205: if(!(puzzle & 0x99800000l)) 10206: doSolve32(24, 0x1000000l, puzzle | 0x99800000l, partsUsed | 0x2l); 10207: if(!(puzzle & 0xcc800000l)) 10208: doSolve32(24, 0x1000000l, puzzle | 0xcc800000l, partsUsed | 0x2l); 10209: piece2at23at32: 10210: if (partsUsed & 0x4l) goto piece3at23at32; 10211: if(!(puzzle & 0x4b800000l)) 10212: doSolve32(24, 0x1000000l, puzzle | 0x4b800000l, partsUsed | 0x4l); 10213: if(!(puzzle & 0x3c800000l)) 10214: doSolve32(24, 0x1000000l, puzzle | 0x3c800000l, partsUsed | 0x4l); 10215: piece3at23at32: 10216: if (partsUsed & 0x8l) goto piece4at23at32; 10217: if(!(puzzle & 0xc9800000l)) 10218: doSolve32(24, 0x1000000l, puzzle | 0xc9800000l, partsUsed | 0x8l); 10219: if(!(puzzle & 0x9c800000l)) 10220: doSolve32(24, 0x1000000l, puzzle | 0x9c800000l, partsUsed | 0x8l); 10221: piece4at23at32: 10222: if (partsUsed & 0x80l) goto piece8at23at32; 10223: if(!(puzzle & 0x1e800000l)) 10224: doSolve32(24, 0x1000000l, puzzle | 0x1e800000l, partsUsed | 0x80l); 10225: if(!(puzzle & 0x17800000l)) 10226: doSolve32(24, 0x1000000l, puzzle | 0x17800000l, partsUsed | 0x80l); 10227: if(!(puzzle & 0x65800000l)) 10228: doSolve32(24, 0x1000000l, puzzle | 0x65800000l, partsUsed | 0x80l); 10229: if(!(puzzle & 0x69800000l)) 10230: doSolve32(24, 0x1000000l, puzzle | 0x69800000l, partsUsed | 0x80l); 10231: piece8at23at32: 10232: if (partsUsed & 0x200l) goto piece10at23at32; 10233: if(!(puzzle & 0x59800000l)) 10234: doSolve32(24, 0x1000000l, puzzle | 0x59800000l, partsUsed | 0x200l); 10235: if(!(puzzle & 0x5c800000l)) 10236: doSolve32(24, 0x1000000l, puzzle | 0x5c800000l, partsUsed | 0x200l); 10237: piece10at23at32: 10238: if (partsUsed & 0x400l) goto piece11at23at32; 10239: if (!(puzzle & 0x9800000l)) { 10240: if(!(puzzle & 0x1b800000l)) 10241: doSolve32(24, 0x1000000l, puzzle | 0x1b800000l, partsUsed | 0x400l); 10242: if(!(puzzle & 0xf800000l)) 10243: doSolve32(24, 0x1000000l, puzzle | 0xf800000l, partsUsed | 0x400l); 10244: if(!(puzzle & 0x2d800000l)) 10245: doSolve32(24, 0x1000000l, puzzle | 0x2d800000l, partsUsed | 0x400l); 10246: if(!(puzzle & 0x4d800000l)) 10247: doSolve32(24, 0x1000000l, puzzle | 0x4d800000l, partsUsed | 0x400l); 10248: if(!(puzzle & 0x1d800000l)) 10249: doSolve32(24, 0x1000000l, puzzle | 0x1d800000l, partsUsed | 0x400l); 10250: } 10251: if(!(puzzle & 0x6c800000l)) 10252: doSolve32(24, 0x1000000l, puzzle | 0x6c800000l, partsUsed | 0x400l); 10253: piece11at23at32: 10254: break; 10255: case 24: 10256: if (partsUsed & 0x2l) goto piece2at24at32; 10257: if(!(puzzle & 0x2f000000l)) 10258: doSolve32(25, 0x2000000l, puzzle | 0x2f000000l, partsUsed | 0x2l); 10259: piece2at24at32: 10260: if (partsUsed & 0x4l) goto piece3at24at32; 10261: if(!(puzzle & 0xe9000000l)) 10262: doSolve32(25, 0x2000000l, puzzle | 0xe9000000l, partsUsed | 0x4l); 10263: piece3at24at32: 10264: if (partsUsed & 0x8l) goto piece4at24at32; 10265: if(!(puzzle & 0x6b000000l)) 10266: doSolve32(25, 0x2000000l, puzzle | 0x6b000000l, partsUsed | 0x8l); 10267: piece4at24at32: 10268: if (partsUsed & 0x80l) goto piece8at24at32; 10269: if(!(puzzle & 0xcb000000l)) 10270: doSolve32(25, 0x2000000l, puzzle | 0xcb000000l, partsUsed | 0x80l); 10271: if(!(puzzle & 0xd3000000l)) 10272: doSolve32(25, 0x2000000l, puzzle | 0xd3000000l, partsUsed | 0x80l); 10273: piece8at24at32: 10274: if (partsUsed & 0x200l) goto piece10at24at32; 10275: if (!(puzzle & 0xd000000l)) { 10276: if(!(puzzle & 0x9d000000l)) 10277: doSolve32(25, 0x2000000l, puzzle | 0x9d000000l, partsUsed | 0x200l); 10278: if(!(puzzle & 0x3d000000l)) 10279: doSolve32(25, 0x2000000l, puzzle | 0x3d000000l, partsUsed | 0x200l); 10280: if(!(puzzle & 0x4f000000l)) 10281: doSolve32(25, 0x2000000l, puzzle | 0x4f000000l, partsUsed | 0x200l); 10282: if(!(puzzle & 0xcd000000l)) 10283: doSolve32(25, 0x2000000l, puzzle | 0xcd000000l, partsUsed | 0x200l); 10284: } 10285: if(!(puzzle & 0x79000000l)) 10286: doSolve32(25, 0x2000000l, puzzle | 0x79000000l, partsUsed | 0x200l); 10287: piece10at24at32: 10288: if (partsUsed & 0x400l) goto piece11at24at32; 10289: if (!(puzzle & 0x19000000l)) { 10290: if(!(puzzle & 0x5b000000l)) 10291: doSolve32(25, 0x2000000l, puzzle | 0x5b000000l, partsUsed | 0x400l); 10292: if(!(puzzle & 0x9b000000l)) 10293: doSolve32(25, 0x2000000l, puzzle | 0x9b000000l, partsUsed | 0x400l); 10294: if(!(puzzle & 0xd9000000l)) 10295: doSolve32(25, 0x2000000l, puzzle | 0xd9000000l, partsUsed | 0x400l); 10296: } 10297: if(!(puzzle & 0x1f000000l)) 10298: doSolve32(25, 0x2000000l, puzzle | 0x1f000000l, partsUsed | 0x400l); 10299: if(!(puzzle & 0x6d000000l)) 10300: doSolve32(25, 0x2000000l, puzzle | 0x6d000000l, partsUsed | 0x400l); 10301: piece11at24at32: 10302: break; 10303: case 25: 10304: if (partsUsed & 0x2l) goto piece2at25at32; 10305: if(!(puzzle & 0x7a000000l)) 10306: doSolve32(26, 0x4000000l, puzzle | 0x7a000000l, partsUsed | 0x2l); 10307: piece2at25at32: 10308: if (partsUsed & 0x4l) goto piece3at25at32; 10309: if(!(puzzle & 0x9e000000l)) 10310: doSolve32(26, 0x4000000l, puzzle | 0x9e000000l, partsUsed | 0x4l); 10311: piece3at25at32: 10312: if (partsUsed & 0x8l) goto piece4at25at32; 10313: if(!(puzzle & 0x3e000000l)) 10314: doSolve32(26, 0x4000000l, puzzle | 0x3e000000l, partsUsed | 0x8l); 10315: piece4at25at32: 10316: if (partsUsed & 0x200l) goto piece10at25at32; 10317: if(!(puzzle & 0x5e000000l)) 10318: doSolve32(26, 0x4000000l, puzzle | 0x5e000000l, partsUsed | 0x200l); 10319: piece10at25at32: 10320: if (partsUsed & 0x400l) goto piece11at25at32; 10321: if(!(puzzle & 0xda000000l)) 10322: doSolve32(26, 0x4000000l, puzzle | 0xda000000l, partsUsed | 0x400l); 10323: piece11at25at32: 10324: break; 10325: case 26: 10326: if (partsUsed & 0x80l) goto piece8at26at32; 10327: if(!(puzzle & 0xbc000000l)) 10328: doSolve32(27, 0x8000000l, puzzle | 0xbc000000l, partsUsed | 0x80l); 10329: if(!(puzzle & 0xf4000000l)) 10330: doSolve32(27, 0x8000000l, puzzle | 0xf4000000l, partsUsed | 0x80l); 10331: piece8at26at32: 10332: if (partsUsed & 0x400l) goto piece11at26at32; 10333: if (!(puzzle & 0x4c000000l)) { 10334: if(!(puzzle & 0xdc000000l)) 10335: doSolve32(27, 0x8000000l, puzzle | 0xdc000000l, partsUsed | 0x400l); 10336: if(!(puzzle & 0x7c000000l)) 10337: doSolve32(27, 0x8000000l, puzzle | 0x7c000000l, partsUsed | 0x400l); 10338: if(!(puzzle & 0xec000000l)) 10339: doSolve32(27, 0x8000000l, puzzle | 0xec000000l, partsUsed | 0x400l); 10340: } 10341: piece11at26at32: 10342: break; 10343: case 27: 10344: if (partsUsed & 0x400l) goto piece11at27at32; 10345: if(!(puzzle & 0xf8000000l)) 10346: doSolve32(28, 0x10000000l, puzzle | 0xf8000000l, partsUsed | 0x400l); 10347: piece11at27at32: 10348: break; 10349: } 10350: } 10351: 10352: 10353: void altDoSolve(int start, long long startMask, long long puzzle, int partsUsed) 10354: { 10355: for (;(puzzle & startMask) && start < NUM_LO_BITS; start++, startMask <<= 1); 10356: 10357: if(start == NUM_LO_BITS) { 10358: altDoSolve32(0, 1, puzzle>>NUM_LO_BITS, partsUsed); 10359: return; 10360: } 10361: 10362: switch(start) { 10363: case 4: 10364: if (partsUsed & 0x2l) goto altpiece2at4; 10365: if(!(puzzle & 0x480090010ll)) 10366: altDoSolve(5, 0x20ll, puzzle | 0x480090010ll, 10367: partsUsed | 0x2l); 10368: if(!(puzzle & 0x400480090ll)) 10369: altDoSolve(5, 0x20ll, puzzle | 0x400480090ll, 10370: partsUsed | 0x2l); 10371: if(!(puzzle & 0x1330ll)) 10372: altDoSolve(5, 0x20ll, puzzle | 0x1330ll, 10373: partsUsed | 0x2l); 10374: if(!(puzzle & 0x1990ll)) 10375: altDoSolve(5, 0x20ll, puzzle | 0x1990ll, 10376: partsUsed | 0x2l); 10377: if(!(puzzle & 0x40060030ll)) 10378: altDoSolve(5, 0x20ll, puzzle | 0x40060030ll, 10379: partsUsed | 0x2l); 10380: if(!(puzzle & 0x60030010ll)) 10381: altDoSolve(5, 0x20ll, puzzle | 0x60030010ll, 10382: partsUsed | 0x2l); 10383: altpiece2at4: 10384: if (partsUsed & 0x4l) goto altpiece3at4; 10385: if(!(puzzle & 0x10490010ll)) 10386: altDoSolve(5, 0x20ll, puzzle | 0x10490010ll, 10387: partsUsed | 0x4l); 10388: if(!(puzzle & 0x10070010ll)) 10389: altDoSolve(5, 0x20ll, puzzle | 0x10070010ll, 10390: partsUsed | 0x4l); 10391: if(!(puzzle & 0x80080490ll)) 10392: altDoSolve(5, 0x20ll, puzzle | 0x80080490ll, 10393: partsUsed | 0x4l); 10394: if(!(puzzle & 0x790ll)) 10395: altDoSolve(5, 0x20ll, puzzle | 0x790ll, 10396: partsUsed | 0x4l); 10397: if(!(puzzle & 0x970ll)) 10398: altDoSolve(5, 0x20ll, puzzle | 0x970ll, 10399: partsUsed | 0x4l); 10400: if(!(puzzle & 0x20020070ll)) 10401: altDoSolve(5, 0x20ll, puzzle | 0x20020070ll, 10402: partsUsed | 0x4l); 10403: altpiece3at4: 10404: if (partsUsed & 0x8l) goto altpiece4at4; 10405: if(!(puzzle & 0x400490010ll)) 10406: altDoSolve(5, 0x20ll, puzzle | 0x400490010ll, 10407: partsUsed | 0x8l); 10408: if(!(puzzle & 0x480080090ll)) 10409: altDoSolve(5, 0x20ll, puzzle | 0x480080090ll, 10410: partsUsed | 0x8l); 10411: if(!(puzzle & 0x1930ll)) 10412: altDoSolve(5, 0x20ll, puzzle | 0x1930ll, 10413: partsUsed | 0x8l); 10414: if(!(puzzle & 0x1390ll)) 10415: altDoSolve(5, 0x20ll, puzzle | 0x1390ll, 10416: partsUsed | 0x8l); 10417: if(!(puzzle & 0x40070010ll)) 10418: altDoSolve(5, 0x20ll, puzzle | 0x40070010ll, 10419: partsUsed | 0x8l); 10420: if(!(puzzle & 0x60020030ll)) 10421: altDoSolve(5, 0x20ll, puzzle | 0x60020030ll, 10422: partsUsed | 0x8l); 10423: altpiece4at4: 10424: if (partsUsed & 0x10l) goto altpiece5at4; 10425: if (!(puzzle & 0x2490ll)) { 10426: if(!(puzzle & 0x6590ll)) 10427: altDoSolve(5, 0x20ll, puzzle | 0x6590ll, 10428: partsUsed | 0x10l); 10429: if(!(puzzle & 0x2082490ll)) 10430: altDoSolve(5, 0x20ll, puzzle | 0x2082490ll, 10431: partsUsed | 0x10l); 10432: if(!(puzzle & 0x2cb0ll)) 10433: altDoSolve(5, 0x20ll, puzzle | 0x2cb0ll, 10434: partsUsed | 0x10l); 10435: } 10436: if(!(puzzle & 0x90010090010ll)) 10437: altDoSolve(5, 0x20ll, puzzle | 0x90010090010ll, 10438: partsUsed | 0x10l); 10439: if(!(puzzle & 0x80090080090ll)) 10440: altDoSolve(5, 0x20ll, puzzle | 0x80090080090ll, 10441: partsUsed | 0x10l); 10442: if(!(puzzle & 0x412490ll)) 10443: altDoSolve(5, 0x20ll, puzzle | 0x412490ll, 10444: partsUsed | 0x10l); 10445: if(!(puzzle & 0x10090010090ll)) 10446: altDoSolve(5, 0x20ll, puzzle | 0x10090010090ll, 10447: partsUsed | 0x10l); 10448: if(!(puzzle & 0x4d30ll)) 10449: altDoSolve(5, 0x20ll, puzzle | 0x4d30ll, 10450: partsUsed | 0x10l); 10451: if(!(puzzle & 0x2490410ll)) 10452: altDoSolve(5, 0x20ll, puzzle | 0x2490410ll, 10453: partsUsed | 0x10l); 10454: if(!(puzzle & 0x30010030010ll)) 10455: altDoSolve(5, 0x20ll, puzzle | 0x30010030010ll, 10456: partsUsed | 0x10l); 10457: if(!(puzzle & 0x10030010030ll)) 10458: altDoSolve(5, 0x20ll, puzzle | 0x10030010030ll, 10459: partsUsed | 0x10l); 10460: if(!(puzzle & 0x20030020030ll)) 10461: altDoSolve(5, 0x20ll, puzzle | 0x20030020030ll, 10462: partsUsed | 0x10l); 10463: altpiece5at4: 10464: if (partsUsed & 0x20l) goto altpiece6at4; 10465: if (!(puzzle & 0x10010010010ll)) { 10466: if(!(puzzle & 0x10010010090ll)) 10467: altDoSolve(5, 0x20ll, puzzle | 0x10010010090ll, 10468: partsUsed | 0x20l); 10469: if(!(puzzle & 0x90010010010ll)) 10470: altDoSolve(5, 0x20ll, puzzle | 0x90010010010ll, 10471: partsUsed | 0x20l); 10472: if(!(puzzle & 0x10010010030ll)) 10473: altDoSolve(5, 0x20ll, puzzle | 0x10010010030ll, 10474: partsUsed | 0x20l); 10475: if(!(puzzle & 0x30010010010ll)) 10476: altDoSolve(5, 0x20ll, puzzle | 0x30010010010ll, 10477: partsUsed | 0x20l); 10478: } 10479: if (!(puzzle & 0x2490ll)) { 10480: if(!(puzzle & 0x2002490ll)) 10481: altDoSolve(5, 0x20ll, puzzle | 0x2002490ll, 10482: partsUsed | 0x20l); 10483: if(!(puzzle & 0x24b0ll)) 10484: altDoSolve(5, 0x20ll, puzzle | 0x24b0ll, 10485: partsUsed | 0x20l); 10486: if(!(puzzle & 0x12490ll)) 10487: altDoSolve(5, 0x20ll, puzzle | 0x12490ll, 10488: partsUsed | 0x20l); 10489: if(!(puzzle & 0x6490ll)) 10490: altDoSolve(5, 0x20ll, puzzle | 0x6490ll, 10491: partsUsed | 0x20l); 10492: } 10493: if(!(puzzle & 0x2490010ll)) 10494: altDoSolve(5, 0x20ll, puzzle | 0x2490010ll, 10495: partsUsed | 0x20l); 10496: if(!(puzzle & 0x4930ll)) 10497: altDoSolve(5, 0x20ll, puzzle | 0x4930ll, 10498: partsUsed | 0x20l); 10499: if(!(puzzle & 0x80080080090ll)) 10500: altDoSolve(5, 0x20ll, puzzle | 0x80080080090ll, 10501: partsUsed | 0x20l); 10502: if(!(puzzle & 0x20020020030ll)) 10503: altDoSolve(5, 0x20ll, puzzle | 0x20020020030ll, 10504: partsUsed | 0x20l); 10505: altpiece6at4: 10506: if (partsUsed & 0x40l) goto altpiece7at4; 10507: if (!(puzzle & 0x10010010010ll)) { 10508: if(!(puzzle & 0x10010090010ll)) 10509: altDoSolve(5, 0x20ll, puzzle | 0x10010090010ll, 10510: partsUsed | 0x40l); 10511: if(!(puzzle & 0x10090010010ll)) 10512: altDoSolve(5, 0x20ll, puzzle | 0x10090010010ll, 10513: partsUsed | 0x40l); 10514: if(!(puzzle & 0x10010030010ll)) 10515: altDoSolve(5, 0x20ll, puzzle | 0x10010030010ll, 10516: partsUsed | 0x40l); 10517: if(!(puzzle & 0x10030010010ll)) 10518: altDoSolve(5, 0x20ll, puzzle | 0x10030010010ll, 10519: partsUsed | 0x40l); 10520: } 10521: if (!(puzzle & 0x2490ll)) { 10522: if(!(puzzle & 0x402490ll)) 10523: altDoSolve(5, 0x20ll, puzzle | 0x402490ll, 10524: partsUsed | 0x40l); 10525: if(!(puzzle & 0x2590ll)) 10526: altDoSolve(5, 0x20ll, puzzle | 0x2590ll, 10527: partsUsed | 0x40l); 10528: if(!(puzzle & 0x82490ll)) 10529: altDoSolve(5, 0x20ll, puzzle | 0x82490ll, 10530: partsUsed | 0x40l); 10531: if(!(puzzle & 0x2c90ll)) 10532: altDoSolve(5, 0x20ll, puzzle | 0x2c90ll, 10533: partsUsed | 0x40l); 10534: } 10535: altpiece7at4: 10536: if (partsUsed & 0x80l) goto altpiece8at4; 10537: if(!(puzzle & 0x90010090ll)) 10538: altDoSolve(5, 0x20ll, puzzle | 0x90010090ll, 10539: partsUsed | 0x80l); 10540: if(!(puzzle & 0x90080090ll)) 10541: altDoSolve(5, 0x20ll, puzzle | 0x90080090ll, 10542: partsUsed | 0x80l); 10543: if(!(puzzle & 0x490410ll)) 10544: altDoSolve(5, 0x20ll, puzzle | 0x490410ll, 10545: partsUsed | 0x80l); 10546: if(!(puzzle & 0x410490ll)) 10547: altDoSolve(5, 0x20ll, puzzle | 0x410490ll, 10548: partsUsed | 0x80l); 10549: if(!(puzzle & 0x2f0ll)) 10550: altDoSolve(5, 0x20ll, puzzle | 0x2f0ll, 10551: partsUsed | 0x80l); 10552: if(!(puzzle & 0xcb0ll)) 10553: altDoSolve(5, 0x20ll, puzzle | 0xcb0ll, 10554: partsUsed | 0x80l); 10555: if(!(puzzle & 0xd30ll)) 10556: altDoSolve(5, 0x20ll, puzzle | 0xd30ll, 10557: partsUsed | 0x80l); 10558: if(!(puzzle & 0x3d0ll)) 10559: altDoSolve(5, 0x20ll, puzzle | 0x3d0ll, 10560: partsUsed | 0x80l); 10561: if(!(puzzle & 0x30020030ll)) 10562: altDoSolve(5, 0x20ll, puzzle | 0x30020030ll, 10563: partsUsed | 0x80l); 10564: if(!(puzzle & 0x30010030ll)) 10565: altDoSolve(5, 0x20ll, puzzle | 0x30010030ll, 10566: partsUsed | 0x80l); 10567: if(!(puzzle & 0x70050ll)) 10568: altDoSolve(5, 0x20ll, puzzle | 0x70050ll, 10569: partsUsed | 0x80l); 10570: if(!(puzzle & 0x50070ll)) 10571: altDoSolve(5, 0x20ll, puzzle | 0x50070ll, 10572: partsUsed | 0x80l); 10573: altpiece8at4: 10574: if (partsUsed & 0x100l) goto altpiece9at4; 10575: if(!(puzzle & 0x100130ll)) 10576: altDoSolve(5, 0x20ll, puzzle | 0x100130ll, 10577: partsUsed | 0x100l); 10578: if(!(puzzle & 0x130010ll)) 10579: altDoSolve(5, 0x20ll, puzzle | 0x130010ll, 10580: partsUsed | 0x100l); 10581: if(!(puzzle & 0x200b0ll)) 10582: altDoSolve(5, 0x20ll, puzzle | 0x200b0ll, 10583: partsUsed | 0x100l); 10584: if(!(puzzle & 0x90030ll)) 10585: altDoSolve(5, 0x20ll, puzzle | 0x90030ll, 10586: partsUsed | 0x100l); 10587: if(!(puzzle & 0x180090ll)) 10588: altDoSolve(5, 0x20ll, puzzle | 0x180090ll, 10589: partsUsed | 0x100l); 10590: if(!(puzzle & 0x10190ll)) 10591: altDoSolve(5, 0x20ll, puzzle | 0x10190ll, 10592: partsUsed | 0x100l); 10593: altpiece9at4: 10594: if (partsUsed & 0x200l) goto altpiece10at4; 10595: if(!(puzzle & 0x80490010ll)) 10596: altDoSolve(5, 0x20ll, puzzle | 0x80490010ll, 10597: partsUsed | 0x200l); 10598: if(!(puzzle & 0x80480090ll)) 10599: altDoSolve(5, 0x20ll, puzzle | 0x80480090ll, 10600: partsUsed | 0x200l); 10601: if(!(puzzle & 0xb30ll)) 10602: altDoSolve(5, 0x20ll, puzzle | 0xb30ll, 10603: partsUsed | 0x200l); 10604: if(!(puzzle & 0xb90ll)) 10605: altDoSolve(5, 0x20ll, puzzle | 0xb90ll, 10606: partsUsed | 0x200l); 10607: if(!(puzzle & 0x20060030ll)) 10608: altDoSolve(5, 0x20ll, puzzle | 0x20060030ll, 10609: partsUsed | 0x200l); 10610: if(!(puzzle & 0x20070010ll)) 10611: altDoSolve(5, 0x20ll, puzzle | 0x20070010ll, 10612: partsUsed | 0x200l); 10613: altpiece10at4: 10614: if (partsUsed & 0x400l) goto altpiece11at4; 10615: if (!(puzzle & 0x80090ll)) { 10616: if(!(puzzle & 0x10090090ll)) 10617: altDoSolve(5, 0x20ll, puzzle | 0x10090090ll, 10618: partsUsed | 0x400l); 10619: if(!(puzzle & 0x490090ll)) 10620: altDoSolve(5, 0x20ll, puzzle | 0x490090ll, 10621: partsUsed | 0x400l); 10622: if(!(puzzle & 0x480490ll)) 10623: altDoSolve(5, 0x20ll, puzzle | 0x480490ll, 10624: partsUsed | 0x400l); 10625: if(!(puzzle & 0x90490ll)) 10626: altDoSolve(5, 0x20ll, puzzle | 0x90490ll, 10627: partsUsed | 0x400l); 10628: if(!(puzzle & 0x80090090ll)) 10629: altDoSolve(5, 0x20ll, puzzle | 0x80090090ll, 10630: partsUsed | 0x400l); 10631: } 10632: if (!(puzzle & 0x130ll)) { 10633: if(!(puzzle & 0x370ll)) 10634: altDoSolve(5, 0x20ll, puzzle | 0x370ll, 10635: partsUsed | 0x400l); 10636: if(!(puzzle & 0x1f0ll)) 10637: altDoSolve(5, 0x20ll, puzzle | 0x1f0ll, 10638: partsUsed | 0x400l); 10639: if(!(puzzle & 0x5b0ll)) 10640: altDoSolve(5, 0x20ll, puzzle | 0x5b0ll, 10641: partsUsed | 0x400l); 10642: if(!(puzzle & 0x9b0ll)) 10643: altDoSolve(5, 0x20ll, puzzle | 0x9b0ll, 10644: partsUsed | 0x400l); 10645: if(!(puzzle & 0x3b0ll)) 10646: altDoSolve(5, 0x20ll, puzzle | 0x3b0ll, 10647: partsUsed | 0x400l); 10648: } 10649: if (!(puzzle & 0x10010010ll)) { 10650: if(!(puzzle & 0x90090010ll)) 10651: altDoSolve(5, 0x20ll, puzzle | 0x90090010ll, 10652: partsUsed | 0x400l); 10653: if(!(puzzle & 0x10030030ll)) 10654: altDoSolve(5, 0x20ll, puzzle | 0x10030030ll, 10655: partsUsed | 0x400l); 10656: if(!(puzzle & 0x30030010ll)) 10657: altDoSolve(5, 0x20ll, puzzle | 0x30030010ll, 10658: partsUsed | 0x400l); 10659: } 10660: if (!(puzzle & 0x20030ll)) { 10661: if(!(puzzle & 0x20030030ll)) 10662: altDoSolve(5, 0x20ll, puzzle | 0x20030030ll, 10663: partsUsed | 0x400l); 10664: if(!(puzzle & 0x70030ll)) 10665: altDoSolve(5, 0x20ll, puzzle | 0x70030ll, 10666: partsUsed | 0x400l); 10667: if(!(puzzle & 0x30070ll)) 10668: altDoSolve(5, 0x20ll, puzzle | 0x30070ll, 10669: partsUsed | 0x400l); 10670: if(!(puzzle & 0x60070ll)) 10671: altDoSolve(5, 0x20ll, puzzle | 0x60070ll, 10672: partsUsed | 0x400l); 10673: } 10674: if(!(puzzle & 0xd90ll)) 10675: altDoSolve(5, 0x20ll, puzzle | 0xd90ll, 10676: partsUsed | 0x400l); 10677: altpiece11at4: 10678: break; 10679: case 5: 10680: if (partsUsed & 0x2l) goto altpiece2at5; 10681: if(!(puzzle & 0x5e0ll)) 10682: altDoSolve(6, 0x40ll, puzzle | 0x5e0ll, 10683: partsUsed | 0x2l); 10684: if(!(puzzle & 0x10030060ll)) 10685: altDoSolve(6, 0x40ll, puzzle | 0x10030060ll, 10686: partsUsed | 0x2l); 10687: if(!(puzzle & 0x900120020ll)) 10688: altDoSolve(6, 0x40ll, puzzle | 0x900120020ll, 10689: partsUsed | 0x2l); 10690: if(!(puzzle & 0x800900120ll)) 10691: altDoSolve(6, 0x40ll, puzzle | 0x800900120ll, 10692: partsUsed | 0x2l); 10693: altpiece2at5: 10694: if (partsUsed & 0x4l) goto altpiece3at5; 10695: if(!(puzzle & 0x1d20ll)) 10696: altDoSolve(6, 0x40ll, puzzle | 0x1d20ll, 10697: partsUsed | 0x4l); 10698: if(!(puzzle & 0x100100920ll)) 10699: altDoSolve(6, 0x40ll, puzzle | 0x100100920ll, 10700: partsUsed | 0x4l); 10701: if(!(puzzle & 0x70020020ll)) 10702: altDoSolve(6, 0x40ll, puzzle | 0x70020020ll, 10703: partsUsed | 0x4l); 10704: if(!(puzzle & 0x20920020ll)) 10705: altDoSolve(6, 0x40ll, puzzle | 0x20920020ll, 10706: partsUsed | 0x4l); 10707: altpiece3at5: 10708: if (partsUsed & 0x8l) goto altpiece4at5; 10709: if(!(puzzle & 0xd60ll)) 10710: altDoSolve(6, 0x40ll, puzzle | 0xd60ll, 10711: partsUsed | 0x8l); 10712: if(!(puzzle & 0x30020060ll)) 10713: altDoSolve(6, 0x40ll, puzzle | 0x30020060ll, 10714: partsUsed | 0x8l); 10715: if(!(puzzle & 0x800920020ll)) 10716: altDoSolve(6, 0x40ll, puzzle | 0x800920020ll, 10717: partsUsed | 0x8l); 10718: if(!(puzzle & 0x900100120ll)) 10719: altDoSolve(6, 0x40ll, puzzle | 0x900100120ll, 10720: partsUsed | 0x8l); 10721: altpiece4at5: 10722: if (partsUsed & 0x10l) goto altpiece5at5; 10723: if (!(puzzle & 0x4920ll)) { 10724: if(!(puzzle & 0x69a0ll)) 10725: altDoSolve(6, 0x40ll, puzzle | 0x69a0ll, 10726: partsUsed | 0x10l); 10727: if(!(puzzle & 0x824920ll)) 10728: altDoSolve(6, 0x40ll, puzzle | 0x824920ll, 10729: partsUsed | 0x10l); 10730: if(!(puzzle & 0xcb20ll)) 10731: altDoSolve(6, 0x40ll, puzzle | 0xcb20ll, 10732: partsUsed | 0x10l); 10733: if(!(puzzle & 0x4104920ll)) 10734: altDoSolve(6, 0x40ll, puzzle | 0x4104920ll, 10735: partsUsed | 0x10l); 10736: if(!(puzzle & 0x5960ll)) 10737: altDoSolve(6, 0x40ll, puzzle | 0x5960ll, 10738: partsUsed | 0x10l); 10739: } 10740: if (!(puzzle & 0x20020020020ll)) { 10741: if(!(puzzle & 0x30020030020ll)) 10742: altDoSolve(6, 0x40ll, puzzle | 0x30020030020ll, 10743: partsUsed | 0x10l); 10744: if(!(puzzle & 0x120020120020ll)) 10745: altDoSolve(6, 0x40ll, puzzle | 0x120020120020ll, 10746: partsUsed | 0x10l); 10747: if(!(puzzle & 0x20120020120ll)) 10748: altDoSolve(6, 0x40ll, puzzle | 0x20120020120ll, 10749: partsUsed | 0x10l); 10750: if(!(puzzle & 0x60020060020ll)) 10751: altDoSolve(6, 0x40ll, puzzle | 0x60020060020ll, 10752: partsUsed | 0x10l); 10753: if(!(puzzle & 0x20060020060ll)) 10754: altDoSolve(6, 0x40ll, puzzle | 0x20060020060ll, 10755: partsUsed | 0x10l); 10756: } 10757: if(!(puzzle & 0x100120100120ll)) 10758: altDoSolve(6, 0x40ll, puzzle | 0x100120100120ll, 10759: partsUsed | 0x10l); 10760: if(!(puzzle & 0x9a60ll)) 10761: altDoSolve(6, 0x40ll, puzzle | 0x9a60ll, 10762: partsUsed | 0x10l); 10763: if(!(puzzle & 0x4920820ll)) 10764: altDoSolve(6, 0x40ll, puzzle | 0x4920820ll, 10765: partsUsed | 0x10l); 10766: if(!(puzzle & 0x40060040060ll)) 10767: altDoSolve(6, 0x40ll, puzzle | 0x40060040060ll, 10768: partsUsed | 0x10l); 10769: altpiece5at5: 10770: if (partsUsed & 0x20l) goto altpiece6at5; 10771: if (!(puzzle & 0x4920ll)) { 10772: if(!(puzzle & 0x6920ll)) 10773: altDoSolve(6, 0x40ll, puzzle | 0x6920ll, 10774: partsUsed | 0x20l); 10775: if(!(puzzle & 0x4004920ll)) 10776: altDoSolve(6, 0x40ll, puzzle | 0x4004920ll, 10777: partsUsed | 0x20l); 10778: if(!(puzzle & 0x4960ll)) 10779: altDoSolve(6, 0x40ll, puzzle | 0x4960ll, 10780: partsUsed | 0x20l); 10781: if(!(puzzle & 0x24920ll)) 10782: altDoSolve(6, 0x40ll, puzzle | 0x24920ll, 10783: partsUsed | 0x20l); 10784: if(!(puzzle & 0xc920ll)) 10785: altDoSolve(6, 0x40ll, puzzle | 0xc920ll, 10786: partsUsed | 0x20l); 10787: } 10788: if (!(puzzle & 0x20020020020ll)) { 10789: if(!(puzzle & 0x30020020020ll)) 10790: altDoSolve(6, 0x40ll, puzzle | 0x30020020020ll, 10791: partsUsed | 0x20l); 10792: if(!(puzzle & 0x20020020120ll)) 10793: altDoSolve(6, 0x40ll, puzzle | 0x20020020120ll, 10794: partsUsed | 0x20l); 10795: if(!(puzzle & 0x120020020020ll)) 10796: altDoSolve(6, 0x40ll, puzzle | 0x120020020020ll, 10797: partsUsed | 0x20l); 10798: if(!(puzzle & 0x20020020060ll)) 10799: altDoSolve(6, 0x40ll, puzzle | 0x20020020060ll, 10800: partsUsed | 0x20l); 10801: if(!(puzzle & 0x60020020020ll)) 10802: altDoSolve(6, 0x40ll, puzzle | 0x60020020020ll, 10803: partsUsed | 0x20l); 10804: } 10805: if(!(puzzle & 0x4920020ll)) 10806: altDoSolve(6, 0x40ll, puzzle | 0x4920020ll, 10807: partsUsed | 0x20l); 10808: if(!(puzzle & 0x9260ll)) 10809: altDoSolve(6, 0x40ll, puzzle | 0x9260ll, 10810: partsUsed | 0x20l); 10811: if(!(puzzle & 0x100100100120ll)) 10812: altDoSolve(6, 0x40ll, puzzle | 0x100100100120ll, 10813: partsUsed | 0x20l); 10814: if(!(puzzle & 0x40040040060ll)) 10815: altDoSolve(6, 0x40ll, puzzle | 0x40040040060ll, 10816: partsUsed | 0x20l); 10817: altpiece6at5: 10818: if (partsUsed & 0x40l) goto altpiece7at5; 10819: if (!(puzzle & 0x4920ll)) { 10820: if(!(puzzle & 0x49a0ll)) 10821: altDoSolve(6, 0x40ll, puzzle | 0x49a0ll, 10822: partsUsed | 0x40l); 10823: if(!(puzzle & 0x4d20ll)) 10824: altDoSolve(6, 0x40ll, puzzle | 0x4d20ll, 10825: partsUsed | 0x40l); 10826: if(!(puzzle & 0x804920ll)) 10827: altDoSolve(6, 0x40ll, puzzle | 0x804920ll, 10828: partsUsed | 0x40l); 10829: if(!(puzzle & 0x4b20ll)) 10830: altDoSolve(6, 0x40ll, puzzle | 0x4b20ll, 10831: partsUsed | 0x40l); 10832: if(!(puzzle & 0x104920ll)) 10833: altDoSolve(6, 0x40ll, puzzle | 0x104920ll, 10834: partsUsed | 0x40l); 10835: if(!(puzzle & 0x5920ll)) 10836: altDoSolve(6, 0x40ll, puzzle | 0x5920ll, 10837: partsUsed | 0x40l); 10838: } 10839: if (!(puzzle & 0x20020020020ll)) { 10840: if(!(puzzle & 0x20020030020ll)) 10841: altDoSolve(6, 0x40ll, puzzle | 0x20020030020ll, 10842: partsUsed | 0x40l); 10843: if(!(puzzle & 0x20030020020ll)) 10844: altDoSolve(6, 0x40ll, puzzle | 0x20030020020ll, 10845: partsUsed | 0x40l); 10846: if(!(puzzle & 0x20020120020ll)) 10847: altDoSolve(6, 0x40ll, puzzle | 0x20020120020ll, 10848: partsUsed | 0x40l); 10849: if(!(puzzle & 0x20120020020ll)) 10850: altDoSolve(6, 0x40ll, puzzle | 0x20120020020ll, 10851: partsUsed | 0x40l); 10852: if(!(puzzle & 0x20020060020ll)) 10853: altDoSolve(6, 0x40ll, puzzle | 0x20020060020ll, 10854: partsUsed | 0x40l); 10855: if(!(puzzle & 0x20060020020ll)) 10856: altDoSolve(6, 0x40ll, puzzle | 0x20060020020ll, 10857: partsUsed | 0x40l); 10858: } 10859: altpiece7at5: 10860: if (partsUsed & 0x80l) goto altpiece8at5; 10861: if(!(puzzle & 0x120020120ll)) 10862: altDoSolve(6, 0x40ll, puzzle | 0x120020120ll, 10863: partsUsed | 0x80l); 10864: if(!(puzzle & 0x120100120ll)) 10865: altDoSolve(6, 0x40ll, puzzle | 0x120100120ll, 10866: partsUsed | 0x80l); 10867: if(!(puzzle & 0x920820ll)) 10868: altDoSolve(6, 0x40ll, puzzle | 0x920820ll, 10869: partsUsed | 0x80l); 10870: if(!(puzzle & 0x820920ll)) 10871: altDoSolve(6, 0x40ll, puzzle | 0x820920ll, 10872: partsUsed | 0x80l); 10873: if(!(puzzle & 0x1960ll)) 10874: altDoSolve(6, 0x40ll, puzzle | 0x1960ll, 10875: partsUsed | 0x80l); 10876: if(!(puzzle & 0x1a60ll)) 10877: altDoSolve(6, 0x40ll, puzzle | 0x1a60ll, 10878: partsUsed | 0x80l); 10879: if(!(puzzle & 0x60040060ll)) 10880: altDoSolve(6, 0x40ll, puzzle | 0x60040060ll, 10881: partsUsed | 0x80l); 10882: if(!(puzzle & 0x60020060ll)) 10883: altDoSolve(6, 0x40ll, puzzle | 0x60020060ll, 10884: partsUsed | 0x80l); 10885: altpiece8at5: 10886: if (partsUsed & 0x100l) goto altpiece9at5; 10887: if(!(puzzle & 0x801a0ll)) 10888: altDoSolve(6, 0x40ll, puzzle | 0x801a0ll, 10889: partsUsed | 0x100l); 10890: if(!(puzzle & 0x30120ll)) 10891: altDoSolve(6, 0x40ll, puzzle | 0x30120ll, 10892: partsUsed | 0x100l); 10893: if(!(puzzle & 0x20320ll)) 10894: altDoSolve(6, 0x40ll, puzzle | 0x20320ll, 10895: partsUsed | 0x100l); 10896: if(!(puzzle & 0x1a0020ll)) 10897: altDoSolve(6, 0x40ll, puzzle | 0x1a0020ll, 10898: partsUsed | 0x100l); 10899: if(!(puzzle & 0x120060ll)) 10900: altDoSolve(6, 0x40ll, puzzle | 0x120060ll, 10901: partsUsed | 0x100l); 10902: if(!(puzzle & 0x260020ll)) 10903: altDoSolve(6, 0x40ll, puzzle | 0x260020ll, 10904: partsUsed | 0x100l); 10905: if(!(puzzle & 0x40160ll)) 10906: altDoSolve(6, 0x40ll, puzzle | 0x40160ll, 10907: partsUsed | 0x100l); 10908: if(!(puzzle & 0x300120ll)) 10909: altDoSolve(6, 0x40ll, puzzle | 0x300120ll, 10910: partsUsed | 0x100l); 10911: if(!(puzzle & 0x200260ll)) 10912: altDoSolve(6, 0x40ll, puzzle | 0x200260ll, 10913: partsUsed | 0x100l); 10914: altpiece9at5: 10915: if (partsUsed & 0x200l) goto altpiece10at5; 10916: if (!(puzzle & 0x1a0ll)) { 10917: if(!(puzzle & 0x13a0ll)) 10918: altDoSolve(6, 0x40ll, puzzle | 0x13a0ll, 10919: partsUsed | 0x200l); 10920: if(!(puzzle & 0x7a0ll)) 10921: altDoSolve(6, 0x40ll, puzzle | 0x7a0ll, 10922: partsUsed | 0x200l); 10923: if(!(puzzle & 0x9e0ll)) 10924: altDoSolve(6, 0x40ll, puzzle | 0x9e0ll, 10925: partsUsed | 0x200l); 10926: if(!(puzzle & 0x19a0ll)) 10927: altDoSolve(6, 0x40ll, puzzle | 0x19a0ll, 10928: partsUsed | 0x200l); 10929: } 10930: if (!(puzzle & 0x20020020ll)) { 10931: if(!(puzzle & 0x20030060ll)) 10932: altDoSolve(6, 0x40ll, puzzle | 0x20030060ll, 10933: partsUsed | 0x200l); 10934: if(!(puzzle & 0x60030020ll)) 10935: altDoSolve(6, 0x40ll, puzzle | 0x60030020ll, 10936: partsUsed | 0x200l); 10937: if(!(puzzle & 0x30060020ll)) 10938: altDoSolve(6, 0x40ll, puzzle | 0x30060020ll, 10939: partsUsed | 0x200l); 10940: } 10941: if(!(puzzle & 0xf20ll)) 10942: altDoSolve(6, 0x40ll, puzzle | 0xf20ll, 10943: partsUsed | 0x200l); 10944: if(!(puzzle & 0x10070020ll)) 10945: altDoSolve(6, 0x40ll, puzzle | 0x10070020ll, 10946: partsUsed | 0x200l); 10947: if(!(puzzle & 0x40070020ll)) 10948: altDoSolve(6, 0x40ll, puzzle | 0x40070020ll, 10949: partsUsed | 0x200l); 10950: if(!(puzzle & 0x100920020ll)) 10951: altDoSolve(6, 0x40ll, puzzle | 0x100920020ll, 10952: partsUsed | 0x200l); 10953: if(!(puzzle & 0x100900120ll)) 10954: altDoSolve(6, 0x40ll, puzzle | 0x100900120ll, 10955: partsUsed | 0x200l); 10956: altpiece10at5: 10957: if (partsUsed & 0x400l) goto altpiece11at5; 10958: if (!(puzzle & 0x100120ll)) { 10959: if(!(puzzle & 0x20120120ll)) 10960: altDoSolve(6, 0x40ll, puzzle | 0x20120120ll, 10961: partsUsed | 0x400l); 10962: if(!(puzzle & 0x920120ll)) 10963: altDoSolve(6, 0x40ll, puzzle | 0x920120ll, 10964: partsUsed | 0x400l); 10965: if(!(puzzle & 0x900920ll)) 10966: altDoSolve(6, 0x40ll, puzzle | 0x900920ll, 10967: partsUsed | 0x400l); 10968: if(!(puzzle & 0x120920ll)) 10969: altDoSolve(6, 0x40ll, puzzle | 0x120920ll, 10970: partsUsed | 0x400l); 10971: if(!(puzzle & 0x100120120ll)) 10972: altDoSolve(6, 0x40ll, puzzle | 0x100120120ll, 10973: partsUsed | 0x400l); 10974: } 10975: if (!(puzzle & 0x20020020ll)) { 10976: if(!(puzzle & 0x120120020ll)) 10977: altDoSolve(6, 0x40ll, puzzle | 0x120120020ll, 10978: partsUsed | 0x400l); 10979: if(!(puzzle & 0x20060060ll)) 10980: altDoSolve(6, 0x40ll, puzzle | 0x20060060ll, 10981: partsUsed | 0x400l); 10982: if(!(puzzle & 0x60060020ll)) 10983: altDoSolve(6, 0x40ll, puzzle | 0x60060020ll, 10984: partsUsed | 0x400l); 10985: } 10986: if (!(puzzle & 0x320ll)) { 10987: if(!(puzzle & 0xb60ll)) 10988: altDoSolve(6, 0x40ll, puzzle | 0xb60ll, 10989: partsUsed | 0x400l); 10990: if(!(puzzle & 0x1360ll)) 10991: altDoSolve(6, 0x40ll, puzzle | 0x1360ll, 10992: partsUsed | 0x400l); 10993: if(!(puzzle & 0x1b20ll)) 10994: altDoSolve(6, 0x40ll, puzzle | 0x1b20ll, 10995: partsUsed | 0x400l); 10996: } 10997: if(!(puzzle & 0x3e0ll)) 10998: altDoSolve(6, 0x40ll, puzzle | 0x3e0ll, 10999: partsUsed | 0x400l); 11000: if(!(puzzle & 0xda0ll)) 11001: altDoSolve(6, 0x40ll, puzzle | 0xda0ll, 11002: partsUsed | 0x400l); 11003: if(!(puzzle & 0x70060ll)) 11004: altDoSolve(6, 0x40ll, puzzle | 0x70060ll, 11005: partsUsed | 0x400l); 11006: if(!(puzzle & 0x30030020ll)) 11007: altDoSolve(6, 0x40ll, puzzle | 0x30030020ll, 11008: partsUsed | 0x400l); 11009: if(!(puzzle & 0x40060060ll)) 11010: altDoSolve(6, 0x40ll, puzzle | 0x40060060ll, 11011: partsUsed | 0x400l); 11012: altpiece11at5: 11013: break; 11014: case 6: 11015: if (partsUsed & 0x2l) goto altpiece2at6; 11016: if(!(puzzle & 0xf40ll)) 11017: altDoSolve(7, 0x80ll, puzzle | 0xf40ll, 11018: partsUsed | 0x2l); 11019: if(!(puzzle & 0x30060040ll)) 11020: altDoSolve(7, 0x80ll, puzzle | 0x30060040ll, 11021: partsUsed | 0x2l); 11022: if(!(puzzle & 0x1200240040ll)) 11023: altDoSolve(7, 0x80ll, puzzle | 0x1200240040ll, 11024: partsUsed | 0x2l); 11025: if(!(puzzle & 0x1001200240ll)) 11026: altDoSolve(7, 0x80ll, puzzle | 0x1001200240ll, 11027: partsUsed | 0x2l); 11028: altpiece2at6: 11029: if (partsUsed & 0x4l) goto altpiece3at6; 11030: if(!(puzzle & 0x13c0ll)) 11031: altDoSolve(7, 0x80ll, puzzle | 0x13c0ll, 11032: partsUsed | 0x4l); 11033: if(!(puzzle & 0x200201240ll)) 11034: altDoSolve(7, 0x80ll, puzzle | 0x200201240ll, 11035: partsUsed | 0x4l); 11036: if(!(puzzle & 0x40070040ll)) 11037: altDoSolve(7, 0x80ll, puzzle | 0x40070040ll, 11038: partsUsed | 0x4l); 11039: if(!(puzzle & 0x41240040ll)) 11040: altDoSolve(7, 0x80ll, puzzle | 0x41240040ll, 11041: partsUsed | 0x4l); 11042: altpiece3at6: 11043: if (partsUsed & 0x8l) goto altpiece4at6; 11044: if(!(puzzle & 0x7c0ll)) 11045: altDoSolve(7, 0x80ll, puzzle | 0x7c0ll, 11046: partsUsed | 0x8l); 11047: if(!(puzzle & 0x10070040ll)) 11048: altDoSolve(7, 0x80ll, puzzle | 0x10070040ll, 11049: partsUsed | 0x8l); 11050: if(!(puzzle & 0x1001240040ll)) 11051: altDoSolve(7, 0x80ll, puzzle | 0x1001240040ll, 11052: partsUsed | 0x8l); 11053: if(!(puzzle & 0x1200200240ll)) 11054: altDoSolve(7, 0x80ll, puzzle | 0x1200200240ll, 11055: partsUsed | 0x8l); 11056: altpiece4at6: 11057: if (partsUsed & 0x10l) goto altpiece5at6; 11058: if (!(puzzle & 0x9240ll)) { 11059: if(!(puzzle & 0xd340ll)) 11060: altDoSolve(7, 0x80ll, puzzle | 0xd340ll, 11061: partsUsed | 0x10l); 11062: if(!(puzzle & 0x1049240ll)) 11063: altDoSolve(7, 0x80ll, puzzle | 0x1049240ll, 11064: partsUsed | 0x10l); 11065: if(!(puzzle & 0x8209240ll)) 11066: altDoSolve(7, 0x80ll, puzzle | 0x8209240ll, 11067: partsUsed | 0x10l); 11068: } 11069: if (!(puzzle & 0x40040040040ll)) { 11070: if(!(puzzle & 0x60040060040ll)) 11071: altDoSolve(7, 0x80ll, puzzle | 0x60040060040ll, 11072: partsUsed | 0x10l); 11073: if(!(puzzle & 0x240040240040ll)) 11074: altDoSolve(7, 0x80ll, puzzle | 0x240040240040ll, 11075: partsUsed | 0x10l); 11076: if(!(puzzle & 0x40240040240ll)) 11077: altDoSolve(7, 0x80ll, puzzle | 0x40240040240ll, 11078: partsUsed | 0x10l); 11079: } 11080: if(!(puzzle & 0x200240200240ll)) 11081: altDoSolve(7, 0x80ll, puzzle | 0x200240200240ll, 11082: partsUsed | 0x10l); 11083: if(!(puzzle & 0x9241040ll)) 11084: altDoSolve(7, 0x80ll, puzzle | 0x9241040ll, 11085: partsUsed | 0x10l); 11086: altpiece5at6: 11087: if (partsUsed & 0x20l) goto altpiece6at6; 11088: if (!(puzzle & 0x9240ll)) { 11089: if(!(puzzle & 0xd240ll)) 11090: altDoSolve(7, 0x80ll, puzzle | 0xd240ll, 11091: partsUsed | 0x20l); 11092: if(!(puzzle & 0x8009240ll)) 11093: altDoSolve(7, 0x80ll, puzzle | 0x8009240ll, 11094: partsUsed | 0x20l); 11095: if(!(puzzle & 0x49240ll)) 11096: altDoSolve(7, 0x80ll, puzzle | 0x49240ll, 11097: partsUsed | 0x20l); 11098: } 11099: if (!(puzzle & 0x40040040040ll)) { 11100: if(!(puzzle & 0x60040040040ll)) 11101: altDoSolve(7, 0x80ll, puzzle | 0x60040040040ll, 11102: partsUsed | 0x20l); 11103: if(!(puzzle & 0x40040040240ll)) 11104: altDoSolve(7, 0x80ll, puzzle | 0x40040040240ll, 11105: partsUsed | 0x20l); 11106: if(!(puzzle & 0x240040040040ll)) 11107: altDoSolve(7, 0x80ll, puzzle | 0x240040040040ll, 11108: partsUsed | 0x20l); 11109: } 11110: if(!(puzzle & 0x9240040ll)) 11111: altDoSolve(7, 0x80ll, puzzle | 0x9240040ll, 11112: partsUsed | 0x20l); 11113: if(!(puzzle & 0x200200200240ll)) 11114: altDoSolve(7, 0x80ll, puzzle | 0x200200200240ll, 11115: partsUsed | 0x20l); 11116: altpiece6at6: 11117: if (partsUsed & 0x40l) goto altpiece7at6; 11118: if (!(puzzle & 0x9240ll)) { 11119: if(!(puzzle & 0x9340ll)) 11120: altDoSolve(7, 0x80ll, puzzle | 0x9340ll, 11121: partsUsed | 0x40l); 11122: if(!(puzzle & 0x9a40ll)) 11123: altDoSolve(7, 0x80ll, puzzle | 0x9a40ll, 11124: partsUsed | 0x40l); 11125: if(!(puzzle & 0x1009240ll)) 11126: altDoSolve(7, 0x80ll, puzzle | 0x1009240ll, 11127: partsUsed | 0x40l); 11128: if(!(puzzle & 0x209240ll)) 11129: altDoSolve(7, 0x80ll, puzzle | 0x209240ll, 11130: partsUsed | 0x40l); 11131: } 11132: if (!(puzzle & 0x40040040040ll)) { 11133: if(!(puzzle & 0x40040060040ll)) 11134: altDoSolve(7, 0x80ll, puzzle | 0x40040060040ll, 11135: partsUsed | 0x40l); 11136: if(!(puzzle & 0x40060040040ll)) 11137: altDoSolve(7, 0x80ll, puzzle | 0x40060040040ll, 11138: partsUsed | 0x40l); 11139: if(!(puzzle & 0x40040240040ll)) 11140: altDoSolve(7, 0x80ll, puzzle | 0x40040240040ll, 11141: partsUsed | 0x40l); 11142: if(!(puzzle & 0x40240040040ll)) 11143: altDoSolve(7, 0x80ll, puzzle | 0x40240040040ll, 11144: partsUsed | 0x40l); 11145: } 11146: altpiece7at6: 11147: if (partsUsed & 0x80l) goto altpiece8at6; 11148: if(!(puzzle & 0x240040240ll)) 11149: altDoSolve(7, 0x80ll, puzzle | 0x240040240ll, 11150: partsUsed | 0x80l); 11151: if(!(puzzle & 0x240200240ll)) 11152: altDoSolve(7, 0x80ll, puzzle | 0x240200240ll, 11153: partsUsed | 0x80l); 11154: if(!(puzzle & 0x1241040ll)) 11155: altDoSolve(7, 0x80ll, puzzle | 0x1241040ll, 11156: partsUsed | 0x80l); 11157: if(!(puzzle & 0x1041240ll)) 11158: altDoSolve(7, 0x80ll, puzzle | 0x1041240ll, 11159: partsUsed | 0x80l); 11160: altpiece8at6: 11161: if (partsUsed & 0x100l) goto altpiece9at6; 11162: if(!(puzzle & 0x340040ll)) 11163: altDoSolve(7, 0x80ll, puzzle | 0x340040ll, 11164: partsUsed | 0x100l); 11165: if(!(puzzle & 0x100340ll)) 11166: altDoSolve(7, 0x80ll, puzzle | 0x100340ll, 11167: partsUsed | 0x100l); 11168: if(!(puzzle & 0x60240ll)) 11169: altDoSolve(7, 0x80ll, puzzle | 0x60240ll, 11170: partsUsed | 0x100l); 11171: altpiece9at6: 11172: if (partsUsed & 0x200l) goto altpiece10at6; 11173: if(!(puzzle & 0xbc0ll)) 11174: altDoSolve(7, 0x80ll, puzzle | 0xbc0ll, 11175: partsUsed | 0x200l); 11176: if(!(puzzle & 0x20070040ll)) 11177: altDoSolve(7, 0x80ll, puzzle | 0x20070040ll, 11178: partsUsed | 0x200l); 11179: if(!(puzzle & 0x201240040ll)) 11180: altDoSolve(7, 0x80ll, puzzle | 0x201240040ll, 11181: partsUsed | 0x200l); 11182: if(!(puzzle & 0x201200240ll)) 11183: altDoSolve(7, 0x80ll, puzzle | 0x201200240ll, 11184: partsUsed | 0x200l); 11185: altpiece10at6: 11186: if (partsUsed & 0x400l) goto altpiece11at6; 11187: if (!(puzzle & 0x1240ll)) { 11188: if(!(puzzle & 0x1b40ll)) 11189: altDoSolve(7, 0x80ll, puzzle | 0x1b40ll, 11190: partsUsed | 0x400l); 11191: if(!(puzzle & 0x1201240ll)) 11192: altDoSolve(7, 0x80ll, puzzle | 0x1201240ll, 11193: partsUsed | 0x400l); 11194: if(!(puzzle & 0x241240ll)) 11195: altDoSolve(7, 0x80ll, puzzle | 0x241240ll, 11196: partsUsed | 0x400l); 11197: } 11198: if (!(puzzle & 0x40040040ll)) { 11199: if(!(puzzle & 0x60060040ll)) 11200: altDoSolve(7, 0x80ll, puzzle | 0x60060040ll, 11201: partsUsed | 0x400l); 11202: if(!(puzzle & 0x40240240ll)) 11203: altDoSolve(7, 0x80ll, puzzle | 0x40240240ll, 11204: partsUsed | 0x400l); 11205: if(!(puzzle & 0x240240040ll)) 11206: altDoSolve(7, 0x80ll, puzzle | 0x240240040ll, 11207: partsUsed | 0x400l); 11208: } 11209: if(!(puzzle & 0x1240240ll)) 11210: altDoSolve(7, 0x80ll, puzzle | 0x1240240ll, 11211: partsUsed | 0x400l); 11212: if(!(puzzle & 0x200240240ll)) 11213: altDoSolve(7, 0x80ll, puzzle | 0x200240240ll, 11214: partsUsed | 0x400l); 11215: altpiece11at6: 11216: break; 11217: case 7: 11218: if (partsUsed & 0x2l) goto altpiece2at7; 11219: if(!(puzzle & 0x10090480ll)) 11220: altDoSolve(8, 0x100ll, puzzle | 0x10090480ll, 11221: partsUsed | 0x2l); 11222: if(!(puzzle & 0x2400480080ll)) 11223: altDoSolve(8, 0x100ll, puzzle | 0x2400480080ll, 11224: partsUsed | 0x2l); 11225: if(!(puzzle & 0x2002400480ll)) 11226: altDoSolve(8, 0x100ll, puzzle | 0x2002400480ll, 11227: partsUsed | 0x2l); 11228: if(!(puzzle & 0x9980ll)) 11229: altDoSolve(8, 0x100ll, puzzle | 0x9980ll, 11230: partsUsed | 0x2l); 11231: if(!(puzzle & 0xcc80ll)) 11232: altDoSolve(8, 0x100ll, puzzle | 0xcc80ll, 11233: partsUsed | 0x2l); 11234: if(!(puzzle & 0x200300180ll)) 11235: altDoSolve(8, 0x100ll, puzzle | 0x200300180ll, 11236: partsUsed | 0x2l); 11237: if(!(puzzle & 0x300180080ll)) 11238: altDoSolve(8, 0x100ll, puzzle | 0x300180080ll, 11239: partsUsed | 0x2l); 11240: altpiece2at7: 11241: if (partsUsed & 0x4l) goto altpiece3at7; 11242: if (!(puzzle & 0x80080080ll)) { 11243: if(!(puzzle & 0x490080080ll)) 11244: altDoSolve(8, 0x100ll, puzzle | 0x490080080ll, 11245: partsUsed | 0x4l); 11246: if(!(puzzle & 0x82480080ll)) 11247: altDoSolve(8, 0x100ll, puzzle | 0x82480080ll, 11248: partsUsed | 0x4l); 11249: if(!(puzzle & 0x80380080ll)) 11250: altDoSolve(8, 0x100ll, puzzle | 0x80380080ll, 11251: partsUsed | 0x4l); 11252: } 11253: if(!(puzzle & 0x400402480ll)) 11254: altDoSolve(8, 0x100ll, puzzle | 0x400402480ll, 11255: partsUsed | 0x4l); 11256: if(!(puzzle & 0x3c80ll)) 11257: altDoSolve(8, 0x100ll, puzzle | 0x3c80ll, 11258: partsUsed | 0x4l); 11259: if(!(puzzle & 0x4b80ll)) 11260: altDoSolve(8, 0x100ll, puzzle | 0x4b80ll, 11261: partsUsed | 0x4l); 11262: if(!(puzzle & 0x100100380ll)) 11263: altDoSolve(8, 0x100ll, puzzle | 0x100100380ll, 11264: partsUsed | 0x4l); 11265: altpiece3at7: 11266: if (partsUsed & 0x8l) goto altpiece4at7; 11267: if(!(puzzle & 0x90080480ll)) 11268: altDoSolve(8, 0x100ll, puzzle | 0x90080480ll, 11269: partsUsed | 0x8l); 11270: if(!(puzzle & 0x2002480080ll)) 11271: altDoSolve(8, 0x100ll, puzzle | 0x2002480080ll, 11272: partsUsed | 0x8l); 11273: if(!(puzzle & 0x2400400480ll)) 11274: altDoSolve(8, 0x100ll, puzzle | 0x2400400480ll, 11275: partsUsed | 0x8l); 11276: if(!(puzzle & 0xc980ll)) 11277: altDoSolve(8, 0x100ll, puzzle | 0xc980ll, 11278: partsUsed | 0x8l); 11279: if(!(puzzle & 0x9c80ll)) 11280: altDoSolve(8, 0x100ll, puzzle | 0x9c80ll, 11281: partsUsed | 0x8l); 11282: if(!(puzzle & 0x200380080ll)) 11283: altDoSolve(8, 0x100ll, puzzle | 0x200380080ll, 11284: partsUsed | 0x8l); 11285: if(!(puzzle & 0x300100180ll)) 11286: altDoSolve(8, 0x100ll, puzzle | 0x300100180ll, 11287: partsUsed | 0x8l); 11288: altpiece4at7: 11289: if (partsUsed & 0x10l) goto altpiece5at7; 11290: if (!(puzzle & 0x80080080080ll)) { 11291: if(!(puzzle & 0x80480080480ll)) 11292: altDoSolve(8, 0x100ll, puzzle | 0x80480080480ll, 11293: partsUsed | 0x10l); 11294: if(!(puzzle & 0x180080180080ll)) 11295: altDoSolve(8, 0x100ll, puzzle | 0x180080180080ll, 11296: partsUsed | 0x10l); 11297: if(!(puzzle & 0x80180080180ll)) 11298: altDoSolve(8, 0x100ll, puzzle | 0x80180080180ll, 11299: partsUsed | 0x10l); 11300: } 11301: if(!(puzzle & 0x2492080ll)) 11302: altDoSolve(8, 0x100ll, puzzle | 0x2492080ll, 11303: partsUsed | 0x10l); 11304: if(!(puzzle & 0x90080090080ll)) 11305: altDoSolve(8, 0x100ll, puzzle | 0x90080090080ll, 11306: partsUsed | 0x10l); 11307: if(!(puzzle & 0x480080480080ll)) 11308: altDoSolve(8, 0x100ll, puzzle | 0x480080480080ll, 11309: partsUsed | 0x10l); 11310: if(!(puzzle & 0x400480400480ll)) 11311: altDoSolve(8, 0x100ll, puzzle | 0x400480400480ll, 11312: partsUsed | 0x10l); 11313: if(!(puzzle & 0x100180100180ll)) 11314: altDoSolve(8, 0x100ll, puzzle | 0x100180100180ll, 11315: partsUsed | 0x10l); 11316: altpiece5at7: 11317: if (partsUsed & 0x20l) goto altpiece6at7; 11318: if (!(puzzle & 0x80080080080ll)) { 11319: if(!(puzzle & 0x90080080080ll)) 11320: altDoSolve(8, 0x100ll, puzzle | 0x90080080080ll, 11321: partsUsed | 0x20l); 11322: if(!(puzzle & 0x80080080480ll)) 11323: altDoSolve(8, 0x100ll, puzzle | 0x80080080480ll, 11324: partsUsed | 0x20l); 11325: if(!(puzzle & 0x480080080080ll)) 11326: altDoSolve(8, 0x100ll, puzzle | 0x480080080080ll, 11327: partsUsed | 0x20l); 11328: if(!(puzzle & 0x80080080180ll)) 11329: altDoSolve(8, 0x100ll, puzzle | 0x80080080180ll, 11330: partsUsed | 0x20l); 11331: if(!(puzzle & 0x180080080080ll)) 11332: altDoSolve(8, 0x100ll, puzzle | 0x180080080080ll, 11333: partsUsed | 0x20l); 11334: } 11335: if(!(puzzle & 0x400400400480ll)) 11336: altDoSolve(8, 0x100ll, puzzle | 0x400400400480ll, 11337: partsUsed | 0x20l); 11338: if(!(puzzle & 0x100100100180ll)) 11339: altDoSolve(8, 0x100ll, puzzle | 0x100100100180ll, 11340: partsUsed | 0x20l); 11341: altpiece6at7: 11342: if (partsUsed & 0x40l) goto altpiece7at7; 11343: if (!(puzzle & 0x80080080080ll)) { 11344: if(!(puzzle & 0x80090080080ll)) 11345: altDoSolve(8, 0x100ll, puzzle | 0x80090080080ll, 11346: partsUsed | 0x40l); 11347: if(!(puzzle & 0x80080480080ll)) 11348: altDoSolve(8, 0x100ll, puzzle | 0x80080480080ll, 11349: partsUsed | 0x40l); 11350: if(!(puzzle & 0x80480080080ll)) 11351: altDoSolve(8, 0x100ll, puzzle | 0x80480080080ll, 11352: partsUsed | 0x40l); 11353: if(!(puzzle & 0x80080180080ll)) 11354: altDoSolve(8, 0x100ll, puzzle | 0x80080180080ll, 11355: partsUsed | 0x40l); 11356: if(!(puzzle & 0x80180080080ll)) 11357: altDoSolve(8, 0x100ll, puzzle | 0x80180080080ll, 11358: partsUsed | 0x40l); 11359: } 11360: if(!(puzzle & 0x2490080ll)) 11361: altDoSolve(8, 0x100ll, puzzle | 0x2490080ll, 11362: partsUsed | 0x40l); 11363: if(!(puzzle & 0x80080090080ll)) 11364: altDoSolve(8, 0x100ll, puzzle | 0x80080090080ll, 11365: partsUsed | 0x40l); 11366: altpiece7at7: 11367: if (partsUsed & 0x80l) goto altpiece8at7; 11368: if(!(puzzle & 0x480080480ll)) 11369: altDoSolve(8, 0x100ll, puzzle | 0x480080480ll, 11370: partsUsed | 0x80l); 11371: if(!(puzzle & 0x480400480ll)) 11372: altDoSolve(8, 0x100ll, puzzle | 0x480400480ll, 11373: partsUsed | 0x80l); 11374: if(!(puzzle & 0x2482080ll)) 11375: altDoSolve(8, 0x100ll, puzzle | 0x2482080ll, 11376: partsUsed | 0x80l); 11377: if(!(puzzle & 0x2082480ll)) 11378: altDoSolve(8, 0x100ll, puzzle | 0x2082480ll, 11379: partsUsed | 0x80l); 11380: if(!(puzzle & 0x1780ll)) 11381: altDoSolve(8, 0x100ll, puzzle | 0x1780ll, 11382: partsUsed | 0x80l); 11383: if(!(puzzle & 0x6580ll)) 11384: altDoSolve(8, 0x100ll, puzzle | 0x6580ll, 11385: partsUsed | 0x80l); 11386: if(!(puzzle & 0x6980ll)) 11387: altDoSolve(8, 0x100ll, puzzle | 0x6980ll, 11388: partsUsed | 0x80l); 11389: if(!(puzzle & 0x1e80ll)) 11390: altDoSolve(8, 0x100ll, puzzle | 0x1e80ll, 11391: partsUsed | 0x80l); 11392: if(!(puzzle & 0x180100180ll)) 11393: altDoSolve(8, 0x100ll, puzzle | 0x180100180ll, 11394: partsUsed | 0x80l); 11395: if(!(puzzle & 0x180080180ll)) 11396: altDoSolve(8, 0x100ll, puzzle | 0x180080180ll, 11397: partsUsed | 0x80l); 11398: if(!(puzzle & 0x380280ll)) 11399: altDoSolve(8, 0x100ll, puzzle | 0x380280ll, 11400: partsUsed | 0x80l); 11401: if(!(puzzle & 0x280380ll)) 11402: altDoSolve(8, 0x100ll, puzzle | 0x280380ll, 11403: partsUsed | 0x80l); 11404: altpiece8at7: 11405: if (partsUsed & 0x100l) goto altpiece9at7; 11406: if(!(puzzle & 0x120180ll)) 11407: altDoSolve(8, 0x100ll, puzzle | 0x120180ll, 11408: partsUsed | 0x100l); 11409: if(!(puzzle & 0x100580ll)) 11410: altDoSolve(8, 0x100ll, puzzle | 0x100580ll, 11411: partsUsed | 0x100l); 11412: if(!(puzzle & 0xb0080ll)) 11413: altDoSolve(8, 0x100ll, puzzle | 0xb0080ll, 11414: partsUsed | 0x100l); 11415: if(!(puzzle & 0x980080ll)) 11416: altDoSolve(8, 0x100ll, puzzle | 0x980080ll, 11417: partsUsed | 0x100l); 11418: if(!(puzzle & 0x480180ll)) 11419: altDoSolve(8, 0x100ll, puzzle | 0x480180ll, 11420: partsUsed | 0x100l); 11421: if(!(puzzle & 0xc00480ll)) 11422: altDoSolve(8, 0x100ll, puzzle | 0xc00480ll, 11423: partsUsed | 0x100l); 11424: if(!(puzzle & 0x80c80ll)) 11425: altDoSolve(8, 0x100ll, puzzle | 0x80c80ll, 11426: partsUsed | 0x100l); 11427: if(!(puzzle & 0x800980ll)) 11428: altDoSolve(8, 0x100ll, puzzle | 0x800980ll, 11429: partsUsed | 0x100l); 11430: altpiece9at7: 11431: if (partsUsed & 0x200l) goto altpiece10at7; 11432: if (!(puzzle & 0x80080080ll)) { 11433: if(!(puzzle & 0x80090480ll)) 11434: altDoSolve(8, 0x100ll, puzzle | 0x80090480ll, 11435: partsUsed | 0x200l); 11436: if(!(puzzle & 0x90480080ll)) 11437: altDoSolve(8, 0x100ll, puzzle | 0x90480080ll, 11438: partsUsed | 0x200l); 11439: if(!(puzzle & 0x480090080ll)) 11440: altDoSolve(8, 0x100ll, puzzle | 0x480090080ll, 11441: partsUsed | 0x200l); 11442: } 11443: if (!(puzzle & 0x480080ll)) { 11444: if(!(puzzle & 0x400490080ll)) 11445: altDoSolve(8, 0x100ll, puzzle | 0x400490080ll, 11446: partsUsed | 0x200l); 11447: if(!(puzzle & 0x10490080ll)) 11448: altDoSolve(8, 0x100ll, puzzle | 0x10490080ll, 11449: partsUsed | 0x200l); 11450: if(!(puzzle & 0x402480080ll)) 11451: altDoSolve(8, 0x100ll, puzzle | 0x402480080ll, 11452: partsUsed | 0x200l); 11453: } 11454: if(!(puzzle & 0x5980ll)) 11455: altDoSolve(8, 0x100ll, puzzle | 0x5980ll, 11456: partsUsed | 0x200l); 11457: if(!(puzzle & 0x5c80ll)) 11458: altDoSolve(8, 0x100ll, puzzle | 0x5c80ll, 11459: partsUsed | 0x200l); 11460: if(!(puzzle & 0x402400480ll)) 11461: altDoSolve(8, 0x100ll, puzzle | 0x402400480ll, 11462: partsUsed | 0x200l); 11463: if(!(puzzle & 0x100300180ll)) 11464: altDoSolve(8, 0x100ll, puzzle | 0x100300180ll, 11465: partsUsed | 0x200l); 11466: if(!(puzzle & 0x100380080ll)) 11467: altDoSolve(8, 0x100ll, puzzle | 0x100380080ll, 11468: partsUsed | 0x200l); 11469: altpiece10at7: 11470: if (partsUsed & 0x400l) goto altpiece11at7; 11471: if (!(puzzle & 0x400480ll)) { 11472: if(!(puzzle & 0x80480480ll)) 11473: altDoSolve(8, 0x100ll, puzzle | 0x80480480ll, 11474: partsUsed | 0x400l); 11475: if(!(puzzle & 0x2480480ll)) 11476: altDoSolve(8, 0x100ll, puzzle | 0x2480480ll, 11477: partsUsed | 0x400l); 11478: if(!(puzzle & 0x2402480ll)) 11479: altDoSolve(8, 0x100ll, puzzle | 0x2402480ll, 11480: partsUsed | 0x400l); 11481: if(!(puzzle & 0x482480ll)) 11482: altDoSolve(8, 0x100ll, puzzle | 0x482480ll, 11483: partsUsed | 0x400l); 11484: if(!(puzzle & 0x400480480ll)) 11485: altDoSolve(8, 0x100ll, puzzle | 0x400480480ll, 11486: partsUsed | 0x400l); 11487: } 11488: if (!(puzzle & 0x980ll)) { 11489: if(!(puzzle & 0x1b80ll)) 11490: altDoSolve(8, 0x100ll, puzzle | 0x1b80ll, 11491: partsUsed | 0x400l); 11492: if(!(puzzle & 0xf80ll)) 11493: altDoSolve(8, 0x100ll, puzzle | 0xf80ll, 11494: partsUsed | 0x400l); 11495: if(!(puzzle & 0x2d80ll)) 11496: altDoSolve(8, 0x100ll, puzzle | 0x2d80ll, 11497: partsUsed | 0x400l); 11498: if(!(puzzle & 0x4d80ll)) 11499: altDoSolve(8, 0x100ll, puzzle | 0x4d80ll, 11500: partsUsed | 0x400l); 11501: if(!(puzzle & 0x1d80ll)) 11502: altDoSolve(8, 0x100ll, puzzle | 0x1d80ll, 11503: partsUsed | 0x400l); 11504: } 11505: if (!(puzzle & 0x80080080ll)) { 11506: if(!(puzzle & 0x480480080ll)) 11507: altDoSolve(8, 0x100ll, puzzle | 0x480480080ll, 11508: partsUsed | 0x400l); 11509: if(!(puzzle & 0x80180180ll)) 11510: altDoSolve(8, 0x100ll, puzzle | 0x80180180ll, 11511: partsUsed | 0x400l); 11512: if(!(puzzle & 0x180180080ll)) 11513: altDoSolve(8, 0x100ll, puzzle | 0x180180080ll, 11514: partsUsed | 0x400l); 11515: } 11516: if (!(puzzle & 0x100180ll)) { 11517: if(!(puzzle & 0x100180180ll)) 11518: altDoSolve(8, 0x100ll, puzzle | 0x100180180ll, 11519: partsUsed | 0x400l); 11520: if(!(puzzle & 0x380180ll)) 11521: altDoSolve(8, 0x100ll, puzzle | 0x380180ll, 11522: partsUsed | 0x400l); 11523: if(!(puzzle & 0x180380ll)) 11524: altDoSolve(8, 0x100ll, puzzle | 0x180380ll, 11525: partsUsed | 0x400l); 11526: if(!(puzzle & 0x300380ll)) 11527: altDoSolve(8, 0x100ll, puzzle | 0x300380ll, 11528: partsUsed | 0x400l); 11529: } 11530: if(!(puzzle & 0x90090080ll)) 11531: altDoSolve(8, 0x100ll, puzzle | 0x90090080ll, 11532: partsUsed | 0x400l); 11533: if(!(puzzle & 0x490480ll)) 11534: altDoSolve(8, 0x100ll, puzzle | 0x490480ll, 11535: partsUsed | 0x400l); 11536: if(!(puzzle & 0x6c80ll)) 11537: altDoSolve(8, 0x100ll, puzzle | 0x6c80ll, 11538: partsUsed | 0x400l); 11539: altpiece11at7: 11540: break; 11541: case 8: 11542: if (partsUsed & 0x2l) goto altpiece2at8; 11543: if(!(puzzle & 0x20120900ll)) 11544: altDoSolve(9, 0x200ll, puzzle | 0x20120900ll, 11545: partsUsed | 0x2l); 11546: if(!(puzzle & 0x2f00ll)) 11547: altDoSolve(9, 0x200ll, puzzle | 0x2f00ll, 11548: partsUsed | 0x2l); 11549: if(!(puzzle & 0x80180300ll)) 11550: altDoSolve(9, 0x200ll, puzzle | 0x80180300ll, 11551: partsUsed | 0x2l); 11552: if(!(puzzle & 0x4800900100ll)) 11553: altDoSolve(9, 0x200ll, puzzle | 0x4800900100ll, 11554: partsUsed | 0x2l); 11555: if(!(puzzle & 0x4004800900ll)) 11556: altDoSolve(9, 0x200ll, puzzle | 0x4004800900ll, 11557: partsUsed | 0x2l); 11558: altpiece2at8: 11559: if (partsUsed & 0x4l) goto altpiece3at8; 11560: if (!(puzzle & 0x100100100ll)) { 11561: if(!(puzzle & 0x920100100ll)) 11562: altDoSolve(9, 0x200ll, puzzle | 0x920100100ll, 11563: partsUsed | 0x4l); 11564: if(!(puzzle & 0x380100100ll)) 11565: altDoSolve(9, 0x200ll, puzzle | 0x380100100ll, 11566: partsUsed | 0x4l); 11567: if(!(puzzle & 0x104900100ll)) 11568: altDoSolve(9, 0x200ll, puzzle | 0x104900100ll, 11569: partsUsed | 0x4l); 11570: } 11571: if(!(puzzle & 0xe900ll)) 11572: altDoSolve(9, 0x200ll, puzzle | 0xe900ll, 11573: partsUsed | 0x4l); 11574: if(!(puzzle & 0x800804900ll)) 11575: altDoSolve(9, 0x200ll, puzzle | 0x800804900ll, 11576: partsUsed | 0x4l); 11577: altpiece3at8: 11578: if (partsUsed & 0x8l) goto altpiece4at8; 11579: if(!(puzzle & 0x120100900ll)) 11580: altDoSolve(9, 0x200ll, puzzle | 0x120100900ll, 11581: partsUsed | 0x8l); 11582: if(!(puzzle & 0x180100300ll)) 11583: altDoSolve(9, 0x200ll, puzzle | 0x180100300ll, 11584: partsUsed | 0x8l); 11585: if(!(puzzle & 0x6b00ll)) 11586: altDoSolve(9, 0x200ll, puzzle | 0x6b00ll, 11587: partsUsed | 0x8l); 11588: if(!(puzzle & 0x4004900100ll)) 11589: altDoSolve(9, 0x200ll, puzzle | 0x4004900100ll, 11590: partsUsed | 0x8l); 11591: if(!(puzzle & 0x4800800900ll)) 11592: altDoSolve(9, 0x200ll, puzzle | 0x4800800900ll, 11593: partsUsed | 0x8l); 11594: altpiece4at8: 11595: if (partsUsed & 0x10l) goto altpiece5at8; 11596: if (!(puzzle & 0x100100100100ll)) { 11597: if(!(puzzle & 0x180100180100ll)) 11598: altDoSolve(9, 0x200ll, puzzle | 0x180100180100ll, 11599: partsUsed | 0x10l); 11600: if(!(puzzle & 0x900100900100ll)) 11601: altDoSolve(9, 0x200ll, puzzle | 0x900100900100ll, 11602: partsUsed | 0x10l); 11603: if(!(puzzle & 0x100900100900ll)) 11604: altDoSolve(9, 0x200ll, puzzle | 0x100900100900ll, 11605: partsUsed | 0x10l); 11606: if(!(puzzle & 0x300100300100ll)) 11607: altDoSolve(9, 0x200ll, puzzle | 0x300100300100ll, 11608: partsUsed | 0x10l); 11609: if(!(puzzle & 0x100300100300ll)) 11610: altDoSolve(9, 0x200ll, puzzle | 0x100300100300ll, 11611: partsUsed | 0x10l); 11612: } 11613: if(!(puzzle & 0x4924100ll)) 11614: altDoSolve(9, 0x200ll, puzzle | 0x4924100ll, 11615: partsUsed | 0x10l); 11616: if(!(puzzle & 0x120100120100ll)) 11617: altDoSolve(9, 0x200ll, puzzle | 0x120100120100ll, 11618: partsUsed | 0x10l); 11619: if(!(puzzle & 0x800900800900ll)) 11620: altDoSolve(9, 0x200ll, puzzle | 0x800900800900ll, 11621: partsUsed | 0x10l); 11622: if(!(puzzle & 0x200300200300ll)) 11623: altDoSolve(9, 0x200ll, puzzle | 0x200300200300ll, 11624: partsUsed | 0x10l); 11625: altpiece5at8: 11626: if (partsUsed & 0x20l) goto altpiece6at8; 11627: if (!(puzzle & 0x100100100100ll)) { 11628: if(!(puzzle & 0x120100100100ll)) 11629: altDoSolve(9, 0x200ll, puzzle | 0x120100100100ll, 11630: partsUsed | 0x20l); 11631: if(!(puzzle & 0x180100100100ll)) 11632: altDoSolve(9, 0x200ll, puzzle | 0x180100100100ll, 11633: partsUsed | 0x20l); 11634: if(!(puzzle & 0x100100100900ll)) 11635: altDoSolve(9, 0x200ll, puzzle | 0x100100100900ll, 11636: partsUsed | 0x20l); 11637: if(!(puzzle & 0x900100100100ll)) 11638: altDoSolve(9, 0x200ll, puzzle | 0x900100100100ll, 11639: partsUsed | 0x20l); 11640: if(!(puzzle & 0x100100100300ll)) 11641: altDoSolve(9, 0x200ll, puzzle | 0x100100100300ll, 11642: partsUsed | 0x20l); 11643: if(!(puzzle & 0x300100100100ll)) 11644: altDoSolve(9, 0x200ll, puzzle | 0x300100100100ll, 11645: partsUsed | 0x20l); 11646: } 11647: if(!(puzzle & 0x800800800900ll)) 11648: altDoSolve(9, 0x200ll, puzzle | 0x800800800900ll, 11649: partsUsed | 0x20l); 11650: if(!(puzzle & 0x200200200300ll)) 11651: altDoSolve(9, 0x200ll, puzzle | 0x200200200300ll, 11652: partsUsed | 0x20l); 11653: altpiece6at8: 11654: if (partsUsed & 0x40l) goto altpiece7at8; 11655: if (!(puzzle & 0x100100100100ll)) { 11656: if(!(puzzle & 0x100120100100ll)) 11657: altDoSolve(9, 0x200ll, puzzle | 0x100120100100ll, 11658: partsUsed | 0x40l); 11659: if(!(puzzle & 0x100100180100ll)) 11660: altDoSolve(9, 0x200ll, puzzle | 0x100100180100ll, 11661: partsUsed | 0x40l); 11662: if(!(puzzle & 0x100180100100ll)) 11663: altDoSolve(9, 0x200ll, puzzle | 0x100180100100ll, 11664: partsUsed | 0x40l); 11665: if(!(puzzle & 0x100100900100ll)) 11666: altDoSolve(9, 0x200ll, puzzle | 0x100100900100ll, 11667: partsUsed | 0x40l); 11668: if(!(puzzle & 0x100900100100ll)) 11669: altDoSolve(9, 0x200ll, puzzle | 0x100900100100ll, 11670: partsUsed | 0x40l); 11671: if(!(puzzle & 0x100100300100ll)) 11672: altDoSolve(9, 0x200ll, puzzle | 0x100100300100ll, 11673: partsUsed | 0x40l); 11674: if(!(puzzle & 0x100300100100ll)) 11675: altDoSolve(9, 0x200ll, puzzle | 0x100300100100ll, 11676: partsUsed | 0x40l); 11677: } 11678: if(!(puzzle & 0x4920100ll)) 11679: altDoSolve(9, 0x200ll, puzzle | 0x4920100ll, 11680: partsUsed | 0x40l); 11681: if(!(puzzle & 0x100100120100ll)) 11682: altDoSolve(9, 0x200ll, puzzle | 0x100100120100ll, 11683: partsUsed | 0x40l); 11684: altpiece7at8: 11685: if (partsUsed & 0x80l) goto altpiece8at8; 11686: if(!(puzzle & 0x900100900ll)) 11687: altDoSolve(9, 0x200ll, puzzle | 0x900100900ll, 11688: partsUsed | 0x80l); 11689: if(!(puzzle & 0x900800900ll)) 11690: altDoSolve(9, 0x200ll, puzzle | 0x900800900ll, 11691: partsUsed | 0x80l); 11692: if(!(puzzle & 0x4904100ll)) 11693: altDoSolve(9, 0x200ll, puzzle | 0x4904100ll, 11694: partsUsed | 0x80l); 11695: if(!(puzzle & 0x4104900ll)) 11696: altDoSolve(9, 0x200ll, puzzle | 0x4104900ll, 11697: partsUsed | 0x80l); 11698: if(!(puzzle & 0xcb00ll)) 11699: altDoSolve(9, 0x200ll, puzzle | 0xcb00ll, 11700: partsUsed | 0x80l); 11701: if(!(puzzle & 0xd300ll)) 11702: altDoSolve(9, 0x200ll, puzzle | 0xd300ll, 11703: partsUsed | 0x80l); 11704: if(!(puzzle & 0x300200300ll)) 11705: altDoSolve(9, 0x200ll, puzzle | 0x300200300ll, 11706: partsUsed | 0x80l); 11707: if(!(puzzle & 0x300100300ll)) 11708: altDoSolve(9, 0x200ll, puzzle | 0x300100300ll, 11709: partsUsed | 0x80l); 11710: altpiece8at8: 11711: if (partsUsed & 0x100l) goto altpiece9at8; 11712: if(!(puzzle & 0x190100ll)) 11713: altDoSolve(9, 0x200ll, puzzle | 0x190100ll, 11714: partsUsed | 0x100l); 11715: if(!(puzzle & 0x180900ll)) 11716: altDoSolve(9, 0x200ll, puzzle | 0x180900ll, 11717: partsUsed | 0x100l); 11718: if(!(puzzle & 0x240300ll)) 11719: altDoSolve(9, 0x200ll, puzzle | 0x240300ll, 11720: partsUsed | 0x100l); 11721: if(!(puzzle & 0x200b00ll)) 11722: altDoSolve(9, 0x200ll, puzzle | 0x200b00ll, 11723: partsUsed | 0x100l); 11724: if(!(puzzle & 0x160100ll)) 11725: altDoSolve(9, 0x200ll, puzzle | 0x160100ll, 11726: partsUsed | 0x100l); 11727: if(!(puzzle & 0x400d00ll)) 11728: altDoSolve(9, 0x200ll, puzzle | 0x400d00ll, 11729: partsUsed | 0x100l); 11730: if(!(puzzle & 0xd00100ll)) 11731: altDoSolve(9, 0x200ll, puzzle | 0xd00100ll, 11732: partsUsed | 0x100l); 11733: if(!(puzzle & 0x900300ll)) 11734: altDoSolve(9, 0x200ll, puzzle | 0x900300ll, 11735: partsUsed | 0x100l); 11736: if(!(puzzle & 0x1300100ll)) 11737: altDoSolve(9, 0x200ll, puzzle | 0x1300100ll, 11738: partsUsed | 0x100l); 11739: if(!(puzzle & 0x1800900ll)) 11740: altDoSolve(9, 0x200ll, puzzle | 0x1800900ll, 11741: partsUsed | 0x100l); 11742: if(!(puzzle & 0x101900ll)) 11743: altDoSolve(9, 0x200ll, puzzle | 0x101900ll, 11744: partsUsed | 0x100l); 11745: if(!(puzzle & 0x1001300ll)) 11746: altDoSolve(9, 0x200ll, puzzle | 0x1001300ll, 11747: partsUsed | 0x100l); 11748: altpiece9at8: 11749: if (partsUsed & 0x200l) goto altpiece10at8; 11750: if (!(puzzle & 0x100100100ll)) { 11751: if(!(puzzle & 0x100120900ll)) 11752: altDoSolve(9, 0x200ll, puzzle | 0x100120900ll, 11753: partsUsed | 0x200l); 11754: if(!(puzzle & 0x120900100ll)) 11755: altDoSolve(9, 0x200ll, puzzle | 0x120900100ll, 11756: partsUsed | 0x200l); 11757: if(!(puzzle & 0x900120100ll)) 11758: altDoSolve(9, 0x200ll, puzzle | 0x900120100ll, 11759: partsUsed | 0x200l); 11760: if(!(puzzle & 0x100180300ll)) 11761: altDoSolve(9, 0x200ll, puzzle | 0x100180300ll, 11762: partsUsed | 0x200l); 11763: if(!(puzzle & 0x300180100ll)) 11764: altDoSolve(9, 0x200ll, puzzle | 0x300180100ll, 11765: partsUsed | 0x200l); 11766: if(!(puzzle & 0x180300100ll)) 11767: altDoSolve(9, 0x200ll, puzzle | 0x180300100ll, 11768: partsUsed | 0x200l); 11769: } 11770: if (!(puzzle & 0x900100ll)) { 11771: if(!(puzzle & 0x800920100ll)) 11772: altDoSolve(9, 0x200ll, puzzle | 0x800920100ll, 11773: partsUsed | 0x200l); 11774: if(!(puzzle & 0x20920100ll)) 11775: altDoSolve(9, 0x200ll, puzzle | 0x20920100ll, 11776: partsUsed | 0x200l); 11777: if(!(puzzle & 0x804900100ll)) 11778: altDoSolve(9, 0x200ll, puzzle | 0x804900100ll, 11779: partsUsed | 0x200l); 11780: } 11781: if (!(puzzle & 0xd00ll)) { 11782: if(!(puzzle & 0x9d00ll)) 11783: altDoSolve(9, 0x200ll, puzzle | 0x9d00ll, 11784: partsUsed | 0x200l); 11785: if(!(puzzle & 0x3d00ll)) 11786: altDoSolve(9, 0x200ll, puzzle | 0x3d00ll, 11787: partsUsed | 0x200l); 11788: if(!(puzzle & 0x4f00ll)) 11789: altDoSolve(9, 0x200ll, puzzle | 0x4f00ll, 11790: partsUsed | 0x200l); 11791: if(!(puzzle & 0xcd00ll)) 11792: altDoSolve(9, 0x200ll, puzzle | 0xcd00ll, 11793: partsUsed | 0x200l); 11794: } 11795: if(!(puzzle & 0x7900ll)) 11796: altDoSolve(9, 0x200ll, puzzle | 0x7900ll, 11797: partsUsed | 0x200l); 11798: if(!(puzzle & 0x80380100ll)) 11799: altDoSolve(9, 0x200ll, puzzle | 0x80380100ll, 11800: partsUsed | 0x200l); 11801: if(!(puzzle & 0x200380100ll)) 11802: altDoSolve(9, 0x200ll, puzzle | 0x200380100ll, 11803: partsUsed | 0x200l); 11804: if(!(puzzle & 0x804800900ll)) 11805: altDoSolve(9, 0x200ll, puzzle | 0x804800900ll, 11806: partsUsed | 0x200l); 11807: altpiece10at8: 11808: if (partsUsed & 0x400l) goto altpiece11at8; 11809: if (!(puzzle & 0x800900ll)) { 11810: if(!(puzzle & 0x100900900ll)) 11811: altDoSolve(9, 0x200ll, puzzle | 0x100900900ll, 11812: partsUsed | 0x400l); 11813: if(!(puzzle & 0x4900900ll)) 11814: altDoSolve(9, 0x200ll, puzzle | 0x4900900ll, 11815: partsUsed | 0x400l); 11816: if(!(puzzle & 0x4804900ll)) 11817: altDoSolve(9, 0x200ll, puzzle | 0x4804900ll, 11818: partsUsed | 0x400l); 11819: if(!(puzzle & 0x904900ll)) 11820: altDoSolve(9, 0x200ll, puzzle | 0x904900ll, 11821: partsUsed | 0x400l); 11822: if(!(puzzle & 0x800900900ll)) 11823: altDoSolve(9, 0x200ll, puzzle | 0x800900900ll, 11824: partsUsed | 0x400l); 11825: } 11826: if (!(puzzle & 0x100100100ll)) { 11827: if(!(puzzle & 0x900900100ll)) 11828: altDoSolve(9, 0x200ll, puzzle | 0x900900100ll, 11829: partsUsed | 0x400l); 11830: if(!(puzzle & 0x100300300ll)) 11831: altDoSolve(9, 0x200ll, puzzle | 0x100300300ll, 11832: partsUsed | 0x400l); 11833: if(!(puzzle & 0x300300100ll)) 11834: altDoSolve(9, 0x200ll, puzzle | 0x300300100ll, 11835: partsUsed | 0x400l); 11836: } 11837: if (!(puzzle & 0x1900ll)) { 11838: if(!(puzzle & 0x5b00ll)) 11839: altDoSolve(9, 0x200ll, puzzle | 0x5b00ll, 11840: partsUsed | 0x400l); 11841: if(!(puzzle & 0x9b00ll)) 11842: altDoSolve(9, 0x200ll, puzzle | 0x9b00ll, 11843: partsUsed | 0x400l); 11844: if(!(puzzle & 0xd900ll)) 11845: altDoSolve(9, 0x200ll, puzzle | 0xd900ll, 11846: partsUsed | 0x400l); 11847: } 11848: if(!(puzzle & 0x120120100ll)) 11849: altDoSolve(9, 0x200ll, puzzle | 0x120120100ll, 11850: partsUsed | 0x400l); 11851: if(!(puzzle & 0x920900ll)) 11852: altDoSolve(9, 0x200ll, puzzle | 0x920900ll, 11853: partsUsed | 0x400l); 11854: if(!(puzzle & 0x1f00ll)) 11855: altDoSolve(9, 0x200ll, puzzle | 0x1f00ll, 11856: partsUsed | 0x400l); 11857: if(!(puzzle & 0x6d00ll)) 11858: altDoSolve(9, 0x200ll, puzzle | 0x6d00ll, 11859: partsUsed | 0x400l); 11860: if(!(puzzle & 0x380300ll)) 11861: altDoSolve(9, 0x200ll, puzzle | 0x380300ll, 11862: partsUsed | 0x400l); 11863: if(!(puzzle & 0x180180100ll)) 11864: altDoSolve(9, 0x200ll, puzzle | 0x180180100ll, 11865: partsUsed | 0x400l); 11866: if(!(puzzle & 0x200300300ll)) 11867: altDoSolve(9, 0x200ll, puzzle | 0x200300300ll, 11868: partsUsed | 0x400l); 11869: altpiece11at8: 11870: break; 11871: case 9: 11872: if (partsUsed & 0x2l) goto altpiece2at9; 11873: if(!(puzzle & 0x40241200ll)) 11874: altDoSolve(10, 0x400ll, puzzle | 0x40241200ll, 11875: partsUsed | 0x2l); 11876: if(!(puzzle & 0x7a00ll)) 11877: altDoSolve(10, 0x400ll, puzzle | 0x7a00ll, 11878: partsUsed | 0x2l); 11879: if(!(puzzle & 0x180300200ll)) 11880: altDoSolve(10, 0x400ll, puzzle | 0x180300200ll, 11881: partsUsed | 0x2l); 11882: if(!(puzzle & 0x9001200200ll)) 11883: altDoSolve(10, 0x400ll, puzzle | 0x9001200200ll, 11884: partsUsed | 0x2l); 11885: if(!(puzzle & 0x8009001200ll)) 11886: altDoSolve(10, 0x400ll, puzzle | 0x8009001200ll, 11887: partsUsed | 0x2l); 11888: altpiece2at9: 11889: if (partsUsed & 0x4l) goto altpiece3at9; 11890: if (!(puzzle & 0x200200200ll)) { 11891: if(!(puzzle & 0x1240200200ll)) 11892: altDoSolve(10, 0x400ll, puzzle | 0x1240200200ll, 11893: partsUsed | 0x4l); 11894: if(!(puzzle & 0x200380200ll)) 11895: altDoSolve(10, 0x400ll, puzzle | 0x200380200ll, 11896: partsUsed | 0x4l); 11897: if(!(puzzle & 0x209200200ll)) 11898: altDoSolve(10, 0x400ll, puzzle | 0x209200200ll, 11899: partsUsed | 0x4l); 11900: } 11901: if(!(puzzle & 0x9e00ll)) 11902: altDoSolve(10, 0x400ll, puzzle | 0x9e00ll, 11903: partsUsed | 0x4l); 11904: if(!(puzzle & 0x1001009200ll)) 11905: altDoSolve(10, 0x400ll, puzzle | 0x1001009200ll, 11906: partsUsed | 0x4l); 11907: altpiece3at9: 11908: if (partsUsed & 0x8l) goto altpiece4at9; 11909: if(!(puzzle & 0x240201200ll)) 11910: altDoSolve(10, 0x400ll, puzzle | 0x240201200ll, 11911: partsUsed | 0x8l); 11912: if(!(puzzle & 0x3e00ll)) 11913: altDoSolve(10, 0x400ll, puzzle | 0x3e00ll, 11914: partsUsed | 0x8l); 11915: if(!(puzzle & 0x80380200ll)) 11916: altDoSolve(10, 0x400ll, puzzle | 0x80380200ll, 11917: partsUsed | 0x8l); 11918: if(!(puzzle & 0x8009200200ll)) 11919: altDoSolve(10, 0x400ll, puzzle | 0x8009200200ll, 11920: partsUsed | 0x8l); 11921: if(!(puzzle & 0x9001001200ll)) 11922: altDoSolve(10, 0x400ll, puzzle | 0x9001001200ll, 11923: partsUsed | 0x8l); 11924: altpiece4at9: 11925: if (partsUsed & 0x10l) goto altpiece5at9; 11926: if (!(puzzle & 0x200200200200ll)) { 11927: if(!(puzzle & 0x300200300200ll)) 11928: altDoSolve(10, 0x400ll, puzzle | 0x300200300200ll, 11929: partsUsed | 0x10l); 11930: if(!(puzzle & 0x1200201200200ll)) 11931: altDoSolve(10, 0x400ll, puzzle | 0x1200201200200ll, 11932: partsUsed | 0x10l); 11933: if(!(puzzle & 0x201200201200ll)) 11934: altDoSolve(10, 0x400ll, puzzle | 0x201200201200ll, 11935: partsUsed | 0x10l); 11936: } 11937: if(!(puzzle & 0x9248200ll)) 11938: altDoSolve(10, 0x400ll, puzzle | 0x9248200ll, 11939: partsUsed | 0x10l); 11940: if(!(puzzle & 0x240200240200ll)) 11941: altDoSolve(10, 0x400ll, puzzle | 0x240200240200ll, 11942: partsUsed | 0x10l); 11943: if(!(puzzle & 0x1001201001200ll)) 11944: altDoSolve(10, 0x400ll, puzzle | 0x1001201001200ll, 11945: partsUsed | 0x10l); 11946: altpiece5at9: 11947: if (partsUsed & 0x20l) goto altpiece6at9; 11948: if (!(puzzle & 0x200200200200ll)) { 11949: if(!(puzzle & 0x240200200200ll)) 11950: altDoSolve(10, 0x400ll, puzzle | 0x240200200200ll, 11951: partsUsed | 0x20l); 11952: if(!(puzzle & 0x300200200200ll)) 11953: altDoSolve(10, 0x400ll, puzzle | 0x300200200200ll, 11954: partsUsed | 0x20l); 11955: if(!(puzzle & 0x200200201200ll)) 11956: altDoSolve(10, 0x400ll, puzzle | 0x200200201200ll, 11957: partsUsed | 0x20l); 11958: if(!(puzzle & 0x1200200200200ll)) 11959: altDoSolve(10, 0x400ll, puzzle | 0x1200200200200ll, 11960: partsUsed | 0x20l); 11961: } 11962: if(!(puzzle & 0x1001001001200ll)) 11963: altDoSolve(10, 0x400ll, puzzle | 0x1001001001200ll, 11964: partsUsed | 0x20l); 11965: altpiece6at9: 11966: if (partsUsed & 0x40l) goto altpiece7at9; 11967: if (!(puzzle & 0x200200200200ll)) { 11968: if(!(puzzle & 0x200240200200ll)) 11969: altDoSolve(10, 0x400ll, puzzle | 0x200240200200ll, 11970: partsUsed | 0x40l); 11971: if(!(puzzle & 0x200200300200ll)) 11972: altDoSolve(10, 0x400ll, puzzle | 0x200200300200ll, 11973: partsUsed | 0x40l); 11974: if(!(puzzle & 0x200300200200ll)) 11975: altDoSolve(10, 0x400ll, puzzle | 0x200300200200ll, 11976: partsUsed | 0x40l); 11977: if(!(puzzle & 0x200201200200ll)) 11978: altDoSolve(10, 0x400ll, puzzle | 0x200201200200ll, 11979: partsUsed | 0x40l); 11980: if(!(puzzle & 0x201200200200ll)) 11981: altDoSolve(10, 0x400ll, puzzle | 0x201200200200ll, 11982: partsUsed | 0x40l); 11983: } 11984: if(!(puzzle & 0x9240200ll)) 11985: altDoSolve(10, 0x400ll, puzzle | 0x9240200ll, 11986: partsUsed | 0x40l); 11987: if(!(puzzle & 0x200200240200ll)) 11988: altDoSolve(10, 0x400ll, puzzle | 0x200200240200ll, 11989: partsUsed | 0x40l); 11990: altpiece7at9: 11991: if (partsUsed & 0x80l) goto altpiece8at9; 11992: if(!(puzzle & 0x1200201200ll)) 11993: altDoSolve(10, 0x400ll, puzzle | 0x1200201200ll, 11994: partsUsed | 0x80l); 11995: if(!(puzzle & 0x1201001200ll)) 11996: altDoSolve(10, 0x400ll, puzzle | 0x1201001200ll, 11997: partsUsed | 0x80l); 11998: if(!(puzzle & 0x9208200ll)) 11999: altDoSolve(10, 0x400ll, puzzle | 0x9208200ll, 12000: partsUsed | 0x80l); 12001: if(!(puzzle & 0x8209200ll)) 12002: altDoSolve(10, 0x400ll, puzzle | 0x8209200ll, 12003: partsUsed | 0x80l); 12004: altpiece8at9: 12005: if (partsUsed & 0x100l) goto altpiece9at9; 12006: if(!(puzzle & 0x320200ll)) 12007: altDoSolve(10, 0x400ll, puzzle | 0x320200ll, 12008: partsUsed | 0x100l); 12009: if(!(puzzle & 0x301200ll)) 12010: altDoSolve(10, 0x400ll, puzzle | 0x301200ll, 12011: partsUsed | 0x100l); 12012: if(!(puzzle & 0x801a00ll)) 12013: altDoSolve(10, 0x400ll, puzzle | 0x801a00ll, 12014: partsUsed | 0x100l); 12015: if(!(puzzle & 0x1a00200ll)) 12016: altDoSolve(10, 0x400ll, puzzle | 0x1a00200ll, 12017: partsUsed | 0x100l); 12018: altpiece9at9: 12019: if (partsUsed & 0x200l) goto altpiece10at9; 12020: if (!(puzzle & 0x200200200ll)) { 12021: if(!(puzzle & 0x200241200ll)) 12022: altDoSolve(10, 0x400ll, puzzle | 0x200241200ll, 12023: partsUsed | 0x200l); 12024: if(!(puzzle & 0x241200200ll)) 12025: altDoSolve(10, 0x400ll, puzzle | 0x241200200ll, 12026: partsUsed | 0x200l); 12027: if(!(puzzle & 0x1200240200ll)) 12028: altDoSolve(10, 0x400ll, puzzle | 0x1200240200ll, 12029: partsUsed | 0x200l); 12030: } 12031: if (!(puzzle & 0x1200200ll)) { 12032: if(!(puzzle & 0x1001240200ll)) 12033: altDoSolve(10, 0x400ll, puzzle | 0x1001240200ll, 12034: partsUsed | 0x200l); 12035: if(!(puzzle & 0x41240200ll)) 12036: altDoSolve(10, 0x400ll, puzzle | 0x41240200ll, 12037: partsUsed | 0x200l); 12038: if(!(puzzle & 0x1009200200ll)) 12039: altDoSolve(10, 0x400ll, puzzle | 0x1009200200ll, 12040: partsUsed | 0x200l); 12041: } 12042: if(!(puzzle & 0x5e00ll)) 12043: altDoSolve(10, 0x400ll, puzzle | 0x5e00ll, 12044: partsUsed | 0x200l); 12045: if(!(puzzle & 0x100380200ll)) 12046: altDoSolve(10, 0x400ll, puzzle | 0x100380200ll, 12047: partsUsed | 0x200l); 12048: if(!(puzzle & 0x1009001200ll)) 12049: altDoSolve(10, 0x400ll, puzzle | 0x1009001200ll, 12050: partsUsed | 0x200l); 12051: altpiece10at9: 12052: if (partsUsed & 0x400l) goto altpiece11at9; 12053: if (!(puzzle & 0x9200ll)) { 12054: if(!(puzzle & 0xda00ll)) 12055: altDoSolve(10, 0x400ll, puzzle | 0xda00ll, 12056: partsUsed | 0x400l); 12057: if(!(puzzle & 0x9009200ll)) 12058: altDoSolve(10, 0x400ll, puzzle | 0x9009200ll, 12059: partsUsed | 0x400l); 12060: if(!(puzzle & 0x1209200ll)) 12061: altDoSolve(10, 0x400ll, puzzle | 0x1209200ll, 12062: partsUsed | 0x400l); 12063: } 12064: if (!(puzzle & 0x200200200ll)) { 12065: if(!(puzzle & 0x300300200ll)) 12066: altDoSolve(10, 0x400ll, puzzle | 0x300300200ll, 12067: partsUsed | 0x400l); 12068: if(!(puzzle & 0x201201200ll)) 12069: altDoSolve(10, 0x400ll, puzzle | 0x201201200ll, 12070: partsUsed | 0x400l); 12071: if(!(puzzle & 0x1201200200ll)) 12072: altDoSolve(10, 0x400ll, puzzle | 0x1201200200ll, 12073: partsUsed | 0x400l); 12074: } 12075: if(!(puzzle & 0x240240200ll)) 12076: altDoSolve(10, 0x400ll, puzzle | 0x240240200ll, 12077: partsUsed | 0x400l); 12078: if(!(puzzle & 0x1241200ll)) 12079: altDoSolve(10, 0x400ll, puzzle | 0x1241200ll, 12080: partsUsed | 0x400l); 12081: if(!(puzzle & 0x9201200ll)) 12082: altDoSolve(10, 0x400ll, puzzle | 0x9201200ll, 12083: partsUsed | 0x400l); 12084: if(!(puzzle & 0x1001201200ll)) 12085: altDoSolve(10, 0x400ll, puzzle | 0x1001201200ll, 12086: partsUsed | 0x400l); 12087: altpiece11at9: 12088: break; 12089: case 10: 12090: if (partsUsed & 0x2l) goto altpiece2at10; 12091: if(!(puzzle & 0x90480400ll)) 12092: altDoSolve(11, 0x800ll, puzzle | 0x90480400ll, 12093: partsUsed | 0x2l); 12094: if(!(puzzle & 0x80482400ll)) 12095: altDoSolve(11, 0x800ll, puzzle | 0x80482400ll, 12096: partsUsed | 0x2l); 12097: if(!(puzzle & 0x1001800c00ll)) 12098: altDoSolve(11, 0x800ll, puzzle | 0x1001800c00ll, 12099: partsUsed | 0x2l); 12100: if(!(puzzle & 0x1800c00400ll)) 12101: altDoSolve(11, 0x800ll, puzzle | 0x1800c00400ll, 12102: partsUsed | 0x2l); 12103: altpiece2at10: 12104: if (partsUsed & 0x4l) goto altpiece3at10; 12105: if (!(puzzle & 0x400400400ll)) { 12106: if(!(puzzle & 0x400490400ll)) 12107: altDoSolve(11, 0x800ll, puzzle | 0x400490400ll, 12108: partsUsed | 0x4l); 12109: if(!(puzzle & 0x2480400400ll)) 12110: altDoSolve(11, 0x800ll, puzzle | 0x2480400400ll, 12111: partsUsed | 0x4l); 12112: if(!(puzzle & 0x401c00400ll)) 12113: altDoSolve(11, 0x800ll, puzzle | 0x401c00400ll, 12114: partsUsed | 0x4l); 12115: } 12116: if(!(puzzle & 0x800801c00ll)) 12117: altDoSolve(11, 0x800ll, puzzle | 0x800801c00ll, 12118: partsUsed | 0x4l); 12119: altpiece3at10: 12120: if (partsUsed & 0x8l) goto altpiece4at10; 12121: if(!(puzzle & 0x10490400ll)) 12122: altDoSolve(11, 0x800ll, puzzle | 0x10490400ll, 12123: partsUsed | 0x8l); 12124: if(!(puzzle & 0x480402400ll)) 12125: altDoSolve(11, 0x800ll, puzzle | 0x480402400ll, 12126: partsUsed | 0x8l); 12127: if(!(puzzle & 0x1001c00400ll)) 12128: altDoSolve(11, 0x800ll, puzzle | 0x1001c00400ll, 12129: partsUsed | 0x8l); 12130: if(!(puzzle & 0x1800800c00ll)) 12131: altDoSolve(11, 0x800ll, puzzle | 0x1800800c00ll, 12132: partsUsed | 0x8l); 12133: altpiece4at10: 12134: if (partsUsed & 0x10l) goto altpiece5at10; 12135: if (!(puzzle & 0x400400400400ll)) { 12136: if(!(puzzle & 0x480400480400ll)) 12137: altDoSolve(11, 0x800ll, puzzle | 0x480400480400ll, 12138: partsUsed | 0x10l); 12139: if(!(puzzle & 0x2400402400400ll)) 12140: altDoSolve(11, 0x800ll, puzzle | 0x2400402400400ll, 12141: partsUsed | 0x10l); 12142: if(!(puzzle & 0x402400402400ll)) 12143: altDoSolve(11, 0x800ll, puzzle | 0x402400402400ll, 12144: partsUsed | 0x10l); 12145: if(!(puzzle & 0xc00400c00400ll)) 12146: altDoSolve(11, 0x800ll, puzzle | 0xc00400c00400ll, 12147: partsUsed | 0x10l); 12148: if(!(puzzle & 0x400c00400c00ll)) 12149: altDoSolve(11, 0x800ll, puzzle | 0x400c00400c00ll, 12150: partsUsed | 0x10l); 12151: } 12152: if(!(puzzle & 0x2002402002400ll)) 12153: altDoSolve(11, 0x800ll, puzzle | 0x2002402002400ll, 12154: partsUsed | 0x10l); 12155: if(!(puzzle & 0x800c00800c00ll)) 12156: altDoSolve(11, 0x800ll, puzzle | 0x800c00800c00ll, 12157: partsUsed | 0x10l); 12158: altpiece5at10: 12159: if (partsUsed & 0x20l) goto altpiece6at10; 12160: if (!(puzzle & 0x400400400400ll)) { 12161: if(!(puzzle & 0x480400400400ll)) 12162: altDoSolve(11, 0x800ll, puzzle | 0x480400400400ll, 12163: partsUsed | 0x20l); 12164: if(!(puzzle & 0x400400402400ll)) 12165: altDoSolve(11, 0x800ll, puzzle | 0x400400402400ll, 12166: partsUsed | 0x20l); 12167: if(!(puzzle & 0x2400400400400ll)) 12168: altDoSolve(11, 0x800ll, puzzle | 0x2400400400400ll, 12169: partsUsed | 0x20l); 12170: if(!(puzzle & 0x400400400c00ll)) 12171: altDoSolve(11, 0x800ll, puzzle | 0x400400400c00ll, 12172: partsUsed | 0x20l); 12173: if(!(puzzle & 0xc00400400400ll)) 12174: altDoSolve(11, 0x800ll, puzzle | 0xc00400400400ll, 12175: partsUsed | 0x20l); 12176: } 12177: if(!(puzzle & 0x2002002002400ll)) 12178: altDoSolve(11, 0x800ll, puzzle | 0x2002002002400ll, 12179: partsUsed | 0x20l); 12180: if(!(puzzle & 0x800800800c00ll)) 12181: altDoSolve(11, 0x800ll, puzzle | 0x800800800c00ll, 12182: partsUsed | 0x20l); 12183: altpiece6at10: 12184: if (partsUsed & 0x40l) goto altpiece7at10; 12185: if (!(puzzle & 0x400400400400ll)) { 12186: if(!(puzzle & 0x400480400400ll)) 12187: altDoSolve(11, 0x800ll, puzzle | 0x400480400400ll, 12188: partsUsed | 0x40l); 12189: if(!(puzzle & 0x400402400400ll)) 12190: altDoSolve(11, 0x800ll, puzzle | 0x400402400400ll, 12191: partsUsed | 0x40l); 12192: if(!(puzzle & 0x402400400400ll)) 12193: altDoSolve(11, 0x800ll, puzzle | 0x402400400400ll, 12194: partsUsed | 0x40l); 12195: if(!(puzzle & 0x400400c00400ll)) 12196: altDoSolve(11, 0x800ll, puzzle | 0x400400c00400ll, 12197: partsUsed | 0x40l); 12198: if(!(puzzle & 0x400c00400400ll)) 12199: altDoSolve(11, 0x800ll, puzzle | 0x400c00400400ll, 12200: partsUsed | 0x40l); 12201: } 12202: if(!(puzzle & 0x2490400ll)) 12203: altDoSolve(11, 0x800ll, puzzle | 0x2490400ll, 12204: partsUsed | 0x40l); 12205: if(!(puzzle & 0x400400480400ll)) 12206: altDoSolve(11, 0x800ll, puzzle | 0x400400480400ll, 12207: partsUsed | 0x40l); 12208: altpiece7at10: 12209: if (partsUsed & 0x80l) goto altpiece8at10; 12210: if(!(puzzle & 0x2400402400ll)) 12211: altDoSolve(11, 0x800ll, puzzle | 0x2400402400ll, 12212: partsUsed | 0x80l); 12213: if(!(puzzle & 0x2402002400ll)) 12214: altDoSolve(11, 0x800ll, puzzle | 0x2402002400ll, 12215: partsUsed | 0x80l); 12216: if(!(puzzle & 0xbc00ll)) 12217: altDoSolve(11, 0x800ll, puzzle | 0xbc00ll, 12218: partsUsed | 0x80l); 12219: if(!(puzzle & 0xf400ll)) 12220: altDoSolve(11, 0x800ll, puzzle | 0xf400ll, 12221: partsUsed | 0x80l); 12222: if(!(puzzle & 0xc00800c00ll)) 12223: altDoSolve(11, 0x800ll, puzzle | 0xc00800c00ll, 12224: partsUsed | 0x80l); 12225: if(!(puzzle & 0xc00400c00ll)) 12226: altDoSolve(11, 0x800ll, puzzle | 0xc00400c00ll, 12227: partsUsed | 0x80l); 12228: if(!(puzzle & 0x1c01400ll)) 12229: altDoSolve(11, 0x800ll, puzzle | 0x1c01400ll, 12230: partsUsed | 0x80l); 12231: if(!(puzzle & 0x1401c00ll)) 12232: altDoSolve(11, 0x800ll, puzzle | 0x1401c00ll, 12233: partsUsed | 0x80l); 12234: altpiece8at10: 12235: if (partsUsed & 0x100l) goto altpiece9at10; 12236: if(!(puzzle & 0x900c00ll)) 12237: altDoSolve(11, 0x800ll, puzzle | 0x900c00ll, 12238: partsUsed | 0x100l); 12239: if(!(puzzle & 0x802c00ll)) 12240: altDoSolve(11, 0x800ll, puzzle | 0x802c00ll, 12241: partsUsed | 0x100l); 12242: if(!(puzzle & 0x580400ll)) 12243: altDoSolve(11, 0x800ll, puzzle | 0x580400ll, 12244: partsUsed | 0x100l); 12245: if(!(puzzle & 0x4c00400ll)) 12246: altDoSolve(11, 0x800ll, puzzle | 0x4c00400ll, 12247: partsUsed | 0x100l); 12248: if(!(puzzle & 0x2400c00ll)) 12249: altDoSolve(11, 0x800ll, puzzle | 0x2400c00ll, 12250: partsUsed | 0x100l); 12251: if(!(puzzle & 0x6002400ll)) 12252: altDoSolve(11, 0x800ll, puzzle | 0x6002400ll, 12253: partsUsed | 0x100l); 12254: if(!(puzzle & 0x406400ll)) 12255: altDoSolve(11, 0x800ll, puzzle | 0x406400ll, 12256: partsUsed | 0x100l); 12257: if(!(puzzle & 0x4004c00ll)) 12258: altDoSolve(11, 0x800ll, puzzle | 0x4004c00ll, 12259: partsUsed | 0x100l); 12260: altpiece9at10: 12261: if (partsUsed & 0x200l) goto altpiece10at10; 12262: if (!(puzzle & 0x480400ll)) { 12263: if(!(puzzle & 0x80490400ll)) 12264: altDoSolve(11, 0x800ll, puzzle | 0x80490400ll, 12265: partsUsed | 0x200l); 12266: if(!(puzzle & 0x400482400ll)) 12267: altDoSolve(11, 0x800ll, puzzle | 0x400482400ll, 12268: partsUsed | 0x200l); 12269: if(!(puzzle & 0x2002480400ll)) 12270: altDoSolve(11, 0x800ll, puzzle | 0x2002480400ll, 12271: partsUsed | 0x200l); 12272: if(!(puzzle & 0x2400480400ll)) 12273: altDoSolve(11, 0x800ll, puzzle | 0x2400480400ll, 12274: partsUsed | 0x200l); 12275: if(!(puzzle & 0x82480400ll)) 12276: altDoSolve(11, 0x800ll, puzzle | 0x82480400ll, 12277: partsUsed | 0x200l); 12278: } 12279: if(!(puzzle & 0x482400400ll)) 12280: altDoSolve(11, 0x800ll, puzzle | 0x482400400ll, 12281: partsUsed | 0x200l); 12282: if(!(puzzle & 0x801800c00ll)) 12283: altDoSolve(11, 0x800ll, puzzle | 0x801800c00ll, 12284: partsUsed | 0x200l); 12285: if(!(puzzle & 0x801c00400ll)) 12286: altDoSolve(11, 0x800ll, puzzle | 0x801c00400ll, 12287: partsUsed | 0x200l); 12288: altpiece10at10: 12289: if (partsUsed & 0x400l) goto altpiece11at10; 12290: if (!(puzzle & 0x2400400ll)) { 12291: if(!(puzzle & 0x402402400ll)) 12292: altDoSolve(11, 0x800ll, puzzle | 0x402402400ll, 12293: partsUsed | 0x400l); 12294: if(!(puzzle & 0x2402400400ll)) 12295: altDoSolve(11, 0x800ll, puzzle | 0x2402400400ll, 12296: partsUsed | 0x400l); 12297: if(!(puzzle & 0x2002402400ll)) 12298: altDoSolve(11, 0x800ll, puzzle | 0x2002402400ll, 12299: partsUsed | 0x400l); 12300: } 12301: if (!(puzzle & 0x4c00ll)) { 12302: if(!(puzzle & 0xdc00ll)) 12303: altDoSolve(11, 0x800ll, puzzle | 0xdc00ll, 12304: partsUsed | 0x400l); 12305: if(!(puzzle & 0x7c00ll)) 12306: altDoSolve(11, 0x800ll, puzzle | 0x7c00ll, 12307: partsUsed | 0x400l); 12308: if(!(puzzle & 0xec00ll)) 12309: altDoSolve(11, 0x800ll, puzzle | 0xec00ll, 12310: partsUsed | 0x400l); 12311: } 12312: if (!(puzzle & 0xc00400ll)) { 12313: if(!(puzzle & 0x800c00c00ll)) 12314: altDoSolve(11, 0x800ll, puzzle | 0x800c00c00ll, 12315: partsUsed | 0x400l); 12316: if(!(puzzle & 0x400c00c00ll)) 12317: altDoSolve(11, 0x800ll, puzzle | 0x400c00c00ll, 12318: partsUsed | 0x400l); 12319: if(!(puzzle & 0x1c00c00ll)) 12320: altDoSolve(11, 0x800ll, puzzle | 0x1c00c00ll, 12321: partsUsed | 0x400l); 12322: if(!(puzzle & 0xc00c00400ll)) 12323: altDoSolve(11, 0x800ll, puzzle | 0xc00c00400ll, 12324: partsUsed | 0x400l); 12325: if(!(puzzle & 0xc01c00ll)) 12326: altDoSolve(11, 0x800ll, puzzle | 0xc01c00ll, 12327: partsUsed | 0x400l); 12328: } 12329: if(!(puzzle & 0x480480400ll)) 12330: altDoSolve(11, 0x800ll, puzzle | 0x480480400ll, 12331: partsUsed | 0x400l); 12332: if(!(puzzle & 0x2482400ll)) 12333: altDoSolve(11, 0x800ll, puzzle | 0x2482400ll, 12334: partsUsed | 0x400l); 12335: if(!(puzzle & 0x1801c00ll)) 12336: altDoSolve(11, 0x800ll, puzzle | 0x1801c00ll, 12337: partsUsed | 0x400l); 12338: altpiece11at10: 12339: break; 12340: case 11: 12341: if (partsUsed & 0x2l) goto altpiece2at11; 12342: if(!(puzzle & 0x400c01800ll)) 12343: altDoSolve(12, 0x1000ll, puzzle | 0x400c01800ll, 12344: partsUsed | 0x2l); 12345: if(!(puzzle & 0x120900800ll)) 12346: altDoSolve(12, 0x1000ll, puzzle | 0x120900800ll, 12347: partsUsed | 0x2l); 12348: if(!(puzzle & 0x100904800ll)) 12349: altDoSolve(12, 0x1000ll, puzzle | 0x100904800ll, 12350: partsUsed | 0x2l); 12351: altpiece2at11: 12352: if (partsUsed & 0x4l) goto altpiece3at11; 12353: if (!(puzzle & 0x800800800ll)) { 12354: if(!(puzzle & 0x800920800ll)) 12355: altDoSolve(12, 0x1000ll, puzzle | 0x800920800ll, 12356: partsUsed | 0x4l); 12357: if(!(puzzle & 0x4900800800ll)) 12358: altDoSolve(12, 0x1000ll, puzzle | 0x4900800800ll, 12359: partsUsed | 0x4l); 12360: if(!(puzzle & 0x1c00800800ll)) 12361: altDoSolve(12, 0x1000ll, puzzle | 0x1c00800800ll, 12362: partsUsed | 0x4l); 12363: } 12364: altpiece3at11: 12365: if (partsUsed & 0x8l) goto altpiece4at11; 12366: if(!(puzzle & 0x20920800ll)) 12367: altDoSolve(12, 0x1000ll, puzzle | 0x20920800ll, 12368: partsUsed | 0x8l); 12369: if(!(puzzle & 0x900804800ll)) 12370: altDoSolve(12, 0x1000ll, puzzle | 0x900804800ll, 12371: partsUsed | 0x8l); 12372: if(!(puzzle & 0xc00801800ll)) 12373: altDoSolve(12, 0x1000ll, puzzle | 0xc00801800ll, 12374: partsUsed | 0x8l); 12375: altpiece4at11: 12376: if (partsUsed & 0x10l) goto altpiece5at11; 12377: if (!(puzzle & 0x800800800800ll)) { 12378: if(!(puzzle & 0x900800900800ll)) 12379: altDoSolve(12, 0x1000ll, puzzle | 0x900800900800ll, 12380: partsUsed | 0x10l); 12381: if(!(puzzle & 0xc00800c00800ll)) 12382: altDoSolve(12, 0x1000ll, puzzle | 0xc00800c00800ll, 12383: partsUsed | 0x10l); 12384: if(!(puzzle & 0x4800804800800ll)) 12385: altDoSolve(12, 0x1000ll, puzzle | 0x4800804800800ll, 12386: partsUsed | 0x10l); 12387: if(!(puzzle & 0x804800804800ll)) 12388: altDoSolve(12, 0x1000ll, puzzle | 0x804800804800ll, 12389: partsUsed | 0x10l); 12390: if(!(puzzle & 0x1800801800800ll)) 12391: altDoSolve(12, 0x1000ll, puzzle | 0x1800801800800ll, 12392: partsUsed | 0x10l); 12393: if(!(puzzle & 0x801800801800ll)) 12394: altDoSolve(12, 0x1000ll, puzzle | 0x801800801800ll, 12395: partsUsed | 0x10l); 12396: } 12397: if(!(puzzle & 0x4004804004800ll)) 12398: altDoSolve(12, 0x1000ll, puzzle | 0x4004804004800ll, 12399: partsUsed | 0x10l); 12400: if(!(puzzle & 0x1001801001800ll)) 12401: altDoSolve(12, 0x1000ll, puzzle | 0x1001801001800ll, 12402: partsUsed | 0x10l); 12403: altpiece5at11: 12404: if (partsUsed & 0x20l) goto altpiece6at11; 12405: if (!(puzzle & 0x800800800800ll)) { 12406: if(!(puzzle & 0x900800800800ll)) 12407: altDoSolve(12, 0x1000ll, puzzle | 0x900800800800ll, 12408: partsUsed | 0x20l); 12409: if(!(puzzle & 0xc00800800800ll)) 12410: altDoSolve(12, 0x1000ll, puzzle | 0xc00800800800ll, 12411: partsUsed | 0x20l); 12412: if(!(puzzle & 0x800800804800ll)) 12413: altDoSolve(12, 0x1000ll, puzzle | 0x800800804800ll, 12414: partsUsed | 0x20l); 12415: if(!(puzzle & 0x4800800800800ll)) 12416: altDoSolve(12, 0x1000ll, puzzle | 0x4800800800800ll, 12417: partsUsed | 0x20l); 12418: if(!(puzzle & 0x800800801800ll)) 12419: altDoSolve(12, 0x1000ll, puzzle | 0x800800801800ll, 12420: partsUsed | 0x20l); 12421: if(!(puzzle & 0x1800800800800ll)) 12422: altDoSolve(12, 0x1000ll, puzzle | 0x1800800800800ll, 12423: partsUsed | 0x20l); 12424: } 12425: if(!(puzzle & 0x4004004004800ll)) 12426: altDoSolve(12, 0x1000ll, puzzle | 0x4004004004800ll, 12427: partsUsed | 0x20l); 12428: if(!(puzzle & 0x1001001001800ll)) 12429: altDoSolve(12, 0x1000ll, puzzle | 0x1001001001800ll, 12430: partsUsed | 0x20l); 12431: altpiece6at11: 12432: if (partsUsed & 0x40l) goto altpiece7at11; 12433: if (!(puzzle & 0x800800800800ll)) { 12434: if(!(puzzle & 0x800900800800ll)) 12435: altDoSolve(12, 0x1000ll, puzzle | 0x800900800800ll, 12436: partsUsed | 0x40l); 12437: if(!(puzzle & 0x800800c00800ll)) 12438: altDoSolve(12, 0x1000ll, puzzle | 0x800800c00800ll, 12439: partsUsed | 0x40l); 12440: if(!(puzzle & 0x800c00800800ll)) 12441: altDoSolve(12, 0x1000ll, puzzle | 0x800c00800800ll, 12442: partsUsed | 0x40l); 12443: if(!(puzzle & 0x800804800800ll)) 12444: altDoSolve(12, 0x1000ll, puzzle | 0x800804800800ll, 12445: partsUsed | 0x40l); 12446: if(!(puzzle & 0x804800800800ll)) 12447: altDoSolve(12, 0x1000ll, puzzle | 0x804800800800ll, 12448: partsUsed | 0x40l); 12449: if(!(puzzle & 0x800801800800ll)) 12450: altDoSolve(12, 0x1000ll, puzzle | 0x800801800800ll, 12451: partsUsed | 0x40l); 12452: if(!(puzzle & 0x801800800800ll)) 12453: altDoSolve(12, 0x1000ll, puzzle | 0x801800800800ll, 12454: partsUsed | 0x40l); 12455: } 12456: if(!(puzzle & 0x4920800ll)) 12457: altDoSolve(12, 0x1000ll, puzzle | 0x4920800ll, 12458: partsUsed | 0x40l); 12459: if(!(puzzle & 0x800800900800ll)) 12460: altDoSolve(12, 0x1000ll, puzzle | 0x800800900800ll, 12461: partsUsed | 0x40l); 12462: altpiece7at11: 12463: if (partsUsed & 0x80l) goto altpiece8at11; 12464: if(!(puzzle & 0x4800804800ll)) 12465: altDoSolve(12, 0x1000ll, puzzle | 0x4800804800ll, 12466: partsUsed | 0x80l); 12467: if(!(puzzle & 0x4804004800ll)) 12468: altDoSolve(12, 0x1000ll, puzzle | 0x4804004800ll, 12469: partsUsed | 0x80l); 12470: if(!(puzzle & 0x1801001800ll)) 12471: altDoSolve(12, 0x1000ll, puzzle | 0x1801001800ll, 12472: partsUsed | 0x80l); 12473: if(!(puzzle & 0x1800801800ll)) 12474: altDoSolve(12, 0x1000ll, puzzle | 0x1800801800ll, 12475: partsUsed | 0x80l); 12476: altpiece8at11: 12477: if (partsUsed & 0x100l) goto altpiece9at11; 12478: if(!(puzzle & 0xc80800ll)) 12479: altDoSolve(12, 0x1000ll, puzzle | 0xc80800ll, 12480: partsUsed | 0x100l); 12481: if(!(puzzle & 0xc04800ll)) 12482: altDoSolve(12, 0x1000ll, puzzle | 0xc04800ll, 12483: partsUsed | 0x100l); 12484: if(!(puzzle & 0x1201800ll)) 12485: altDoSolve(12, 0x1000ll, puzzle | 0x1201800ll, 12486: partsUsed | 0x100l); 12487: if(!(puzzle & 0x1005800ll)) 12488: altDoSolve(12, 0x1000ll, puzzle | 0x1005800ll, 12489: partsUsed | 0x100l); 12490: if(!(puzzle & 0xb00800ll)) 12491: altDoSolve(12, 0x1000ll, puzzle | 0xb00800ll, 12492: partsUsed | 0x100l); 12493: if(!(puzzle & 0x2006800ll)) 12494: altDoSolve(12, 0x1000ll, puzzle | 0x2006800ll, 12495: partsUsed | 0x100l); 12496: if(!(puzzle & 0x6800800ll)) 12497: altDoSolve(12, 0x1000ll, puzzle | 0x6800800ll, 12498: partsUsed | 0x100l); 12499: if(!(puzzle & 0x4801800ll)) 12500: altDoSolve(12, 0x1000ll, puzzle | 0x4801800ll, 12501: partsUsed | 0x100l); 12502: if(!(puzzle & 0x9800800ll)) 12503: altDoSolve(12, 0x1000ll, puzzle | 0x9800800ll, 12504: partsUsed | 0x100l); 12505: if(!(puzzle & 0xc004800ll)) 12506: altDoSolve(12, 0x1000ll, puzzle | 0xc004800ll, 12507: partsUsed | 0x100l); 12508: if(!(puzzle & 0x80c800ll)) 12509: altDoSolve(12, 0x1000ll, puzzle | 0x80c800ll, 12510: partsUsed | 0x100l); 12511: if(!(puzzle & 0x8009800ll)) 12512: altDoSolve(12, 0x1000ll, puzzle | 0x8009800ll, 12513: partsUsed | 0x100l); 12514: altpiece9at11: 12515: if (partsUsed & 0x200l) goto altpiece10at11; 12516: if (!(puzzle & 0x900800ll)) { 12517: if(!(puzzle & 0x100920800ll)) 12518: altDoSolve(12, 0x1000ll, puzzle | 0x100920800ll, 12519: partsUsed | 0x200l); 12520: if(!(puzzle & 0x800904800ll)) 12521: altDoSolve(12, 0x1000ll, puzzle | 0x800904800ll, 12522: partsUsed | 0x200l); 12523: if(!(puzzle & 0x4004900800ll)) 12524: altDoSolve(12, 0x1000ll, puzzle | 0x4004900800ll, 12525: partsUsed | 0x200l); 12526: if(!(puzzle & 0x4800900800ll)) 12527: altDoSolve(12, 0x1000ll, puzzle | 0x4800900800ll, 12528: partsUsed | 0x200l); 12529: if(!(puzzle & 0x104900800ll)) 12530: altDoSolve(12, 0x1000ll, puzzle | 0x104900800ll, 12531: partsUsed | 0x200l); 12532: } 12533: if (!(puzzle & 0x800800800ll)) { 12534: if(!(puzzle & 0x904800800ll)) 12535: altDoSolve(12, 0x1000ll, puzzle | 0x904800800ll, 12536: partsUsed | 0x200l); 12537: if(!(puzzle & 0x800c01800ll)) 12538: altDoSolve(12, 0x1000ll, puzzle | 0x800c01800ll, 12539: partsUsed | 0x200l); 12540: if(!(puzzle & 0x1800c00800ll)) 12541: altDoSolve(12, 0x1000ll, puzzle | 0x1800c00800ll, 12542: partsUsed | 0x200l); 12543: if(!(puzzle & 0xc01800800ll)) 12544: altDoSolve(12, 0x1000ll, puzzle | 0xc01800800ll, 12545: partsUsed | 0x200l); 12546: } 12547: if(!(puzzle & 0x401c00800ll)) 12548: altDoSolve(12, 0x1000ll, puzzle | 0x401c00800ll, 12549: partsUsed | 0x200l); 12550: if(!(puzzle & 0x1001c00800ll)) 12551: altDoSolve(12, 0x1000ll, puzzle | 0x1001c00800ll, 12552: partsUsed | 0x200l); 12553: altpiece10at11: 12554: if (partsUsed & 0x400l) goto altpiece11at11; 12555: if (!(puzzle & 0x4800800ll)) { 12556: if(!(puzzle & 0x804804800ll)) 12557: altDoSolve(12, 0x1000ll, puzzle | 0x804804800ll, 12558: partsUsed | 0x400l); 12559: if(!(puzzle & 0x4804800800ll)) 12560: altDoSolve(12, 0x1000ll, puzzle | 0x4804800800ll, 12561: partsUsed | 0x400l); 12562: if(!(puzzle & 0x4004804800ll)) 12563: altDoSolve(12, 0x1000ll, puzzle | 0x4004804800ll, 12564: partsUsed | 0x400l); 12565: } 12566: if (!(puzzle & 0x1800800ll)) { 12567: if(!(puzzle & 0x1001801800ll)) 12568: altDoSolve(12, 0x1000ll, puzzle | 0x1001801800ll, 12569: partsUsed | 0x400l); 12570: if(!(puzzle & 0x801801800ll)) 12571: altDoSolve(12, 0x1000ll, puzzle | 0x801801800ll, 12572: partsUsed | 0x400l); 12573: if(!(puzzle & 0x1801800800ll)) 12574: altDoSolve(12, 0x1000ll, puzzle | 0x1801800800ll, 12575: partsUsed | 0x400l); 12576: } 12577: if(!(puzzle & 0x900900800ll)) 12578: altDoSolve(12, 0x1000ll, puzzle | 0x900900800ll, 12579: partsUsed | 0x400l); 12580: if(!(puzzle & 0x4904800ll)) 12581: altDoSolve(12, 0x1000ll, puzzle | 0x4904800ll, 12582: partsUsed | 0x400l); 12583: if(!(puzzle & 0xf800ll)) 12584: altDoSolve(12, 0x1000ll, puzzle | 0xf800ll, 12585: partsUsed | 0x400l); 12586: if(!(puzzle & 0x1c01800ll)) 12587: altDoSolve(12, 0x1000ll, puzzle | 0x1c01800ll, 12588: partsUsed | 0x400l); 12589: if(!(puzzle & 0xc00c00800ll)) 12590: altDoSolve(12, 0x1000ll, puzzle | 0xc00c00800ll, 12591: partsUsed | 0x400l); 12592: altpiece11at11: 12593: break; 12594: case 12: 12595: if (partsUsed & 0x2l) goto altpiece2at12; 12596: if(!(puzzle & 0xc01801000ll)) 12597: altDoSolve(13, 0x2000ll, puzzle | 0xc01801000ll, 12598: partsUsed | 0x2l); 12599: if(!(puzzle & 0x241201000ll)) 12600: altDoSolve(13, 0x2000ll, puzzle | 0x241201000ll, 12601: partsUsed | 0x2l); 12602: if(!(puzzle & 0x201209000ll)) 12603: altDoSolve(13, 0x2000ll, puzzle | 0x201209000ll, 12604: partsUsed | 0x2l); 12605: altpiece2at12: 12606: if (partsUsed & 0x4l) goto altpiece3at12; 12607: if (!(puzzle & 0x1001001000ll)) { 12608: if(!(puzzle & 0x1001241000ll)) 12609: altDoSolve(13, 0x2000ll, puzzle | 0x1001241000ll, 12610: partsUsed | 0x4l); 12611: if(!(puzzle & 0x9201001000ll)) 12612: altDoSolve(13, 0x2000ll, puzzle | 0x9201001000ll, 12613: partsUsed | 0x4l); 12614: if(!(puzzle & 0x1001c01000ll)) 12615: altDoSolve(13, 0x2000ll, puzzle | 0x1001c01000ll, 12616: partsUsed | 0x4l); 12617: } 12618: altpiece3at12: 12619: if (partsUsed & 0x8l) goto altpiece4at12; 12620: if(!(puzzle & 0x401c01000ll)) 12621: altDoSolve(13, 0x2000ll, puzzle | 0x401c01000ll, 12622: partsUsed | 0x8l); 12623: if(!(puzzle & 0x41241000ll)) 12624: altDoSolve(13, 0x2000ll, puzzle | 0x41241000ll, 12625: partsUsed | 0x8l); 12626: if(!(puzzle & 0x1201009000ll)) 12627: altDoSolve(13, 0x2000ll, puzzle | 0x1201009000ll, 12628: partsUsed | 0x8l); 12629: altpiece4at12: 12630: if (partsUsed & 0x10l) goto altpiece5at12; 12631: if (!(puzzle & 0x1001001001000ll)) { 12632: if(!(puzzle & 0x1201001201000ll)) 12633: altDoSolve(13, 0x2000ll, puzzle | 0x1201001201000ll, 12634: partsUsed | 0x10l); 12635: if(!(puzzle & 0x1801001801000ll)) 12636: altDoSolve(13, 0x2000ll, puzzle | 0x1801001801000ll, 12637: partsUsed | 0x10l); 12638: if(!(puzzle & 0x9001009001000ll)) 12639: altDoSolve(13, 0x2000ll, puzzle | 0x9001009001000ll, 12640: partsUsed | 0x10l); 12641: if(!(puzzle & 0x1009001009000ll)) 12642: altDoSolve(13, 0x2000ll, puzzle | 0x1009001009000ll, 12643: partsUsed | 0x10l); 12644: } 12645: if(!(puzzle & 0x8009008009000ll)) 12646: altDoSolve(13, 0x2000ll, puzzle | 0x8009008009000ll, 12647: partsUsed | 0x10l); 12648: altpiece5at12: 12649: if (partsUsed & 0x20l) goto altpiece6at12; 12650: if (!(puzzle & 0x1001001001000ll)) { 12651: if(!(puzzle & 0x1201001001000ll)) 12652: altDoSolve(13, 0x2000ll, puzzle | 0x1201001001000ll, 12653: partsUsed | 0x20l); 12654: if(!(puzzle & 0x1801001001000ll)) 12655: altDoSolve(13, 0x2000ll, puzzle | 0x1801001001000ll, 12656: partsUsed | 0x20l); 12657: if(!(puzzle & 0x1001001009000ll)) 12658: altDoSolve(13, 0x2000ll, puzzle | 0x1001001009000ll, 12659: partsUsed | 0x20l); 12660: if(!(puzzle & 0x9001001001000ll)) 12661: altDoSolve(13, 0x2000ll, puzzle | 0x9001001001000ll, 12662: partsUsed | 0x20l); 12663: } 12664: if(!(puzzle & 0x8008008009000ll)) 12665: altDoSolve(13, 0x2000ll, puzzle | 0x8008008009000ll, 12666: partsUsed | 0x20l); 12667: altpiece6at12: 12668: if (partsUsed & 0x40l) goto altpiece7at12; 12669: if (!(puzzle & 0x1001001001000ll)) { 12670: if(!(puzzle & 0x1001201001000ll)) 12671: altDoSolve(13, 0x2000ll, puzzle | 0x1001201001000ll, 12672: partsUsed | 0x40l); 12673: if(!(puzzle & 0x1001001801000ll)) 12674: altDoSolve(13, 0x2000ll, puzzle | 0x1001001801000ll, 12675: partsUsed | 0x40l); 12676: if(!(puzzle & 0x1001801001000ll)) 12677: altDoSolve(13, 0x2000ll, puzzle | 0x1001801001000ll, 12678: partsUsed | 0x40l); 12679: if(!(puzzle & 0x1001009001000ll)) 12680: altDoSolve(13, 0x2000ll, puzzle | 0x1001009001000ll, 12681: partsUsed | 0x40l); 12682: if(!(puzzle & 0x1009001001000ll)) 12683: altDoSolve(13, 0x2000ll, puzzle | 0x1009001001000ll, 12684: partsUsed | 0x40l); 12685: } 12686: if(!(puzzle & 0x9241000ll)) 12687: altDoSolve(13, 0x2000ll, puzzle | 0x9241000ll, 12688: partsUsed | 0x40l); 12689: if(!(puzzle & 0x1001001201000ll)) 12690: altDoSolve(13, 0x2000ll, puzzle | 0x1001001201000ll, 12691: partsUsed | 0x40l); 12692: altpiece7at12: 12693: if (partsUsed & 0x80l) goto altpiece8at12; 12694: if(!(puzzle & 0x9001009000ll)) 12695: altDoSolve(13, 0x2000ll, puzzle | 0x9001009000ll, 12696: partsUsed | 0x80l); 12697: if(!(puzzle & 0x9008009000ll)) 12698: altDoSolve(13, 0x2000ll, puzzle | 0x9008009000ll, 12699: partsUsed | 0x80l); 12700: altpiece8at12: 12701: if (partsUsed & 0x100l) goto altpiece9at12; 12702: if(!(puzzle & 0x1901000ll)) 12703: altDoSolve(13, 0x2000ll, puzzle | 0x1901000ll, 12704: partsUsed | 0x100l); 12705: if(!(puzzle & 0x1809000ll)) 12706: altDoSolve(13, 0x2000ll, puzzle | 0x1809000ll, 12707: partsUsed | 0x100l); 12708: if(!(puzzle & 0x400d000ll)) 12709: altDoSolve(13, 0x2000ll, puzzle | 0x400d000ll, 12710: partsUsed | 0x100l); 12711: if(!(puzzle & 0xd001000ll)) 12712: altDoSolve(13, 0x2000ll, puzzle | 0xd001000ll, 12713: partsUsed | 0x100l); 12714: altpiece9at12: 12715: if (partsUsed & 0x200l) goto altpiece10at12; 12716: if (!(puzzle & 0x1201000ll)) { 12717: if(!(puzzle & 0x201241000ll)) 12718: altDoSolve(13, 0x2000ll, puzzle | 0x201241000ll, 12719: partsUsed | 0x200l); 12720: if(!(puzzle & 0x1001209000ll)) 12721: altDoSolve(13, 0x2000ll, puzzle | 0x1001209000ll, 12722: partsUsed | 0x200l); 12723: if(!(puzzle & 0x8009201000ll)) 12724: altDoSolve(13, 0x2000ll, puzzle | 0x8009201000ll, 12725: partsUsed | 0x200l); 12726: if(!(puzzle & 0x9001201000ll)) 12727: altDoSolve(13, 0x2000ll, puzzle | 0x9001201000ll, 12728: partsUsed | 0x200l); 12729: if(!(puzzle & 0x209201000ll)) 12730: altDoSolve(13, 0x2000ll, puzzle | 0x209201000ll, 12731: partsUsed | 0x200l); 12732: } 12733: if(!(puzzle & 0x1209001000ll)) 12734: altDoSolve(13, 0x2000ll, puzzle | 0x1209001000ll, 12735: partsUsed | 0x200l); 12736: if(!(puzzle & 0x801c01000ll)) 12737: altDoSolve(13, 0x2000ll, puzzle | 0x801c01000ll, 12738: partsUsed | 0x200l); 12739: altpiece10at12: 12740: if (partsUsed & 0x400l) goto altpiece11at12; 12741: if (!(puzzle & 0x1001001000ll)) { 12742: if(!(puzzle & 0x1801801000ll)) 12743: altDoSolve(13, 0x2000ll, puzzle | 0x1801801000ll, 12744: partsUsed | 0x400l); 12745: if(!(puzzle & 0x1009009000ll)) 12746: altDoSolve(13, 0x2000ll, puzzle | 0x1009009000ll, 12747: partsUsed | 0x400l); 12748: if(!(puzzle & 0x9009001000ll)) 12749: altDoSolve(13, 0x2000ll, puzzle | 0x9009001000ll, 12750: partsUsed | 0x400l); 12751: } 12752: if(!(puzzle & 0x1201201000ll)) 12753: altDoSolve(13, 0x2000ll, puzzle | 0x1201201000ll, 12754: partsUsed | 0x400l); 12755: if(!(puzzle & 0x9209000ll)) 12756: altDoSolve(13, 0x2000ll, puzzle | 0x9209000ll, 12757: partsUsed | 0x400l); 12758: if(!(puzzle & 0x8009009000ll)) 12759: altDoSolve(13, 0x2000ll, puzzle | 0x8009009000ll, 12760: partsUsed | 0x400l); 12761: altpiece11at12: 12762: break; 12763: case 13: 12764: if (partsUsed & 0x2l) goto altpiece2at13; 12765: if(!(puzzle & 0x482402000ll)) 12766: altDoSolve(14, 0x4000ll, puzzle | 0x482402000ll, 12767: partsUsed | 0x2l); 12768: if(!(puzzle & 0x800c006000ll)) 12769: altDoSolve(14, 0x4000ll, puzzle | 0x800c006000ll, 12770: partsUsed | 0x2l); 12771: if(!(puzzle & 0xc006002000ll)) 12772: altDoSolve(14, 0x4000ll, puzzle | 0xc006002000ll, 12773: partsUsed | 0x2l); 12774: altpiece2at13: 12775: if (partsUsed & 0x4l) goto altpiece3at13; 12776: if(!(puzzle & 0x400400e000ll)) 12777: altDoSolve(14, 0x4000ll, puzzle | 0x400400e000ll, 12778: partsUsed | 0x4l); 12779: if(!(puzzle & 0x2002482000ll)) 12780: altDoSolve(14, 0x4000ll, puzzle | 0x2002482000ll, 12781: partsUsed | 0x4l); 12782: if(!(puzzle & 0x200e002000ll)) 12783: altDoSolve(14, 0x4000ll, puzzle | 0x200e002000ll, 12784: partsUsed | 0x4l); 12785: altpiece3at13: 12786: if (partsUsed & 0x8l) goto altpiece4at13; 12787: if(!(puzzle & 0x82482000ll)) 12788: altDoSolve(14, 0x4000ll, puzzle | 0x82482000ll, 12789: partsUsed | 0x8l); 12790: if(!(puzzle & 0x800e002000ll)) 12791: altDoSolve(14, 0x4000ll, puzzle | 0x800e002000ll, 12792: partsUsed | 0x8l); 12793: if(!(puzzle & 0xc004006000ll)) 12794: altDoSolve(14, 0x4000ll, puzzle | 0xc004006000ll, 12795: partsUsed | 0x8l); 12796: altpiece4at13: 12797: if (partsUsed & 0x10l) goto altpiece5at13; 12798: if (!(puzzle & 0x2002002002000ll)) { 12799: if(!(puzzle & 0x2402002402000ll)) 12800: altDoSolve(14, 0x4000ll, puzzle | 0x2402002402000ll, 12801: partsUsed | 0x10l); 12802: if(!(puzzle & 0x6002006002000ll)) 12803: altDoSolve(14, 0x4000ll, puzzle | 0x6002006002000ll, 12804: partsUsed | 0x10l); 12805: if(!(puzzle & 0x2006002006000ll)) 12806: altDoSolve(14, 0x4000ll, puzzle | 0x2006002006000ll, 12807: partsUsed | 0x10l); 12808: } 12809: if(!(puzzle & 0x4006004006000ll)) 12810: altDoSolve(14, 0x4000ll, puzzle | 0x4006004006000ll, 12811: partsUsed | 0x10l); 12812: altpiece5at13: 12813: if (partsUsed & 0x20l) goto altpiece6at13; 12814: if (!(puzzle & 0x2002002002000ll)) { 12815: if(!(puzzle & 0x2402002002000ll)) 12816: altDoSolve(14, 0x4000ll, puzzle | 0x2402002002000ll, 12817: partsUsed | 0x20l); 12818: if(!(puzzle & 0x2002002006000ll)) 12819: altDoSolve(14, 0x4000ll, puzzle | 0x2002002006000ll, 12820: partsUsed | 0x20l); 12821: if(!(puzzle & 0x6002002002000ll)) 12822: altDoSolve(14, 0x4000ll, puzzle | 0x6002002002000ll, 12823: partsUsed | 0x20l); 12824: } 12825: if(!(puzzle & 0x2492000ll)) 12826: altDoSolve(14, 0x4000ll, puzzle | 0x2492000ll, 12827: partsUsed | 0x20l); 12828: if(!(puzzle & 0x4004004006000ll)) 12829: altDoSolve(14, 0x4000ll, puzzle | 0x4004004006000ll, 12830: partsUsed | 0x20l); 12831: altpiece6at13: 12832: if (partsUsed & 0x40l) goto altpiece7at13; 12833: if (!(puzzle & 0x2002002002000ll)) { 12834: if(!(puzzle & 0x2002402002000ll)) 12835: altDoSolve(14, 0x4000ll, puzzle | 0x2002402002000ll, 12836: partsUsed | 0x40l); 12837: if(!(puzzle & 0x2002002402000ll)) 12838: altDoSolve(14, 0x4000ll, puzzle | 0x2002002402000ll, 12839: partsUsed | 0x40l); 12840: if(!(puzzle & 0x2002006002000ll)) 12841: altDoSolve(14, 0x4000ll, puzzle | 0x2002006002000ll, 12842: partsUsed | 0x40l); 12843: if(!(puzzle & 0x2006002002000ll)) 12844: altDoSolve(14, 0x4000ll, puzzle | 0x2006002002000ll, 12845: partsUsed | 0x40l); 12846: } 12847: altpiece7at13: 12848: if (partsUsed & 0x80l) goto altpiece8at13; 12849: if(!(puzzle & 0x6004006000ll)) 12850: altDoSolve(14, 0x4000ll, puzzle | 0x6004006000ll, 12851: partsUsed | 0x80l); 12852: if(!(puzzle & 0x6002006000ll)) 12853: altDoSolve(14, 0x4000ll, puzzle | 0x6002006000ll, 12854: partsUsed | 0x80l); 12855: if(!(puzzle & 0xe00a000ll)) 12856: altDoSolve(14, 0x4000ll, puzzle | 0xe00a000ll, 12857: partsUsed | 0x80l); 12858: if(!(puzzle & 0xa00e000ll)) 12859: altDoSolve(14, 0x4000ll, puzzle | 0xa00e000ll, 12860: partsUsed | 0x80l); 12861: altpiece8at13: 12862: if (partsUsed & 0x100l) goto altpiece9at13; 12863: if(!(puzzle & 0x4806000ll)) 12864: altDoSolve(14, 0x4000ll, puzzle | 0x4806000ll, 12865: partsUsed | 0x100l); 12866: if(!(puzzle & 0x2c02000ll)) 12867: altDoSolve(14, 0x4000ll, puzzle | 0x2c02000ll, 12868: partsUsed | 0x100l); 12869: altpiece9at13: 12870: if (partsUsed & 0x200l) goto altpiece10at13; 12871: if(!(puzzle & 0x402482000ll)) 12872: altDoSolve(14, 0x4000ll, puzzle | 0x402482000ll, 12873: partsUsed | 0x200l); 12874: if(!(puzzle & 0x400c006000ll)) 12875: altDoSolve(14, 0x4000ll, puzzle | 0x400c006000ll, 12876: partsUsed | 0x200l); 12877: if(!(puzzle & 0x400e002000ll)) 12878: altDoSolve(14, 0x4000ll, puzzle | 0x400e002000ll, 12879: partsUsed | 0x200l); 12880: altpiece10at13: 12881: if (partsUsed & 0x400l) goto altpiece11at13; 12882: if (!(puzzle & 0x2002002000ll)) { 12883: if(!(puzzle & 0x2402402000ll)) 12884: altDoSolve(14, 0x4000ll, puzzle | 0x2402402000ll, 12885: partsUsed | 0x400l); 12886: if(!(puzzle & 0x2006006000ll)) 12887: altDoSolve(14, 0x4000ll, puzzle | 0x2006006000ll, 12888: partsUsed | 0x400l); 12889: if(!(puzzle & 0x6006002000ll)) 12890: altDoSolve(14, 0x4000ll, puzzle | 0x6006002000ll, 12891: partsUsed | 0x400l); 12892: } 12893: if (!(puzzle & 0x4006000ll)) { 12894: if(!(puzzle & 0x4006006000ll)) 12895: altDoSolve(14, 0x4000ll, puzzle | 0x4006006000ll, 12896: partsUsed | 0x400l); 12897: if(!(puzzle & 0xe006000ll)) 12898: altDoSolve(14, 0x4000ll, puzzle | 0xe006000ll, 12899: partsUsed | 0x400l); 12900: if(!(puzzle & 0x600e000ll)) 12901: altDoSolve(14, 0x4000ll, puzzle | 0x600e000ll, 12902: partsUsed | 0x400l); 12903: if(!(puzzle & 0xc00e000ll)) 12904: altDoSolve(14, 0x4000ll, puzzle | 0xc00e000ll, 12905: partsUsed | 0x400l); 12906: } 12907: altpiece11at13: 12908: break; 12909: case 14: 12910: if (partsUsed & 0x2l) goto altpiece2at14; 12911: if(!(puzzle & 0x904804000ll)) 12912: altDoSolve(15, 0x8000ll, puzzle | 0x904804000ll, 12913: partsUsed | 0x2l); 12914: if(!(puzzle & 0x200600c000ll)) 12915: altDoSolve(15, 0x8000ll, puzzle | 0x200600c000ll, 12916: partsUsed | 0x2l); 12917: altpiece2at14: 12918: if (partsUsed & 0x4l) goto altpiece3at14; 12919: if(!(puzzle & 0x4004904000ll)) 12920: altDoSolve(15, 0x8000ll, puzzle | 0x4004904000ll, 12921: partsUsed | 0x4l); 12922: if(!(puzzle & 0xe004004000ll)) 12923: altDoSolve(15, 0x8000ll, puzzle | 0xe004004000ll, 12924: partsUsed | 0x4l); 12925: altpiece3at14: 12926: if (partsUsed & 0x8l) goto altpiece4at14; 12927: if(!(puzzle & 0x104904000ll)) 12928: altDoSolve(15, 0x8000ll, puzzle | 0x104904000ll, 12929: partsUsed | 0x8l); 12930: if(!(puzzle & 0x600400c000ll)) 12931: altDoSolve(15, 0x8000ll, puzzle | 0x600400c000ll, 12932: partsUsed | 0x8l); 12933: altpiece4at14: 12934: if (partsUsed & 0x10l) goto altpiece5at14; 12935: if (!(puzzle & 0x4004004004000ll)) { 12936: if(!(puzzle & 0x4804004804000ll)) 12937: altDoSolve(15, 0x8000ll, puzzle | 0x4804004804000ll, 12938: partsUsed | 0x10l); 12939: if(!(puzzle & 0x6004006004000ll)) 12940: altDoSolve(15, 0x8000ll, puzzle | 0x6004006004000ll, 12941: partsUsed | 0x10l); 12942: if(!(puzzle & 0xc00400c004000ll)) 12943: altDoSolve(15, 0x8000ll, puzzle | 0xc00400c004000ll, 12944: partsUsed | 0x10l); 12945: if(!(puzzle & 0x400c00400c000ll)) 12946: altDoSolve(15, 0x8000ll, puzzle | 0x400c00400c000ll, 12947: partsUsed | 0x10l); 12948: } 12949: if(!(puzzle & 0x800c00800c000ll)) 12950: altDoSolve(15, 0x8000ll, puzzle | 0x800c00800c000ll, 12951: partsUsed | 0x10l); 12952: altpiece5at14: 12953: if (partsUsed & 0x20l) goto altpiece6at14; 12954: if (!(puzzle & 0x4004004004000ll)) { 12955: if(!(puzzle & 0x4804004004000ll)) 12956: altDoSolve(15, 0x8000ll, puzzle | 0x4804004004000ll, 12957: partsUsed | 0x20l); 12958: if(!(puzzle & 0x6004004004000ll)) 12959: altDoSolve(15, 0x8000ll, puzzle | 0x6004004004000ll, 12960: partsUsed | 0x20l); 12961: if(!(puzzle & 0x400400400c000ll)) 12962: altDoSolve(15, 0x8000ll, puzzle | 0x400400400c000ll, 12963: partsUsed | 0x20l); 12964: if(!(puzzle & 0xc004004004000ll)) 12965: altDoSolve(15, 0x8000ll, puzzle | 0xc004004004000ll, 12966: partsUsed | 0x20l); 12967: } 12968: if(!(puzzle & 0x4924000ll)) 12969: altDoSolve(15, 0x8000ll, puzzle | 0x4924000ll, 12970: partsUsed | 0x20l); 12971: if(!(puzzle & 0x800800800c000ll)) 12972: altDoSolve(15, 0x8000ll, puzzle | 0x800800800c000ll, 12973: partsUsed | 0x20l); 12974: altpiece6at14: 12975: if (partsUsed & 0x40l) goto altpiece7at14; 12976: if (!(puzzle & 0x4004004004000ll)) { 12977: if(!(puzzle & 0x4004804004000ll)) 12978: altDoSolve(15, 0x8000ll, puzzle | 0x4004804004000ll, 12979: partsUsed | 0x40l); 12980: if(!(puzzle & 0x4004004804000ll)) 12981: altDoSolve(15, 0x8000ll, puzzle | 0x4004004804000ll, 12982: partsUsed | 0x40l); 12983: if(!(puzzle & 0x4004006004000ll)) 12984: altDoSolve(15, 0x8000ll, puzzle | 0x4004006004000ll, 12985: partsUsed | 0x40l); 12986: if(!(puzzle & 0x4006004004000ll)) 12987: altDoSolve(15, 0x8000ll, puzzle | 0x4006004004000ll, 12988: partsUsed | 0x40l); 12989: if(!(puzzle & 0x400400c004000ll)) 12990: altDoSolve(15, 0x8000ll, puzzle | 0x400400c004000ll, 12991: partsUsed | 0x40l); 12992: if(!(puzzle & 0x400c004004000ll)) 12993: altDoSolve(15, 0x8000ll, puzzle | 0x400c004004000ll, 12994: partsUsed | 0x40l); 12995: } 12996: altpiece7at14: 12997: if (partsUsed & 0x80l) goto altpiece8at14; 12998: if(!(puzzle & 0xc00800c000ll)) 12999: altDoSolve(15, 0x8000ll, puzzle | 0xc00800c000ll, 13000: partsUsed | 0x80l); 13001: if(!(puzzle & 0xc00400c000ll)) 13002: altDoSolve(15, 0x8000ll, puzzle | 0xc00400c000ll, 13003: partsUsed | 0x80l); 13004: altpiece8at14: 13005: if (partsUsed & 0x100l) goto altpiece9at14; 13006: if(!(puzzle & 0x5804000ll)) 13007: altDoSolve(15, 0x8000ll, puzzle | 0x5804000ll, 13008: partsUsed | 0x100l); 13009: if(!(puzzle & 0x6404000ll)) 13010: altDoSolve(15, 0x8000ll, puzzle | 0x6404000ll, 13011: partsUsed | 0x100l); 13012: if(!(puzzle & 0x900c000ll)) 13013: altDoSolve(15, 0x8000ll, puzzle | 0x900c000ll, 13014: partsUsed | 0x100l); 13015: altpiece9at14: 13016: if (partsUsed & 0x200l) goto altpiece10at14; 13017: if (!(puzzle & 0x4004004000ll)) { 13018: if(!(puzzle & 0x400600c000ll)) 13019: altDoSolve(15, 0x8000ll, puzzle | 0x400600c000ll, 13020: partsUsed | 0x200l); 13021: if(!(puzzle & 0xc006004000ll)) 13022: altDoSolve(15, 0x8000ll, puzzle | 0xc006004000ll, 13023: partsUsed | 0x200l); 13024: if(!(puzzle & 0x600c004000ll)) 13025: altDoSolve(15, 0x8000ll, puzzle | 0x600c004000ll, 13026: partsUsed | 0x200l); 13027: } 13028: if(!(puzzle & 0x804904000ll)) 13029: altDoSolve(15, 0x8000ll, puzzle | 0x804904000ll, 13030: partsUsed | 0x200l); 13031: if(!(puzzle & 0x200e004000ll)) 13032: altDoSolve(15, 0x8000ll, puzzle | 0x200e004000ll, 13033: partsUsed | 0x200l); 13034: if(!(puzzle & 0x800e004000ll)) 13035: altDoSolve(15, 0x8000ll, puzzle | 0x800e004000ll, 13036: partsUsed | 0x200l); 13037: altpiece10at14: 13038: if (partsUsed & 0x400l) goto altpiece11at14; 13039: if (!(puzzle & 0x4004004000ll)) { 13040: if(!(puzzle & 0x4804804000ll)) 13041: altDoSolve(15, 0x8000ll, puzzle | 0x4804804000ll, 13042: partsUsed | 0x400l); 13043: if(!(puzzle & 0x6006004000ll)) 13044: altDoSolve(15, 0x8000ll, puzzle | 0x6006004000ll, 13045: partsUsed | 0x400l); 13046: if(!(puzzle & 0x400c00c000ll)) 13047: altDoSolve(15, 0x8000ll, puzzle | 0x400c00c000ll, 13048: partsUsed | 0x400l); 13049: if(!(puzzle & 0xc00c004000ll)) 13050: altDoSolve(15, 0x8000ll, puzzle | 0xc00c004000ll, 13051: partsUsed | 0x400l); 13052: } 13053: if(!(puzzle & 0xe00c000ll)) 13054: altDoSolve(15, 0x8000ll, puzzle | 0xe00c000ll, 13055: partsUsed | 0x400l); 13056: if(!(puzzle & 0x800c00c000ll)) 13057: altDoSolve(15, 0x8000ll, puzzle | 0x800c00c000ll, 13058: partsUsed | 0x400l); 13059: altpiece11at14: 13060: break; 13061: case 15: 13062: if (partsUsed & 0x2l) goto altpiece2at15; 13063: if(!(puzzle & 0x1209008000ll)) 13064: altDoSolve(16, 0x10000ll, puzzle | 0x1209008000ll, 13065: partsUsed | 0x2l); 13066: if(!(puzzle & 0x600c008000ll)) 13067: altDoSolve(16, 0x10000ll, puzzle | 0x600c008000ll, 13068: partsUsed | 0x2l); 13069: altpiece2at15: 13070: if (partsUsed & 0x4l) goto altpiece3at15; 13071: if(!(puzzle & 0x8009208000ll)) 13072: altDoSolve(16, 0x10000ll, puzzle | 0x8009208000ll, 13073: partsUsed | 0x4l); 13074: if(!(puzzle & 0x800e008000ll)) 13075: altDoSolve(16, 0x10000ll, puzzle | 0x800e008000ll, 13076: partsUsed | 0x4l); 13077: altpiece3at15: 13078: if (partsUsed & 0x8l) goto altpiece4at15; 13079: if(!(puzzle & 0x209208000ll)) 13080: altDoSolve(16, 0x10000ll, puzzle | 0x209208000ll, 13081: partsUsed | 0x8l); 13082: if(!(puzzle & 0x200e008000ll)) 13083: altDoSolve(16, 0x10000ll, puzzle | 0x200e008000ll, 13084: partsUsed | 0x8l); 13085: altpiece4at15: 13086: if (partsUsed & 0x10l) goto altpiece5at15; 13087: if(!(puzzle & 0x9008009008000ll)) 13088: altDoSolve(16, 0x10000ll, puzzle | 0x9008009008000ll, 13089: partsUsed | 0x10l); 13090: if(!(puzzle & 0xc00800c008000ll)) 13091: altDoSolve(16, 0x10000ll, puzzle | 0xc00800c008000ll, 13092: partsUsed | 0x10l); 13093: altpiece5at15: 13094: if (partsUsed & 0x20l) goto altpiece6at15; 13095: if(!(puzzle & 0x9248000ll)) 13096: altDoSolve(16, 0x10000ll, puzzle | 0x9248000ll, 13097: partsUsed | 0x20l); 13098: if(!(puzzle & 0x9008008008000ll)) 13099: altDoSolve(16, 0x10000ll, puzzle | 0x9008008008000ll, 13100: partsUsed | 0x20l); 13101: if(!(puzzle & 0xc008008008000ll)) 13102: altDoSolve(16, 0x10000ll, puzzle | 0xc008008008000ll, 13103: partsUsed | 0x20l); 13104: altpiece6at15: 13105: if (partsUsed & 0x40l) goto altpiece7at15; 13106: if (!(puzzle & 0x8008008008000ll)) { 13107: if(!(puzzle & 0x8009008008000ll)) 13108: altDoSolve(16, 0x10000ll, puzzle | 0x8009008008000ll, 13109: partsUsed | 0x40l); 13110: if(!(puzzle & 0x8008009008000ll)) 13111: altDoSolve(16, 0x10000ll, puzzle | 0x8008009008000ll, 13112: partsUsed | 0x40l); 13113: if(!(puzzle & 0x800800c008000ll)) 13114: altDoSolve(16, 0x10000ll, puzzle | 0x800800c008000ll, 13115: partsUsed | 0x40l); 13116: if(!(puzzle & 0x800c008008000ll)) 13117: altDoSolve(16, 0x10000ll, puzzle | 0x800c008008000ll, 13118: partsUsed | 0x40l); 13119: } 13120: altpiece7at15: 13121: if (partsUsed & 0x100l) goto altpiece9at15; 13122: if(!(puzzle & 0xc808000ll)) 13123: altDoSolve(16, 0x10000ll, puzzle | 0xc808000ll, 13124: partsUsed | 0x100l); 13125: altpiece9at15: 13126: if (partsUsed & 0x200l) goto altpiece10at15; 13127: if(!(puzzle & 0x1009208000ll)) 13128: altDoSolve(16, 0x10000ll, puzzle | 0x1009208000ll, 13129: partsUsed | 0x200l); 13130: if(!(puzzle & 0x400e008000ll)) 13131: altDoSolve(16, 0x10000ll, puzzle | 0x400e008000ll, 13132: partsUsed | 0x200l); 13133: altpiece10at15: 13134: if (partsUsed & 0x400l) goto altpiece11at15; 13135: if(!(puzzle & 0x9009008000ll)) 13136: altDoSolve(16, 0x10000ll, puzzle | 0x9009008000ll, 13137: partsUsed | 0x400l); 13138: if(!(puzzle & 0xc00c008000ll)) 13139: altDoSolve(16, 0x10000ll, puzzle | 0xc00c008000ll, 13140: partsUsed | 0x400l); 13141: altpiece11at15: 13142: break; 13143: case 16: 13144: if (partsUsed & 0x2l) goto altpiece2at16; 13145: if(!(puzzle & 0x480090010000ll)) 13146: altDoSolve(17, 0x20000ll, puzzle | 0x480090010000ll, 13147: partsUsed | 0x2l); 13148: if(!(puzzle & 0x400480090000ll)) 13149: altDoSolve(17, 0x20000ll, puzzle | 0x400480090000ll, 13150: partsUsed | 0x2l); 13151: if(!(puzzle & 0x1330000ll)) 13152: altDoSolve(17, 0x20000ll, puzzle | 0x1330000ll, 13153: partsUsed | 0x2l); 13154: if(!(puzzle & 0x1990000ll)) 13155: altDoSolve(17, 0x20000ll, puzzle | 0x1990000ll, 13156: partsUsed | 0x2l); 13157: if(!(puzzle & 0x40060030000ll)) 13158: altDoSolve(17, 0x20000ll, puzzle | 0x40060030000ll, 13159: partsUsed | 0x2l); 13160: if(!(puzzle & 0x60030010000ll)) 13161: altDoSolve(17, 0x20000ll, puzzle | 0x60030010000ll, 13162: partsUsed | 0x2l); 13163: altpiece2at16: 13164: if (partsUsed & 0x4l) goto altpiece3at16; 13165: if(!(puzzle & 0x10490010000ll)) 13166: altDoSolve(17, 0x20000ll, puzzle | 0x10490010000ll, 13167: partsUsed | 0x4l); 13168: if(!(puzzle & 0x10070010000ll)) 13169: altDoSolve(17, 0x20000ll, puzzle | 0x10070010000ll, 13170: partsUsed | 0x4l); 13171: if(!(puzzle & 0x80080490000ll)) 13172: altDoSolve(17, 0x20000ll, puzzle | 0x80080490000ll, 13173: partsUsed | 0x4l); 13174: if(!(puzzle & 0x790000ll)) 13175: altDoSolve(17, 0x20000ll, puzzle | 0x790000ll, 13176: partsUsed | 0x4l); 13177: if(!(puzzle & 0x970000ll)) 13178: altDoSolve(17, 0x20000ll, puzzle | 0x970000ll, 13179: partsUsed | 0x4l); 13180: if(!(puzzle & 0x20020070000ll)) 13181: altDoSolve(17, 0x20000ll, puzzle | 0x20020070000ll, 13182: partsUsed | 0x4l); 13183: altpiece3at16: 13184: if (partsUsed & 0x8l) goto altpiece4at16; 13185: if(!(puzzle & 0x400490010000ll)) 13186: altDoSolve(17, 0x20000ll, puzzle | 0x400490010000ll, 13187: partsUsed | 0x8l); 13188: if(!(puzzle & 0x480080090000ll)) 13189: altDoSolve(17, 0x20000ll, puzzle | 0x480080090000ll, 13190: partsUsed | 0x8l); 13191: if(!(puzzle & 0x1930000ll)) 13192: altDoSolve(17, 0x20000ll, puzzle | 0x1930000ll, 13193: partsUsed | 0x8l); 13194: if(!(puzzle & 0x1390000ll)) 13195: altDoSolve(17, 0x20000ll, puzzle | 0x1390000ll, 13196: partsUsed | 0x8l); 13197: if(!(puzzle & 0x40070010000ll)) 13198: altDoSolve(17, 0x20000ll, puzzle | 0x40070010000ll, 13199: partsUsed | 0x8l); 13200: if(!(puzzle & 0x60020030000ll)) 13201: altDoSolve(17, 0x20000ll, puzzle | 0x60020030000ll, 13202: partsUsed | 0x8l); 13203: altpiece4at16: 13204: if (partsUsed & 0x10l) goto altpiece5at16; 13205: if (!(puzzle & 0x2490000ll)) { 13206: if(!(puzzle & 0x6590000ll)) 13207: altDoSolve(17, 0x20000ll, puzzle | 0x6590000ll, 13208: partsUsed | 0x10l); 13209: if(!(puzzle & 0x2082490000ll)) 13210: altDoSolve(17, 0x20000ll, puzzle | 0x2082490000ll, 13211: partsUsed | 0x10l); 13212: if(!(puzzle & 0x2cb0000ll)) 13213: altDoSolve(17, 0x20000ll, puzzle | 0x2cb0000ll, 13214: partsUsed | 0x10l); 13215: } 13216: if(!(puzzle & 0x90010090010000ll)) 13217: altDoSolve(17, 0x20000ll, puzzle | 0x90010090010000ll, 13218: partsUsed | 0x10l); 13219: if(!(puzzle & 0x80090080090000ll)) 13220: altDoSolve(17, 0x20000ll, puzzle | 0x80090080090000ll, 13221: partsUsed | 0x10l); 13222: if(!(puzzle & 0x412490000ll)) 13223: altDoSolve(17, 0x20000ll, puzzle | 0x412490000ll, 13224: partsUsed | 0x10l); 13225: if(!(puzzle & 0x10090010090000ll)) 13226: altDoSolve(17, 0x20000ll, puzzle | 0x10090010090000ll, 13227: partsUsed | 0x10l); 13228: if(!(puzzle & 0x4d30000ll)) 13229: altDoSolve(17, 0x20000ll, puzzle | 0x4d30000ll, 13230: partsUsed | 0x10l); 13231: if(!(puzzle & 0x2490410000ll)) 13232: altDoSolve(17, 0x20000ll, puzzle | 0x2490410000ll, 13233: partsUsed | 0x10l); 13234: if(!(puzzle & 0x30010030010000ll)) 13235: altDoSolve(17, 0x20000ll, puzzle | 0x30010030010000ll, 13236: partsUsed | 0x10l); 13237: if(!(puzzle & 0x10030010030000ll)) 13238: altDoSolve(17, 0x20000ll, puzzle | 0x10030010030000ll, 13239: partsUsed | 0x10l); 13240: if(!(puzzle & 0x20030020030000ll)) 13241: altDoSolve(17, 0x20000ll, puzzle | 0x20030020030000ll, 13242: partsUsed | 0x10l); 13243: altpiece5at16: 13244: if (partsUsed & 0x20l) goto altpiece6at16; 13245: if (!(puzzle & 0x10010010010000ll)) { 13246: if(!(puzzle & 0x10010010090000ll)) 13247: altDoSolve(17, 0x20000ll, puzzle | 0x10010010090000ll, 13248: partsUsed | 0x20l); 13249: if(!(puzzle & 0x90010010010000ll)) 13250: altDoSolve(17, 0x20000ll, puzzle | 0x90010010010000ll, 13251: partsUsed | 0x20l); 13252: if(!(puzzle & 0x10010010030000ll)) 13253: altDoSolve(17, 0x20000ll, puzzle | 0x10010010030000ll, 13254: partsUsed | 0x20l); 13255: if(!(puzzle & 0x30010010010000ll)) 13256: altDoSolve(17, 0x20000ll, puzzle | 0x30010010010000ll, 13257: partsUsed | 0x20l); 13258: } 13259: if (!(puzzle & 0x2490000ll)) { 13260: if(!(puzzle & 0x2002490000ll)) 13261: altDoSolve(17, 0x20000ll, puzzle | 0x2002490000ll, 13262: partsUsed | 0x20l); 13263: if(!(puzzle & 0x24b0000ll)) 13264: altDoSolve(17, 0x20000ll, puzzle | 0x24b0000ll, 13265: partsUsed | 0x20l); 13266: if(!(puzzle & 0x12490000ll)) 13267: altDoSolve(17, 0x20000ll, puzzle | 0x12490000ll, 13268: partsUsed | 0x20l); 13269: if(!(puzzle & 0x6490000ll)) 13270: altDoSolve(17, 0x20000ll, puzzle | 0x6490000ll, 13271: partsUsed | 0x20l); 13272: } 13273: if(!(puzzle & 0x2490010000ll)) 13274: altDoSolve(17, 0x20000ll, puzzle | 0x2490010000ll, 13275: partsUsed | 0x20l); 13276: if(!(puzzle & 0x4930000ll)) 13277: altDoSolve(17, 0x20000ll, puzzle | 0x4930000ll, 13278: partsUsed | 0x20l); 13279: if(!(puzzle & 0x80080080090000ll)) 13280: altDoSolve(17, 0x20000ll, puzzle | 0x80080080090000ll, 13281: partsUsed | 0x20l); 13282: if(!(puzzle & 0x20020020030000ll)) 13283: altDoSolve(17, 0x20000ll, puzzle | 0x20020020030000ll, 13284: partsUsed | 0x20l); 13285: altpiece6at16: 13286: if (partsUsed & 0x40l) goto altpiece7at16; 13287: if (!(puzzle & 0x10010010010000ll)) { 13288: if(!(puzzle & 0x10010090010000ll)) 13289: altDoSolve(17, 0x20000ll, puzzle | 0x10010090010000ll, 13290: partsUsed | 0x40l); 13291: if(!(puzzle & 0x10090010010000ll)) 13292: altDoSolve(17, 0x20000ll, puzzle | 0x10090010010000ll, 13293: partsUsed | 0x40l); 13294: if(!(puzzle & 0x10010030010000ll)) 13295: altDoSolve(17, 0x20000ll, puzzle | 0x10010030010000ll, 13296: partsUsed | 0x40l); 13297: if(!(puzzle & 0x10030010010000ll)) 13298: altDoSolve(17, 0x20000ll, puzzle | 0x10030010010000ll, 13299: partsUsed | 0x40l); 13300: } 13301: if (!(puzzle & 0x2490000ll)) { 13302: if(!(puzzle & 0x402490000ll)) 13303: altDoSolve(17, 0x20000ll, puzzle | 0x402490000ll, 13304: partsUsed | 0x40l); 13305: if(!(puzzle & 0x2590000ll)) 13306: altDoSolve(17, 0x20000ll, puzzle | 0x2590000ll, 13307: partsUsed | 0x40l); 13308: if(!(puzzle & 0x82490000ll)) 13309: altDoSolve(17, 0x20000ll, puzzle | 0x82490000ll, 13310: partsUsed | 0x40l); 13311: if(!(puzzle & 0x2c90000ll)) 13312: altDoSolve(17, 0x20000ll, puzzle | 0x2c90000ll, 13313: partsUsed | 0x40l); 13314: } 13315: altpiece7at16: 13316: if (partsUsed & 0x80l) goto altpiece8at16; 13317: if(!(puzzle & 0x90010090000ll)) 13318: altDoSolve(17, 0x20000ll, puzzle | 0x90010090000ll, 13319: partsUsed | 0x80l); 13320: if(!(puzzle & 0x90080090000ll)) 13321: altDoSolve(17, 0x20000ll, puzzle | 0x90080090000ll, 13322: partsUsed | 0x80l); 13323: if(!(puzzle & 0x490410000ll)) 13324: altDoSolve(17, 0x20000ll, puzzle | 0x490410000ll, 13325: partsUsed | 0x80l); 13326: if(!(puzzle & 0x410490000ll)) 13327: altDoSolve(17, 0x20000ll, puzzle | 0x410490000ll, 13328: partsUsed | 0x80l); 13329: if(!(puzzle & 0x2f0000ll)) 13330: altDoSolve(17, 0x20000ll, puzzle | 0x2f0000ll, 13331: partsUsed | 0x80l); 13332: if(!(puzzle & 0xcb0000ll)) 13333: altDoSolve(17, 0x20000ll, puzzle | 0xcb0000ll, 13334: partsUsed | 0x80l); 13335: if(!(puzzle & 0xd30000ll)) 13336: altDoSolve(17, 0x20000ll, puzzle | 0xd30000ll, 13337: partsUsed | 0x80l); 13338: if(!(puzzle & 0x3d0000ll)) 13339: altDoSolve(17, 0x20000ll, puzzle | 0x3d0000ll, 13340: partsUsed | 0x80l); 13341: if(!(puzzle & 0x30020030000ll)) 13342: altDoSolve(17, 0x20000ll, puzzle | 0x30020030000ll, 13343: partsUsed | 0x80l); 13344: if(!(puzzle & 0x30010030000ll)) 13345: altDoSolve(17, 0x20000ll, puzzle | 0x30010030000ll, 13346: partsUsed | 0x80l); 13347: if(!(puzzle & 0x70050000ll)) 13348: altDoSolve(17, 0x20000ll, puzzle | 0x70050000ll, 13349: partsUsed | 0x80l); 13350: if(!(puzzle & 0x50070000ll)) 13351: altDoSolve(17, 0x20000ll, puzzle | 0x50070000ll, 13352: partsUsed | 0x80l); 13353: altpiece8at16: 13354: if (partsUsed & 0x100l) goto altpiece9at16; 13355: if(!(puzzle & 0x100130000ll)) 13356: altDoSolve(17, 0x20000ll, puzzle | 0x100130000ll, 13357: partsUsed | 0x100l); 13358: if(!(puzzle & 0x130010000ll)) 13359: altDoSolve(17, 0x20000ll, puzzle | 0x130010000ll, 13360: partsUsed | 0x100l); 13361: if(!(puzzle & 0x200b0000ll)) 13362: altDoSolve(17, 0x20000ll, puzzle | 0x200b0000ll, 13363: partsUsed | 0x100l); 13364: if(!(puzzle & 0x90030000ll)) 13365: altDoSolve(17, 0x20000ll, puzzle | 0x90030000ll, 13366: partsUsed | 0x100l); 13367: if(!(puzzle & 0x180090000ll)) 13368: altDoSolve(17, 0x20000ll, puzzle | 0x180090000ll, 13369: partsUsed | 0x100l); 13370: if(!(puzzle & 0x10190000ll)) 13371: altDoSolve(17, 0x20000ll, puzzle | 0x10190000ll, 13372: partsUsed | 0x100l); 13373: altpiece9at16: 13374: if (partsUsed & 0x200l) goto altpiece10at16; 13375: if(!(puzzle & 0x80490010000ll)) 13376: altDoSolve(17, 0x20000ll, puzzle | 0x80490010000ll, 13377: partsUsed | 0x200l); 13378: if(!(puzzle & 0x80480090000ll)) 13379: altDoSolve(17, 0x20000ll, puzzle | 0x80480090000ll, 13380: partsUsed | 0x200l); 13381: if(!(puzzle & 0xb30000ll)) 13382: altDoSolve(17, 0x20000ll, puzzle | 0xb30000ll, 13383: partsUsed | 0x200l); 13384: if(!(puzzle & 0xb90000ll)) 13385: altDoSolve(17, 0x20000ll, puzzle | 0xb90000ll, 13386: partsUsed | 0x200l); 13387: if(!(puzzle & 0x20060030000ll)) 13388: altDoSolve(17, 0x20000ll, puzzle | 0x20060030000ll, 13389: partsUsed | 0x200l); 13390: if(!(puzzle & 0x20070010000ll)) 13391: altDoSolve(17, 0x20000ll, puzzle | 0x20070010000ll, 13392: partsUsed | 0x200l); 13393: altpiece10at16: 13394: if (partsUsed & 0x400l) goto altpiece11at16; 13395: if (!(puzzle & 0x80090000ll)) { 13396: if(!(puzzle & 0x10090090000ll)) 13397: altDoSolve(17, 0x20000ll, puzzle | 0x10090090000ll, 13398: partsUsed | 0x400l); 13399: if(!(puzzle & 0x490090000ll)) 13400: altDoSolve(17, 0x20000ll, puzzle | 0x490090000ll, 13401: partsUsed | 0x400l); 13402: if(!(puzzle & 0x480490000ll)) 13403: altDoSolve(17, 0x20000ll, puzzle | 0x480490000ll, 13404: partsUsed | 0x400l); 13405: if(!(puzzle & 0x90490000ll)) 13406: altDoSolve(17, 0x20000ll, puzzle | 0x90490000ll, 13407: partsUsed | 0x400l); 13408: if(!(puzzle & 0x80090090000ll)) 13409: altDoSolve(17, 0x20000ll, puzzle | 0x80090090000ll, 13410: partsUsed | 0x400l); 13411: } 13412: if (!(puzzle & 0x130000ll)) { 13413: if(!(puzzle & 0x370000ll)) 13414: altDoSolve(17, 0x20000ll, puzzle | 0x370000ll, 13415: partsUsed | 0x400l); 13416: if(!(puzzle & 0x1f0000ll)) 13417: altDoSolve(17, 0x20000ll, puzzle | 0x1f0000ll, 13418: partsUsed | 0x400l); 13419: if(!(puzzle & 0x5b0000ll)) 13420: altDoSolve(17, 0x20000ll, puzzle | 0x5b0000ll, 13421: partsUsed | 0x400l); 13422: if(!(puzzle & 0x9b0000ll)) 13423: altDoSolve(17, 0x20000ll, puzzle | 0x9b0000ll, 13424: partsUsed | 0x400l); 13425: if(!(puzzle & 0x3b0000ll)) 13426: altDoSolve(17, 0x20000ll, puzzle | 0x3b0000ll, 13427: partsUsed | 0x400l); 13428: } 13429: if (!(puzzle & 0x10010010000ll)) { 13430: if(!(puzzle & 0x90090010000ll)) 13431: altDoSolve(17, 0x20000ll, puzzle | 0x90090010000ll, 13432: partsUsed | 0x400l); 13433: if(!(puzzle & 0x10030030000ll)) 13434: altDoSolve(17, 0x20000ll, puzzle | 0x10030030000ll, 13435: partsUsed | 0x400l); 13436: if(!(puzzle & 0x30030010000ll)) 13437: altDoSolve(17, 0x20000ll, puzzle | 0x30030010000ll, 13438: partsUsed | 0x400l); 13439: } 13440: if (!(puzzle & 0x20030000ll)) { 13441: if(!(puzzle & 0x20030030000ll)) 13442: altDoSolve(17, 0x20000ll, puzzle | 0x20030030000ll, 13443: partsUsed | 0x400l); 13444: if(!(puzzle & 0x70030000ll)) 13445: altDoSolve(17, 0x20000ll, puzzle | 0x70030000ll, 13446: partsUsed | 0x400l); 13447: if(!(puzzle & 0x30070000ll)) 13448: altDoSolve(17, 0x20000ll, puzzle | 0x30070000ll, 13449: partsUsed | 0x400l); 13450: if(!(puzzle & 0x60070000ll)) 13451: altDoSolve(17, 0x20000ll, puzzle | 0x60070000ll, 13452: partsUsed | 0x400l); 13453: } 13454: if(!(puzzle & 0xd90000ll)) 13455: altDoSolve(17, 0x20000ll, puzzle | 0xd90000ll, 13456: partsUsed | 0x400l); 13457: altpiece11at16: 13458: break; 13459: case 17: 13460: if (partsUsed & 0x2l) goto altpiece2at17; 13461: if(!(puzzle & 0x5e0000ll)) 13462: altDoSolve(18, 0x40000ll, puzzle | 0x5e0000ll, 13463: partsUsed | 0x2l); 13464: if(!(puzzle & 0x10030060000ll)) 13465: altDoSolve(18, 0x40000ll, puzzle | 0x10030060000ll, 13466: partsUsed | 0x2l); 13467: if(!(puzzle & 0x900120020000ll)) 13468: altDoSolve(18, 0x40000ll, puzzle | 0x900120020000ll, 13469: partsUsed | 0x2l); 13470: if(!(puzzle & 0x800900120000ll)) 13471: altDoSolve(18, 0x40000ll, puzzle | 0x800900120000ll, 13472: partsUsed | 0x2l); 13473: altpiece2at17: 13474: if (partsUsed & 0x4l) goto altpiece3at17; 13475: if(!(puzzle & 0x1d20000ll)) 13476: altDoSolve(18, 0x40000ll, puzzle | 0x1d20000ll, 13477: partsUsed | 0x4l); 13478: if(!(puzzle & 0x100100920000ll)) 13479: altDoSolve(18, 0x40000ll, puzzle | 0x100100920000ll, 13480: partsUsed | 0x4l); 13481: if(!(puzzle & 0x70020020000ll)) 13482: altDoSolve(18, 0x40000ll, puzzle | 0x70020020000ll, 13483: partsUsed | 0x4l); 13484: if(!(puzzle & 0x20920020000ll)) 13485: altDoSolve(18, 0x40000ll, puzzle | 0x20920020000ll, 13486: partsUsed | 0x4l); 13487: altpiece3at17: 13488: if (partsUsed & 0x8l) goto altpiece4at17; 13489: if(!(puzzle & 0xd60000ll)) 13490: altDoSolve(18, 0x40000ll, puzzle | 0xd60000ll, 13491: partsUsed | 0x8l); 13492: if(!(puzzle & 0x30020060000ll)) 13493: altDoSolve(18, 0x40000ll, puzzle | 0x30020060000ll, 13494: partsUsed | 0x8l); 13495: if(!(puzzle & 0x800920020000ll)) 13496: altDoSolve(18, 0x40000ll, puzzle | 0x800920020000ll, 13497: partsUsed | 0x8l); 13498: if(!(puzzle & 0x900100120000ll)) 13499: altDoSolve(18, 0x40000ll, puzzle | 0x900100120000ll, 13500: partsUsed | 0x8l); 13501: altpiece4at17: 13502: if (partsUsed & 0x10l) goto altpiece5at17; 13503: if (!(puzzle & 0x4920000ll)) { 13504: if(!(puzzle & 0x69a0000ll)) 13505: altDoSolve(18, 0x40000ll, puzzle | 0x69a0000ll, 13506: partsUsed | 0x10l); 13507: if(!(puzzle & 0x824920000ll)) 13508: altDoSolve(18, 0x40000ll, puzzle | 0x824920000ll, 13509: partsUsed | 0x10l); 13510: if(!(puzzle & 0xcb20000ll)) 13511: altDoSolve(18, 0x40000ll, puzzle | 0xcb20000ll, 13512: partsUsed | 0x10l); 13513: if(!(puzzle & 0x4104920000ll)) 13514: altDoSolve(18, 0x40000ll, puzzle | 0x4104920000ll, 13515: partsUsed | 0x10l); 13516: if(!(puzzle & 0x5960000ll)) 13517: altDoSolve(18, 0x40000ll, puzzle | 0x5960000ll, 13518: partsUsed | 0x10l); 13519: } 13520: if (!(puzzle & 0x20020020020000ll)) { 13521: if(!(puzzle & 0x30020030020000ll)) 13522: altDoSolve(18, 0x40000ll, puzzle | 0x30020030020000ll, 13523: partsUsed | 0x10l); 13524: if(!(puzzle & 0x120020120020000ll)) 13525: altDoSolve(18, 0x40000ll, puzzle | 0x120020120020000ll, 13526: partsUsed | 0x10l); 13527: if(!(puzzle & 0x20120020120000ll)) 13528: altDoSolve(18, 0x40000ll, puzzle | 0x20120020120000ll, 13529: partsUsed | 0x10l); 13530: if(!(puzzle & 0x60020060020000ll)) 13531: altDoSolve(18, 0x40000ll, puzzle | 0x60020060020000ll, 13532: partsUsed | 0x10l); 13533: if(!(puzzle & 0x20060020060000ll)) 13534: altDoSolve(18, 0x40000ll, puzzle | 0x20060020060000ll, 13535: partsUsed | 0x10l); 13536: } 13537: if(!(puzzle & 0x100120100120000ll)) 13538: altDoSolve(18, 0x40000ll, puzzle | 0x100120100120000ll, 13539: partsUsed | 0x10l); 13540: if(!(puzzle & 0x9a60000ll)) 13541: altDoSolve(18, 0x40000ll, puzzle | 0x9a60000ll, 13542: partsUsed | 0x10l); 13543: if(!(puzzle & 0x4920820000ll)) 13544: altDoSolve(18, 0x40000ll, puzzle | 0x4920820000ll, 13545: partsUsed | 0x10l); 13546: if(!(puzzle & 0x40060040060000ll)) 13547: altDoSolve(18, 0x40000ll, puzzle | 0x40060040060000ll, 13548: partsUsed | 0x10l); 13549: altpiece5at17: 13550: if (partsUsed & 0x20l) goto altpiece6at17; 13551: if (!(puzzle & 0x4920000ll)) { 13552: if(!(puzzle & 0x6920000ll)) 13553: altDoSolve(18, 0x40000ll, puzzle | 0x6920000ll, 13554: partsUsed | 0x20l); 13555: if(!(puzzle & 0x4004920000ll)) 13556: altDoSolve(18, 0x40000ll, puzzle | 0x4004920000ll, 13557: partsUsed | 0x20l); 13558: if(!(puzzle & 0x4960000ll)) 13559: altDoSolve(18, 0x40000ll, puzzle | 0x4960000ll, 13560: partsUsed | 0x20l); 13561: if(!(puzzle & 0x24920000ll)) 13562: altDoSolve(18, 0x40000ll, puzzle | 0x24920000ll, 13563: partsUsed | 0x20l); 13564: if(!(puzzle & 0xc920000ll)) 13565: altDoSolve(18, 0x40000ll, puzzle | 0xc920000ll, 13566: partsUsed | 0x20l); 13567: } 13568: if (!(puzzle & 0x20020020020000ll)) { 13569: if(!(puzzle & 0x30020020020000ll)) 13570: altDoSolve(18, 0x40000ll, puzzle | 0x30020020020000ll, 13571: partsUsed | 0x20l); 13572: if(!(puzzle & 0x20020020120000ll)) 13573: altDoSolve(18, 0x40000ll, puzzle | 0x20020020120000ll, 13574: partsUsed | 0x20l); 13575: if(!(puzzle & 0x120020020020000ll)) 13576: altDoSolve(18, 0x40000ll, puzzle | 0x120020020020000ll, 13577: partsUsed | 0x20l); 13578: if(!(puzzle & 0x20020020060000ll)) 13579: altDoSolve(18, 0x40000ll, puzzle | 0x20020020060000ll, 13580: partsUsed | 0x20l); 13581: if(!(puzzle & 0x60020020020000ll)) 13582: altDoSolve(18, 0x40000ll, puzzle | 0x60020020020000ll, 13583: partsUsed | 0x20l); 13584: } 13585: if(!(puzzle & 0x4920020000ll)) 13586: altDoSolve(18, 0x40000ll, puzzle | 0x4920020000ll, 13587: partsUsed | 0x20l); 13588: if(!(puzzle & 0x9260000ll)) 13589: altDoSolve(18, 0x40000ll, puzzle | 0x9260000ll, 13590: partsUsed | 0x20l); 13591: if(!(puzzle & 0x100100100120000ll)) 13592: altDoSolve(18, 0x40000ll, puzzle | 0x100100100120000ll, 13593: partsUsed | 0x20l); 13594: if(!(puzzle & 0x40040040060000ll)) 13595: altDoSolve(18, 0x40000ll, puzzle | 0x40040040060000ll, 13596: partsUsed | 0x20l); 13597: altpiece6at17: 13598: if (partsUsed & 0x40l) goto altpiece7at17; 13599: if (!(puzzle & 0x4920000ll)) { 13600: if(!(puzzle & 0x49a0000ll)) 13601: altDoSolve(18, 0x40000ll, puzzle | 0x49a0000ll, 13602: partsUsed | 0x40l); 13603: if(!(puzzle & 0x4d20000ll)) 13604: altDoSolve(18, 0x40000ll, puzzle | 0x4d20000ll, 13605: partsUsed | 0x40l); 13606: if(!(puzzle & 0x804920000ll)) 13607: altDoSolve(18, 0x40000ll, puzzle | 0x804920000ll, 13608: partsUsed | 0x40l); 13609: if(!(puzzle & 0x4b20000ll)) 13610: altDoSolve(18, 0x40000ll, puzzle | 0x4b20000ll, 13611: partsUsed | 0x40l); 13612: if(!(puzzle & 0x104920000ll)) 13613: altDoSolve(18, 0x40000ll, puzzle | 0x104920000ll, 13614: partsUsed | 0x40l); 13615: if(!(puzzle & 0x5920000ll)) 13616: altDoSolve(18, 0x40000ll, puzzle | 0x5920000ll, 13617: partsUsed | 0x40l); 13618: } 13619: if (!(puzzle & 0x20020020020000ll)) { 13620: if(!(puzzle & 0x20020030020000ll)) 13621: altDoSolve(18, 0x40000ll, puzzle | 0x20020030020000ll, 13622: partsUsed | 0x40l); 13623: if(!(puzzle & 0x20030020020000ll)) 13624: altDoSolve(18, 0x40000ll, puzzle | 0x20030020020000ll, 13625: partsUsed | 0x40l); 13626: if(!(puzzle & 0x20020120020000ll)) 13627: altDoSolve(18, 0x40000ll, puzzle | 0x20020120020000ll, 13628: partsUsed | 0x40l); 13629: if(!(puzzle & 0x20120020020000ll)) 13630: altDoSolve(18, 0x40000ll, puzzle | 0x20120020020000ll, 13631: partsUsed | 0x40l); 13632: if(!(puzzle & 0x20020060020000ll)) 13633: altDoSolve(18, 0x40000ll, puzzle | 0x20020060020000ll, 13634: partsUsed | 0x40l); 13635: if(!(puzzle & 0x20060020020000ll)) 13636: altDoSolve(18, 0x40000ll, puzzle | 0x20060020020000ll, 13637: partsUsed | 0x40l); 13638: } 13639: altpiece7at17: 13640: if (partsUsed & 0x80l) goto altpiece8at17; 13641: if(!(puzzle & 0x120020120000ll)) 13642: altDoSolve(18, 0x40000ll, puzzle | 0x120020120000ll, 13643: partsUsed | 0x80l); 13644: if(!(puzzle & 0x120100120000ll)) 13645: altDoSolve(18, 0x40000ll, puzzle | 0x120100120000ll, 13646: partsUsed | 0x80l); 13647: if(!(puzzle & 0x920820000ll)) 13648: altDoSolve(18, 0x40000ll, puzzle | 0x920820000ll, 13649: partsUsed | 0x80l); 13650: if(!(puzzle & 0x820920000ll)) 13651: altDoSolve(18, 0x40000ll, puzzle | 0x820920000ll, 13652: partsUsed | 0x80l); 13653: if(!(puzzle & 0x1960000ll)) 13654: altDoSolve(18, 0x40000ll, puzzle | 0x1960000ll, 13655: partsUsed | 0x80l); 13656: if(!(puzzle & 0x1a60000ll)) 13657: altDoSolve(18, 0x40000ll, puzzle | 0x1a60000ll, 13658: partsUsed | 0x80l); 13659: if(!(puzzle & 0x60040060000ll)) 13660: altDoSolve(18, 0x40000ll, puzzle | 0x60040060000ll, 13661: partsUsed | 0x80l); 13662: if(!(puzzle & 0x60020060000ll)) 13663: altDoSolve(18, 0x40000ll, puzzle | 0x60020060000ll, 13664: partsUsed | 0x80l); 13665: altpiece8at17: 13666: if (partsUsed & 0x100l) goto altpiece9at17; 13667: if(!(puzzle & 0x801a0000ll)) 13668: altDoSolve(18, 0x40000ll, puzzle | 0x801a0000ll, 13669: partsUsed | 0x100l); 13670: if(!(puzzle & 0x30120000ll)) 13671: altDoSolve(18, 0x40000ll, puzzle | 0x30120000ll, 13672: partsUsed | 0x100l); 13673: if(!(puzzle & 0x20320000ll)) 13674: altDoSolve(18, 0x40000ll, puzzle | 0x20320000ll, 13675: partsUsed | 0x100l); 13676: if(!(puzzle & 0x1a0020000ll)) 13677: altDoSolve(18, 0x40000ll, puzzle | 0x1a0020000ll, 13678: partsUsed | 0x100l); 13679: if(!(puzzle & 0x120060000ll)) 13680: altDoSolve(18, 0x40000ll, puzzle | 0x120060000ll, 13681: partsUsed | 0x100l); 13682: if(!(puzzle & 0x260020000ll)) 13683: altDoSolve(18, 0x40000ll, puzzle | 0x260020000ll, 13684: partsUsed | 0x100l); 13685: if(!(puzzle & 0x40160000ll)) 13686: altDoSolve(18, 0x40000ll, puzzle | 0x40160000ll, 13687: partsUsed | 0x100l); 13688: if(!(puzzle & 0x300120000ll)) 13689: altDoSolve(18, 0x40000ll, puzzle | 0x300120000ll, 13690: partsUsed | 0x100l); 13691: if(!(puzzle & 0x200260000ll)) 13692: altDoSolve(18, 0x40000ll, puzzle | 0x200260000ll, 13693: partsUsed | 0x100l); 13694: altpiece9at17: 13695: if (partsUsed & 0x200l) goto altpiece10at17; 13696: if (!(puzzle & 0x1a0000ll)) { 13697: if(!(puzzle & 0x13a0000ll)) 13698: altDoSolve(18, 0x40000ll, puzzle | 0x13a0000ll, 13699: partsUsed | 0x200l); 13700: if(!(puzzle & 0x7a0000ll)) 13701: altDoSolve(18, 0x40000ll, puzzle | 0x7a0000ll, 13702: partsUsed | 0x200l); 13703: if(!(puzzle & 0x9e0000ll)) 13704: altDoSolve(18, 0x40000ll, puzzle | 0x9e0000ll, 13705: partsUsed | 0x200l); 13706: if(!(puzzle & 0x19a0000ll)) 13707: altDoSolve(18, 0x40000ll, puzzle | 0x19a0000ll, 13708: partsUsed | 0x200l); 13709: } 13710: if (!(puzzle & 0x20020020000ll)) { 13711: if(!(puzzle & 0x20030060000ll)) 13712: altDoSolve(18, 0x40000ll, puzzle | 0x20030060000ll, 13713: partsUsed | 0x200l); 13714: if(!(puzzle & 0x60030020000ll)) 13715: altDoSolve(18, 0x40000ll, puzzle | 0x60030020000ll, 13716: partsUsed | 0x200l); 13717: if(!(puzzle & 0x30060020000ll)) 13718: altDoSolve(18, 0x40000ll, puzzle | 0x30060020000ll, 13719: partsUsed | 0x200l); 13720: } 13721: if(!(puzzle & 0xf20000ll)) 13722: altDoSolve(18, 0x40000ll, puzzle | 0xf20000ll, 13723: partsUsed | 0x200l); 13724: if(!(puzzle & 0x10070020000ll)) 13725: altDoSolve(18, 0x40000ll, puzzle | 0x10070020000ll, 13726: partsUsed | 0x200l); 13727: if(!(puzzle & 0x40070020000ll)) 13728: altDoSolve(18, 0x40000ll, puzzle | 0x40070020000ll, 13729: partsUsed | 0x200l); 13730: if(!(puzzle & 0x100920020000ll)) 13731: altDoSolve(18, 0x40000ll, puzzle | 0x100920020000ll, 13732: partsUsed | 0x200l); 13733: if(!(puzzle & 0x100900120000ll)) 13734: altDoSolve(18, 0x40000ll, puzzle | 0x100900120000ll, 13735: partsUsed | 0x200l); 13736: altpiece10at17: 13737: if (partsUsed & 0x400l) goto altpiece11at17; 13738: if (!(puzzle & 0x100120000ll)) { 13739: if(!(puzzle & 0x20120120000ll)) 13740: altDoSolve(18, 0x40000ll, puzzle | 0x20120120000ll, 13741: partsUsed | 0x400l); 13742: if(!(puzzle & 0x920120000ll)) 13743: altDoSolve(18, 0x40000ll, puzzle | 0x920120000ll, 13744: partsUsed | 0x400l); 13745: if(!(puzzle & 0x900920000ll)) 13746: altDoSolve(18, 0x40000ll, puzzle | 0x900920000ll, 13747: partsUsed | 0x400l); 13748: if(!(puzzle & 0x120920000ll)) 13749: altDoSolve(18, 0x40000ll, puzzle | 0x120920000ll, 13750: partsUsed | 0x400l); 13751: if(!(puzzle & 0x100120120000ll)) 13752: altDoSolve(18, 0x40000ll, puzzle | 0x100120120000ll, 13753: partsUsed | 0x400l); 13754: } 13755: if (!(puzzle & 0x20020020000ll)) { 13756: if(!(puzzle & 0x120120020000ll)) 13757: altDoSolve(18, 0x40000ll, puzzle | 0x120120020000ll, 13758: partsUsed | 0x400l); 13759: if(!(puzzle & 0x20060060000ll)) 13760: altDoSolve(18, 0x40000ll, puzzle | 0x20060060000ll, 13761: partsUsed | 0x400l); 13762: if(!(puzzle & 0x60060020000ll)) 13763: altDoSolve(18, 0x40000ll, puzzle | 0x60060020000ll, 13764: partsUsed | 0x400l); 13765: } 13766: if (!(puzzle & 0x320000ll)) { 13767: if(!(puzzle & 0xb60000ll)) 13768: altDoSolve(18, 0x40000ll, puzzle | 0xb60000ll, 13769: partsUsed | 0x400l); 13770: if(!(puzzle & 0x1360000ll)) 13771: altDoSolve(18, 0x40000ll, puzzle | 0x1360000ll, 13772: partsUsed | 0x400l); 13773: if(!(puzzle & 0x1b20000ll)) 13774: altDoSolve(18, 0x40000ll, puzzle | 0x1b20000ll, 13775: partsUsed | 0x400l); 13776: } 13777: if(!(puzzle & 0x3e0000ll)) 13778: altDoSolve(18, 0x40000ll, puzzle | 0x3e0000ll, 13779: partsUsed | 0x400l); 13780: if(!(puzzle & 0xda0000ll)) 13781: altDoSolve(18, 0x40000ll, puzzle | 0xda0000ll, 13782: partsUsed | 0x400l); 13783: if(!(puzzle & 0x70060000ll)) 13784: altDoSolve(18, 0x40000ll, puzzle | 0x70060000ll, 13785: partsUsed | 0x400l); 13786: if(!(puzzle & 0x30030020000ll)) 13787: altDoSolve(18, 0x40000ll, puzzle | 0x30030020000ll, 13788: partsUsed | 0x400l); 13789: if(!(puzzle & 0x40060060000ll)) 13790: altDoSolve(18, 0x40000ll, puzzle | 0x40060060000ll, 13791: partsUsed | 0x400l); 13792: altpiece11at17: 13793: break; 13794: case 18: 13795: if (partsUsed & 0x2l) goto altpiece2at18; 13796: if(!(puzzle & 0xf40000ll)) 13797: altDoSolve(19, 0x80000ll, puzzle | 0xf40000ll, 13798: partsUsed | 0x2l); 13799: if(!(puzzle & 0x30060040000ll)) 13800: altDoSolve(19, 0x80000ll, puzzle | 0x30060040000ll, 13801: partsUsed | 0x2l); 13802: if(!(puzzle & 0x1200240040000ll)) 13803: altDoSolve(19, 0x80000ll, puzzle | 0x1200240040000ll, 13804: partsUsed | 0x2l); 13805: if(!(puzzle & 0x1001200240000ll)) 13806: altDoSolve(19, 0x80000ll, puzzle | 0x1001200240000ll, 13807: partsUsed | 0x2l); 13808: altpiece2at18: 13809: if (partsUsed & 0x4l) goto altpiece3at18; 13810: if(!(puzzle & 0x13c0000ll)) 13811: altDoSolve(19, 0x80000ll, puzzle | 0x13c0000ll, 13812: partsUsed | 0x4l); 13813: if(!(puzzle & 0x200201240000ll)) 13814: altDoSolve(19, 0x80000ll, puzzle | 0x200201240000ll, 13815: partsUsed | 0x4l); 13816: if(!(puzzle & 0x40070040000ll)) 13817: altDoSolve(19, 0x80000ll, puzzle | 0x40070040000ll, 13818: partsUsed | 0x4l); 13819: if(!(puzzle & 0x41240040000ll)) 13820: altDoSolve(19, 0x80000ll, puzzle | 0x41240040000ll, 13821: partsUsed | 0x4l); 13822: altpiece3at18: 13823: if (partsUsed & 0x8l) goto altpiece4at18; 13824: if(!(puzzle & 0x7c0000ll)) 13825: altDoSolve(19, 0x80000ll, puzzle | 0x7c0000ll, 13826: partsUsed | 0x8l); 13827: if(!(puzzle & 0x10070040000ll)) 13828: altDoSolve(19, 0x80000ll, puzzle | 0x10070040000ll, 13829: partsUsed | 0x8l); 13830: if(!(puzzle & 0x1001240040000ll)) 13831: altDoSolve(19, 0x80000ll, puzzle | 0x1001240040000ll, 13832: partsUsed | 0x8l); 13833: if(!(puzzle & 0x1200200240000ll)) 13834: altDoSolve(19, 0x80000ll, puzzle | 0x1200200240000ll, 13835: partsUsed | 0x8l); 13836: altpiece4at18: 13837: if (partsUsed & 0x10l) goto altpiece5at18; 13838: if (!(puzzle & 0x9240000ll)) { 13839: if(!(puzzle & 0xd340000ll)) 13840: altDoSolve(19, 0x80000ll, puzzle | 0xd340000ll, 13841: partsUsed | 0x10l); 13842: if(!(puzzle & 0x1049240000ll)) 13843: altDoSolve(19, 0x80000ll, puzzle | 0x1049240000ll, 13844: partsUsed | 0x10l); 13845: if(!(puzzle & 0x8209240000ll)) 13846: altDoSolve(19, 0x80000ll, puzzle | 0x8209240000ll, 13847: partsUsed | 0x10l); 13848: } 13849: if (!(puzzle & 0x40040040040000ll)) { 13850: if(!(puzzle & 0x60040060040000ll)) 13851: altDoSolve(19, 0x80000ll, puzzle | 0x60040060040000ll, 13852: partsUsed | 0x10l); 13853: if(!(puzzle & 0x240040240040000ll)) 13854: altDoSolve(19, 0x80000ll, puzzle | 0x240040240040000ll, 13855: partsUsed | 0x10l); 13856: if(!(puzzle & 0x40240040240000ll)) 13857: altDoSolve(19, 0x80000ll, puzzle | 0x40240040240000ll, 13858: partsUsed | 0x10l); 13859: } 13860: if(!(puzzle & 0x200240200240000ll)) 13861: altDoSolve(19, 0x80000ll, puzzle | 0x200240200240000ll, 13862: partsUsed | 0x10l); 13863: if(!(puzzle & 0x9241040000ll)) 13864: altDoSolve(19, 0x80000ll, puzzle | 0x9241040000ll, 13865: partsUsed | 0x10l); 13866: altpiece5at18: 13867: if (partsUsed & 0x20l) goto altpiece6at18; 13868: if (!(puzzle & 0x9240000ll)) { 13869: if(!(puzzle & 0xd240000ll)) 13870: altDoSolve(19, 0x80000ll, puzzle | 0xd240000ll, 13871: partsUsed | 0x20l); 13872: if(!(puzzle & 0x8009240000ll)) 13873: altDoSolve(19, 0x80000ll, puzzle | 0x8009240000ll, 13874: partsUsed | 0x20l); 13875: if(!(puzzle & 0x49240000ll)) 13876: altDoSolve(19, 0x80000ll, puzzle | 0x49240000ll, 13877: partsUsed | 0x20l); 13878: } 13879: if (!(puzzle & 0x40040040040000ll)) { 13880: if(!(puzzle & 0x60040040040000ll)) 13881: altDoSolve(19, 0x80000ll, puzzle | 0x60040040040000ll, 13882: partsUsed | 0x20l); 13883: if(!(puzzle & 0x40040040240000ll)) 13884: altDoSolve(19, 0x80000ll, puzzle | 0x40040040240000ll, 13885: partsUsed | 0x20l); 13886: if(!(puzzle & 0x240040040040000ll)) 13887: altDoSolve(19, 0x80000ll, puzzle | 0x240040040040000ll, 13888: partsUsed | 0x20l); 13889: } 13890: if(!(puzzle & 0x9240040000ll)) 13891: altDoSolve(19, 0x80000ll, puzzle | 0x9240040000ll, 13892: partsUsed | 0x20l); 13893: if(!(puzzle & 0x200200200240000ll)) 13894: altDoSolve(19, 0x80000ll, puzzle | 0x200200200240000ll, 13895: partsUsed | 0x20l); 13896: altpiece6at18: 13897: if (partsUsed & 0x40l) goto altpiece7at18; 13898: if (!(puzzle & 0x9240000ll)) { 13899: if(!(puzzle & 0x9340000ll)) 13900: altDoSolve(19, 0x80000ll, puzzle | 0x9340000ll, 13901: partsUsed | 0x40l); 13902: if(!(puzzle & 0x9a40000ll)) 13903: altDoSolve(19, 0x80000ll, puzzle | 0x9a40000ll, 13904: partsUsed | 0x40l); 13905: if(!(puzzle & 0x1009240000ll)) 13906: altDoSolve(19, 0x80000ll, puzzle | 0x1009240000ll, 13907: partsUsed | 0x40l); 13908: if(!(puzzle & 0x209240000ll)) 13909: altDoSolve(19, 0x80000ll, puzzle | 0x209240000ll, 13910: partsUsed | 0x40l); 13911: } 13912: if (!(puzzle & 0x40040040040000ll)) { 13913: if(!(puzzle & 0x40040060040000ll)) 13914: altDoSolve(19, 0x80000ll, puzzle | 0x40040060040000ll, 13915: partsUsed | 0x40l); 13916: if(!(puzzle & 0x40060040040000ll)) 13917: altDoSolve(19, 0x80000ll, puzzle | 0x40060040040000ll, 13918: partsUsed | 0x40l); 13919: if(!(puzzle & 0x40040240040000ll)) 13920: altDoSolve(19, 0x80000ll, puzzle | 0x40040240040000ll, 13921: partsUsed | 0x40l); 13922: if(!(puzzle & 0x40240040040000ll)) 13923: altDoSolve(19, 0x80000ll, puzzle | 0x40240040040000ll, 13924: partsUsed | 0x40l); 13925: } 13926: altpiece7at18: 13927: if (partsUsed & 0x80l) goto altpiece8at18; 13928: if(!(puzzle & 0x240040240000ll)) 13929: altDoSolve(19, 0x80000ll, puzzle | 0x240040240000ll, 13930: partsUsed | 0x80l); 13931: if(!(puzzle & 0x240200240000ll)) 13932: altDoSolve(19, 0x80000ll, puzzle | 0x240200240000ll, 13933: partsUsed | 0x80l); 13934: if(!(puzzle & 0x1241040000ll)) 13935: altDoSolve(19, 0x80000ll, puzzle | 0x1241040000ll, 13936: partsUsed | 0x80l); 13937: if(!(puzzle & 0x1041240000ll)) 13938: altDoSolve(19, 0x80000ll, puzzle | 0x1041240000ll, 13939: partsUsed | 0x80l); 13940: altpiece8at18: 13941: if (partsUsed & 0x100l) goto altpiece9at18; 13942: if(!(puzzle & 0x340040000ll)) 13943: altDoSolve(19, 0x80000ll, puzzle | 0x340040000ll, 13944: partsUsed | 0x100l); 13945: if(!(puzzle & 0x100340000ll)) 13946: altDoSolve(19, 0x80000ll, puzzle | 0x100340000ll, 13947: partsUsed | 0x100l); 13948: if(!(puzzle & 0x60240000ll)) 13949: altDoSolve(19, 0x80000ll, puzzle | 0x60240000ll, 13950: partsUsed | 0x100l); 13951: altpiece9at18: 13952: if (partsUsed & 0x200l) goto altpiece10at18; 13953: if(!(puzzle & 0xbc0000ll)) 13954: altDoSolve(19, 0x80000ll, puzzle | 0xbc0000ll, 13955: partsUsed | 0x200l); 13956: if(!(puzzle & 0x20070040000ll)) 13957: altDoSolve(19, 0x80000ll, puzzle | 0x20070040000ll, 13958: partsUsed | 0x200l); 13959: if(!(puzzle & 0x201240040000ll)) 13960: altDoSolve(19, 0x80000ll, puzzle | 0x201240040000ll, 13961: partsUsed | 0x200l); 13962: if(!(puzzle & 0x201200240000ll)) 13963: altDoSolve(19, 0x80000ll, puzzle | 0x201200240000ll, 13964: partsUsed | 0x200l); 13965: altpiece10at18: 13966: if (partsUsed & 0x400l) goto altpiece11at18; 13967: if (!(puzzle & 0x1240000ll)) { 13968: if(!(puzzle & 0x1b40000ll)) 13969: altDoSolve(19, 0x80000ll, puzzle | 0x1b40000ll, 13970: partsUsed | 0x400l); 13971: if(!(puzzle & 0x1201240000ll)) 13972: altDoSolve(19, 0x80000ll, puzzle | 0x1201240000ll, 13973: partsUsed | 0x400l); 13974: if(!(puzzle & 0x241240000ll)) 13975: altDoSolve(19, 0x80000ll, puzzle | 0x241240000ll, 13976: partsUsed | 0x400l); 13977: } 13978: if (!(puzzle & 0x40040040000ll)) { 13979: if(!(puzzle & 0x60060040000ll)) 13980: altDoSolve(19, 0x80000ll, puzzle | 0x60060040000ll, 13981: partsUsed | 0x400l); 13982: if(!(puzzle & 0x40240240000ll)) 13983: altDoSolve(19, 0x80000ll, puzzle | 0x40240240000ll, 13984: partsUsed | 0x400l); 13985: if(!(puzzle & 0x240240040000ll)) 13986: altDoSolve(19, 0x80000ll, puzzle | 0x240240040000ll, 13987: partsUsed | 0x400l); 13988: } 13989: if(!(puzzle & 0x1240240000ll)) 13990: altDoSolve(19, 0x80000ll, puzzle | 0x1240240000ll, 13991: partsUsed | 0x400l); 13992: if(!(puzzle & 0x200240240000ll)) 13993: altDoSolve(19, 0x80000ll, puzzle | 0x200240240000ll, 13994: partsUsed | 0x400l); 13995: altpiece11at18: 13996: break; 13997: case 19: 13998: if (partsUsed & 0x2l) goto altpiece2at19; 13999: if(!(puzzle & 0x10090480000ll)) 14000: altDoSolve(20, 0x100000ll, puzzle | 0x10090480000ll, 14001: partsUsed | 0x2l); 14002: if(!(puzzle & 0x2400480080000ll)) 14003: altDoSolve(20, 0x100000ll, puzzle | 0x2400480080000ll, 14004: partsUsed | 0x2l); 14005: if(!(puzzle & 0x2002400480000ll)) 14006: altDoSolve(20, 0x100000ll, puzzle | 0x2002400480000ll, 14007: partsUsed | 0x2l); 14008: if(!(puzzle & 0x9980000ll)) 14009: altDoSolve(20, 0x100000ll, puzzle | 0x9980000ll, 14010: partsUsed | 0x2l); 14011: if(!(puzzle & 0xcc80000ll)) 14012: altDoSolve(20, 0x100000ll, puzzle | 0xcc80000ll, 14013: partsUsed | 0x2l); 14014: if(!(puzzle & 0x200300180000ll)) 14015: altDoSolve(20, 0x100000ll, puzzle | 0x200300180000ll, 14016: partsUsed | 0x2l); 14017: if(!(puzzle & 0x300180080000ll)) 14018: altDoSolve(20, 0x100000ll, puzzle | 0x300180080000ll, 14019: partsUsed | 0x2l); 14020: altpiece2at19: 14021: if (partsUsed & 0x4l) goto altpiece3at19; 14022: if (!(puzzle & 0x80080080000ll)) { 14023: if(!(puzzle & 0x490080080000ll)) 14024: altDoSolve(20, 0x100000ll, puzzle | 0x490080080000ll, 14025: partsUsed | 0x4l); 14026: if(!(puzzle & 0x82480080000ll)) 14027: altDoSolve(20, 0x100000ll, puzzle | 0x82480080000ll, 14028: partsUsed | 0x4l); 14029: if(!(puzzle & 0x80380080000ll)) 14030: altDoSolve(20, 0x100000ll, puzzle | 0x80380080000ll, 14031: partsUsed | 0x4l); 14032: } 14033: if(!(puzzle & 0x400402480000ll)) 14034: altDoSolve(20, 0x100000ll, puzzle | 0x400402480000ll, 14035: partsUsed | 0x4l); 14036: if(!(puzzle & 0x3c80000ll)) 14037: altDoSolve(20, 0x100000ll, puzzle | 0x3c80000ll, 14038: partsUsed | 0x4l); 14039: if(!(puzzle & 0x4b80000ll)) 14040: altDoSolve(20, 0x100000ll, puzzle | 0x4b80000ll, 14041: partsUsed | 0x4l); 14042: if(!(puzzle & 0x100100380000ll)) 14043: altDoSolve(20, 0x100000ll, puzzle | 0x100100380000ll, 14044: partsUsed | 0x4l); 14045: altpiece3at19: 14046: if (partsUsed & 0x8l) goto altpiece4at19; 14047: if(!(puzzle & 0x90080480000ll)) 14048: altDoSolve(20, 0x100000ll, puzzle | 0x90080480000ll, 14049: partsUsed | 0x8l); 14050: if(!(puzzle & 0x2002480080000ll)) 14051: altDoSolve(20, 0x100000ll, puzzle | 0x2002480080000ll, 14052: partsUsed | 0x8l); 14053: if(!(puzzle & 0x2400400480000ll)) 14054: altDoSolve(20, 0x100000ll, puzzle | 0x2400400480000ll, 14055: partsUsed | 0x8l); 14056: if(!(puzzle & 0xc980000ll)) 14057: altDoSolve(20, 0x100000ll, puzzle | 0xc980000ll, 14058: partsUsed | 0x8l); 14059: if(!(puzzle & 0x9c80000ll)) 14060: altDoSolve(20, 0x100000ll, puzzle | 0x9c80000ll, 14061: partsUsed | 0x8l); 14062: if(!(puzzle & 0x200380080000ll)) 14063: altDoSolve(20, 0x100000ll, puzzle | 0x200380080000ll, 14064: partsUsed | 0x8l); 14065: if(!(puzzle & 0x300100180000ll)) 14066: altDoSolve(20, 0x100000ll, puzzle | 0x300100180000ll, 14067: partsUsed | 0x8l); 14068: altpiece4at19: 14069: if (partsUsed & 0x10l) goto altpiece5at19; 14070: if (!(puzzle & 0x80080080080000ll)) { 14071: if(!(puzzle & 0x80480080480000ll)) 14072: altDoSolve(20, 0x100000ll, puzzle | 0x80480080480000ll, 14073: partsUsed | 0x10l); 14074: if(!(puzzle & 0x180080180080000ll)) 14075: altDoSolve(20, 0x100000ll, puzzle | 0x180080180080000ll, 14076: partsUsed | 0x10l); 14077: if(!(puzzle & 0x80180080180000ll)) 14078: altDoSolve(20, 0x100000ll, puzzle | 0x80180080180000ll, 14079: partsUsed | 0x10l); 14080: } 14081: if(!(puzzle & 0x2492080000ll)) 14082: altDoSolve(20, 0x100000ll, puzzle | 0x2492080000ll, 14083: partsUsed | 0x10l); 14084: if(!(puzzle & 0x90080090080000ll)) 14085: altDoSolve(20, 0x100000ll, puzzle | 0x90080090080000ll, 14086: partsUsed | 0x10l); 14087: if(!(puzzle & 0x480080480080000ll)) 14088: altDoSolve(20, 0x100000ll, puzzle | 0x480080480080000ll, 14089: partsUsed | 0x10l); 14090: if(!(puzzle & 0x400480400480000ll)) 14091: altDoSolve(20, 0x100000ll, puzzle | 0x400480400480000ll, 14092: partsUsed | 0x10l); 14093: if(!(puzzle & 0x100180100180000ll)) 14094: altDoSolve(20, 0x100000ll, puzzle | 0x100180100180000ll, 14095: partsUsed | 0x10l); 14096: altpiece5at19: 14097: if (partsUsed & 0x20l) goto altpiece6at19; 14098: if (!(puzzle & 0x80080080080000ll)) { 14099: if(!(puzzle & 0x90080080080000ll)) 14100: altDoSolve(20, 0x100000ll, puzzle | 0x90080080080000ll, 14101: partsUsed | 0x20l); 14102: if(!(puzzle & 0x80080080480000ll)) 14103: altDoSolve(20, 0x100000ll, puzzle | 0x80080080480000ll, 14104: partsUsed | 0x20l); 14105: if(!(puzzle & 0x480080080080000ll)) 14106: altDoSolve(20, 0x100000ll, puzzle | 0x480080080080000ll, 14107: partsUsed | 0x20l); 14108: if(!(puzzle & 0x80080080180000ll)) 14109: altDoSolve(20, 0x100000ll, puzzle | 0x80080080180000ll, 14110: partsUsed | 0x20l); 14111: if(!(puzzle & 0x180080080080000ll)) 14112: altDoSolve(20, 0x100000ll, puzzle | 0x180080080080000ll, 14113: partsUsed | 0x20l); 14114: } 14115: if(!(puzzle & 0x400400400480000ll)) 14116: altDoSolve(20, 0x100000ll, puzzle | 0x400400400480000ll, 14117: partsUsed | 0x20l); 14118: if(!(puzzle & 0x100100100180000ll)) 14119: altDoSolve(20, 0x100000ll, puzzle | 0x100100100180000ll, 14120: partsUsed | 0x20l); 14121: altpiece6at19: 14122: if (partsUsed & 0x40l) goto altpiece7at19; 14123: if (!(puzzle & 0x80080080080000ll)) { 14124: if(!(puzzle & 0x80090080080000ll)) 14125: altDoSolve(20, 0x100000ll, puzzle | 0x80090080080000ll, 14126: partsUsed | 0x40l); 14127: if(!(puzzle & 0x80080480080000ll)) 14128: altDoSolve(20, 0x100000ll, puzzle | 0x80080480080000ll, 14129: partsUsed | 0x40l); 14130: if(!(puzzle & 0x80480080080000ll)) 14131: altDoSolve(20, 0x100000ll, puzzle | 0x80480080080000ll, 14132: partsUsed | 0x40l); 14133: if(!(puzzle & 0x80080180080000ll)) 14134: altDoSolve(20, 0x100000ll, puzzle | 0x80080180080000ll, 14135: partsUsed | 0x40l); 14136: if(!(puzzle & 0x80180080080000ll)) 14137: altDoSolve(20, 0x100000ll, puzzle | 0x80180080080000ll, 14138: partsUsed | 0x40l); 14139: } 14140: if(!(puzzle & 0x2490080000ll)) 14141: altDoSolve(20, 0x100000ll, puzzle | 0x2490080000ll, 14142: partsUsed | 0x40l); 14143: if(!(puzzle & 0x80080090080000ll)) 14144: altDoSolve(20, 0x100000ll, puzzle | 0x80080090080000ll, 14145: partsUsed | 0x40l); 14146: altpiece7at19: 14147: if (partsUsed & 0x80l) goto altpiece8at19; 14148: if(!(puzzle & 0x480080480000ll)) 14149: altDoSolve(20, 0x100000ll, puzzle | 0x480080480000ll, 14150: partsUsed | 0x80l); 14151: if(!(puzzle & 0x480400480000ll)) 14152: altDoSolve(20, 0x100000ll, puzzle | 0x480400480000ll, 14153: partsUsed | 0x80l); 14154: if(!(puzzle & 0x2482080000ll)) 14155: altDoSolve(20, 0x100000ll, puzzle | 0x2482080000ll, 14156: partsUsed | 0x80l); 14157: if(!(puzzle & 0x2082480000ll)) 14158: altDoSolve(20, 0x100000ll, puzzle | 0x2082480000ll, 14159: partsUsed | 0x80l); 14160: if(!(puzzle & 0x1780000ll)) 14161: altDoSolve(20, 0x100000ll, puzzle | 0x1780000ll, 14162: partsUsed | 0x80l); 14163: if(!(puzzle & 0x6580000ll)) 14164: altDoSolve(20, 0x100000ll, puzzle | 0x6580000ll, 14165: partsUsed | 0x80l); 14166: if(!(puzzle & 0x6980000ll)) 14167: altDoSolve(20, 0x100000ll, puzzle | 0x6980000ll, 14168: partsUsed | 0x80l); 14169: if(!(puzzle & 0x1e80000ll)) 14170: altDoSolve(20, 0x100000ll, puzzle | 0x1e80000ll, 14171: partsUsed | 0x80l); 14172: if(!(puzzle & 0x180100180000ll)) 14173: altDoSolve(20, 0x100000ll, puzzle | 0x180100180000ll, 14174: partsUsed | 0x80l); 14175: if(!(puzzle & 0x180080180000ll)) 14176: altDoSolve(20, 0x100000ll, puzzle | 0x180080180000ll, 14177: partsUsed | 0x80l); 14178: if(!(puzzle & 0x380280000ll)) 14179: altDoSolve(20, 0x100000ll, puzzle | 0x380280000ll, 14180: partsUsed | 0x80l); 14181: if(!(puzzle & 0x280380000ll)) 14182: altDoSolve(20, 0x100000ll, puzzle | 0x280380000ll, 14183: partsUsed | 0x80l); 14184: altpiece8at19: 14185: if (partsUsed & 0x100l) goto altpiece9at19; 14186: if(!(puzzle & 0x120180000ll)) 14187: altDoSolve(20, 0x100000ll, puzzle | 0x120180000ll, 14188: partsUsed | 0x100l); 14189: if(!(puzzle & 0x100580000ll)) 14190: altDoSolve(20, 0x100000ll, puzzle | 0x100580000ll, 14191: partsUsed | 0x100l); 14192: if(!(puzzle & 0xb0080000ll)) 14193: altDoSolve(20, 0x100000ll, puzzle | 0xb0080000ll, 14194: partsUsed | 0x100l); 14195: if(!(puzzle & 0x980080000ll)) 14196: altDoSolve(20, 0x100000ll, puzzle | 0x980080000ll, 14197: partsUsed | 0x100l); 14198: if(!(puzzle & 0x480180000ll)) 14199: altDoSolve(20, 0x100000ll, puzzle | 0x480180000ll, 14200: partsUsed | 0x100l); 14201: if(!(puzzle & 0xc00480000ll)) 14202: altDoSolve(20, 0x100000ll, puzzle | 0xc00480000ll, 14203: partsUsed | 0x100l); 14204: if(!(puzzle & 0x80c80000ll)) 14205: altDoSolve(20, 0x100000ll, puzzle | 0x80c80000ll, 14206: partsUsed | 0x100l); 14207: if(!(puzzle & 0x800980000ll)) 14208: altDoSolve(20, 0x100000ll, puzzle | 0x800980000ll, 14209: partsUsed | 0x100l); 14210: altpiece9at19: 14211: if (partsUsed & 0x200l) goto altpiece10at19; 14212: if (!(puzzle & 0x80080080000ll)) { 14213: if(!(puzzle & 0x80090480000ll)) 14214: altDoSolve(20, 0x100000ll, puzzle | 0x80090480000ll, 14215: partsUsed | 0x200l); 14216: if(!(puzzle & 0x90480080000ll)) 14217: altDoSolve(20, 0x100000ll, puzzle | 0x90480080000ll, 14218: partsUsed | 0x200l); 14219: if(!(puzzle & 0x480090080000ll)) 14220: altDoSolve(20, 0x100000ll, puzzle | 0x480090080000ll, 14221: partsUsed | 0x200l); 14222: } 14223: if (!(puzzle & 0x480080000ll)) { 14224: if(!(puzzle & 0x400490080000ll)) 14225: altDoSolve(20, 0x100000ll, puzzle | 0x400490080000ll, 14226: partsUsed | 0x200l); 14227: if(!(puzzle & 0x10490080000ll)) 14228: altDoSolve(20, 0x100000ll, puzzle | 0x10490080000ll, 14229: partsUsed | 0x200l); 14230: if(!(puzzle & 0x402480080000ll)) 14231: altDoSolve(20, 0x100000ll, puzzle | 0x402480080000ll, 14232: partsUsed | 0x200l); 14233: } 14234: if(!(puzzle & 0x5980000ll)) 14235: altDoSolve(20, 0x100000ll, puzzle | 0x5980000ll, 14236: partsUsed | 0x200l); 14237: if(!(puzzle & 0x5c80000ll)) 14238: altDoSolve(20, 0x100000ll, puzzle | 0x5c80000ll, 14239: partsUsed | 0x200l); 14240: if(!(puzzle & 0x402400480000ll)) 14241: altDoSolve(20, 0x100000ll, puzzle | 0x402400480000ll, 14242: partsUsed | 0x200l); 14243: if(!(puzzle & 0x100300180000ll)) 14244: altDoSolve(20, 0x100000ll, puzzle | 0x100300180000ll, 14245: partsUsed | 0x200l); 14246: if(!(puzzle & 0x100380080000ll)) 14247: altDoSolve(20, 0x100000ll, puzzle | 0x100380080000ll, 14248: partsUsed | 0x200l); 14249: altpiece10at19: 14250: if (partsUsed & 0x400l) goto altpiece11at19; 14251: if (!(puzzle & 0x400480000ll)) { 14252: if(!(puzzle & 0x80480480000ll)) 14253: altDoSolve(20, 0x100000ll, puzzle | 0x80480480000ll, 14254: partsUsed | 0x400l); 14255: if(!(puzzle & 0x2480480000ll)) 14256: altDoSolve(20, 0x100000ll, puzzle | 0x2480480000ll, 14257: partsUsed | 0x400l); 14258: if(!(puzzle & 0x2402480000ll)) 14259: altDoSolve(20, 0x100000ll, puzzle | 0x2402480000ll, 14260: partsUsed | 0x400l); 14261: if(!(puzzle & 0x482480000ll)) 14262: altDoSolve(20, 0x100000ll, puzzle | 0x482480000ll, 14263: partsUsed | 0x400l); 14264: if(!(puzzle & 0x400480480000ll)) 14265: altDoSolve(20, 0x100000ll, puzzle | 0x400480480000ll, 14266: partsUsed | 0x400l); 14267: } 14268: if (!(puzzle & 0x980000ll)) { 14269: if(!(puzzle & 0x1b80000ll)) 14270: altDoSolve(20, 0x100000ll, puzzle | 0x1b80000ll, 14271: partsUsed | 0x400l); 14272: if(!(puzzle & 0xf80000ll)) 14273: altDoSolve(20, 0x100000ll, puzzle | 0xf80000ll, 14274: partsUsed | 0x400l); 14275: if(!(puzzle & 0x2d80000ll)) 14276: altDoSolve(20, 0x100000ll, puzzle | 0x2d80000ll, 14277: partsUsed | 0x400l); 14278: if(!(puzzle & 0x4d80000ll)) 14279: altDoSolve(20, 0x100000ll, puzzle | 0x4d80000ll, 14280: partsUsed | 0x400l); 14281: if(!(puzzle & 0x1d80000ll)) 14282: altDoSolve(20, 0x100000ll, puzzle | 0x1d80000ll, 14283: partsUsed | 0x400l); 14284: } 14285: if (!(puzzle & 0x80080080000ll)) { 14286: if(!(puzzle & 0x480480080000ll)) 14287: altDoSolve(20, 0x100000ll, puzzle | 0x480480080000ll, 14288: partsUsed | 0x400l); 14289: if(!(puzzle & 0x80180180000ll)) 14290: altDoSolve(20, 0x100000ll, puzzle | 0x80180180000ll, 14291: partsUsed | 0x400l); 14292: if(!(puzzle & 0x180180080000ll)) 14293: altDoSolve(20, 0x100000ll, puzzle | 0x180180080000ll, 14294: partsUsed | 0x400l); 14295: } 14296: if (!(puzzle & 0x100180000ll)) { 14297: if(!(puzzle & 0x100180180000ll)) 14298: altDoSolve(20, 0x100000ll, puzzle | 0x100180180000ll, 14299: partsUsed | 0x400l); 14300: if(!(puzzle & 0x380180000ll)) 14301: altDoSolve(20, 0x100000ll, puzzle | 0x380180000ll, 14302: partsUsed | 0x400l); 14303: if(!(puzzle & 0x180380000ll)) 14304: altDoSolve(20, 0x100000ll, puzzle | 0x180380000ll, 14305: partsUsed | 0x400l); 14306: if(!(puzzle & 0x300380000ll)) 14307: altDoSolve(20, 0x100000ll, puzzle | 0x300380000ll, 14308: partsUsed | 0x400l); 14309: } 14310: if(!(puzzle & 0x90090080000ll)) 14311: altDoSolve(20, 0x100000ll, puzzle | 0x90090080000ll, 14312: partsUsed | 0x400l); 14313: if(!(puzzle & 0x490480000ll)) 14314: altDoSolve(20, 0x100000ll, puzzle | 0x490480000ll, 14315: partsUsed | 0x400l); 14316: if(!(puzzle & 0x6c80000ll)) 14317: altDoSolve(20, 0x100000ll, puzzle | 0x6c80000ll, 14318: partsUsed | 0x400l); 14319: altpiece11at19: 14320: break; 14321: case 20: 14322: if (partsUsed & 0x2l) goto altpiece2at20; 14323: if(!(puzzle & 0x20120900000ll)) 14324: altDoSolve(21, 0x200000ll, puzzle | 0x20120900000ll, 14325: partsUsed | 0x2l); 14326: if(!(puzzle & 0x2f00000ll)) 14327: altDoSolve(21, 0x200000ll, puzzle | 0x2f00000ll, 14328: partsUsed | 0x2l); 14329: if(!(puzzle & 0x80180300000ll)) 14330: altDoSolve(21, 0x200000ll, puzzle | 0x80180300000ll, 14331: partsUsed | 0x2l); 14332: if(!(puzzle & 0x4800900100000ll)) 14333: altDoSolve(21, 0x200000ll, puzzle | 0x4800900100000ll, 14334: partsUsed | 0x2l); 14335: if(!(puzzle & 0x4004800900000ll)) 14336: altDoSolve(21, 0x200000ll, puzzle | 0x4004800900000ll, 14337: partsUsed | 0x2l); 14338: altpiece2at20: 14339: if (partsUsed & 0x4l) goto altpiece3at20; 14340: if (!(puzzle & 0x100100100000ll)) { 14341: if(!(puzzle & 0x920100100000ll)) 14342: altDoSolve(21, 0x200000ll, puzzle | 0x920100100000ll, 14343: partsUsed | 0x4l); 14344: if(!(puzzle & 0x380100100000ll)) 14345: altDoSolve(21, 0x200000ll, puzzle | 0x380100100000ll, 14346: partsUsed | 0x4l); 14347: if(!(puzzle & 0x104900100000ll)) 14348: altDoSolve(21, 0x200000ll, puzzle | 0x104900100000ll, 14349: partsUsed | 0x4l); 14350: } 14351: if(!(puzzle & 0xe900000ll)) 14352: altDoSolve(21, 0x200000ll, puzzle | 0xe900000ll, 14353: partsUsed | 0x4l); 14354: if(!(puzzle & 0x800804900000ll)) 14355: altDoSolve(21, 0x200000ll, puzzle | 0x800804900000ll, 14356: partsUsed | 0x4l); 14357: altpiece3at20: 14358: if (partsUsed & 0x8l) goto altpiece4at20; 14359: if(!(puzzle & 0x120100900000ll)) 14360: altDoSolve(21, 0x200000ll, puzzle | 0x120100900000ll, 14361: partsUsed | 0x8l); 14362: if(!(puzzle & 0x180100300000ll)) 14363: altDoSolve(21, 0x200000ll, puzzle | 0x180100300000ll, 14364: partsUsed | 0x8l); 14365: if(!(puzzle & 0x6b00000ll)) 14366: altDoSolve(21, 0x200000ll, puzzle | 0x6b00000ll, 14367: partsUsed | 0x8l); 14368: if(!(puzzle & 0x4004900100000ll)) 14369: altDoSolve(21, 0x200000ll, puzzle | 0x4004900100000ll, 14370: partsUsed | 0x8l); 14371: if(!(puzzle & 0x4800800900000ll)) 14372: altDoSolve(21, 0x200000ll, puzzle | 0x4800800900000ll, 14373: partsUsed | 0x8l); 14374: altpiece4at20: 14375: if (partsUsed & 0x10l) goto altpiece5at20; 14376: if (!(puzzle & 0x100100100100000ll)) { 14377: if(!(puzzle & 0x180100180100000ll)) 14378: altDoSolve(21, 0x200000ll, puzzle | 0x180100180100000ll, 14379: partsUsed | 0x10l); 14380: if(!(puzzle & 0x900100900100000ll)) 14381: altDoSolve(21, 0x200000ll, puzzle | 0x900100900100000ll, 14382: partsUsed | 0x10l); 14383: if(!(puzzle & 0x100900100900000ll)) 14384: altDoSolve(21, 0x200000ll, puzzle | 0x100900100900000ll, 14385: partsUsed | 0x10l); 14386: if(!(puzzle & 0x300100300100000ll)) 14387: altDoSolve(21, 0x200000ll, puzzle | 0x300100300100000ll, 14388: partsUsed | 0x10l); 14389: if(!(puzzle & 0x100300100300000ll)) 14390: altDoSolve(21, 0x200000ll, puzzle | 0x100300100300000ll, 14391: partsUsed | 0x10l); 14392: } 14393: if(!(puzzle & 0x4924100000ll)) 14394: altDoSolve(21, 0x200000ll, puzzle | 0x4924100000ll, 14395: partsUsed | 0x10l); 14396: if(!(puzzle & 0x120100120100000ll)) 14397: altDoSolve(21, 0x200000ll, puzzle | 0x120100120100000ll, 14398: partsUsed | 0x10l); 14399: if(!(puzzle & 0x800900800900000ll)) 14400: altDoSolve(21, 0x200000ll, puzzle | 0x800900800900000ll, 14401: partsUsed | 0x10l); 14402: if(!(puzzle & 0x200300200300000ll)) 14403: altDoSolve(21, 0x200000ll, puzzle | 0x200300200300000ll, 14404: partsUsed | 0x10l); 14405: altpiece5at20: 14406: if (partsUsed & 0x20l) goto altpiece6at20; 14407: if (!(puzzle & 0x100100100100000ll)) { 14408: if(!(puzzle & 0x120100100100000ll)) 14409: altDoSolve(21, 0x200000ll, puzzle | 0x120100100100000ll, 14410: partsUsed | 0x20l); 14411: if(!(puzzle & 0x180100100100000ll)) 14412: altDoSolve(21, 0x200000ll, puzzle | 0x180100100100000ll, 14413: partsUsed | 0x20l); 14414: if(!(puzzle & 0x100100100900000ll)) 14415: altDoSolve(21, 0x200000ll, puzzle | 0x100100100900000ll, 14416: partsUsed | 0x20l); 14417: if(!(puzzle & 0x900100100100000ll)) 14418: altDoSolve(21, 0x200000ll, puzzle | 0x900100100100000ll, 14419: partsUsed | 0x20l); 14420: if(!(puzzle & 0x100100100300000ll)) 14421: altDoSolve(21, 0x200000ll, puzzle | 0x100100100300000ll, 14422: partsUsed | 0x20l); 14423: if(!(puzzle & 0x300100100100000ll)) 14424: altDoSolve(21, 0x200000ll, puzzle | 0x300100100100000ll, 14425: partsUsed | 0x20l); 14426: } 14427: if(!(puzzle & 0x800800800900000ll)) 14428: altDoSolve(21, 0x200000ll, puzzle | 0x800800800900000ll, 14429: partsUsed | 0x20l); 14430: if(!(puzzle & 0x200200200300000ll)) 14431: altDoSolve(21, 0x200000ll, puzzle | 0x200200200300000ll, 14432: partsUsed | 0x20l); 14433: altpiece6at20: 14434: if (partsUsed & 0x40l) goto altpiece7at20; 14435: if (!(puzzle & 0x100100100100000ll)) { 14436: if(!(puzzle & 0x100120100100000ll)) 14437: altDoSolve(21, 0x200000ll, puzzle | 0x100120100100000ll, 14438: partsUsed | 0x40l); 14439: if(!(puzzle & 0x100100180100000ll)) 14440: altDoSolve(21, 0x200000ll, puzzle | 0x100100180100000ll, 14441: partsUsed | 0x40l); 14442: if(!(puzzle & 0x100180100100000ll)) 14443: altDoSolve(21, 0x200000ll, puzzle | 0x100180100100000ll, 14444: partsUsed | 0x40l); 14445: if(!(puzzle & 0x100100900100000ll)) 14446: altDoSolve(21, 0x200000ll, puzzle | 0x100100900100000ll, 14447: partsUsed | 0x40l); 14448: if(!(puzzle & 0x100900100100000ll)) 14449: altDoSolve(21, 0x200000ll, puzzle | 0x100900100100000ll, 14450: partsUsed | 0x40l); 14451: if(!(puzzle & 0x100100300100000ll)) 14452: altDoSolve(21, 0x200000ll, puzzle | 0x100100300100000ll, 14453: partsUsed | 0x40l); 14454: if(!(puzzle & 0x100300100100000ll)) 14455: altDoSolve(21, 0x200000ll, puzzle | 0x100300100100000ll, 14456: partsUsed | 0x40l); 14457: } 14458: if(!(puzzle & 0x4920100000ll)) 14459: altDoSolve(21, 0x200000ll, puzzle | 0x4920100000ll, 14460: partsUsed | 0x40l); 14461: if(!(puzzle & 0x100100120100000ll)) 14462: altDoSolve(21, 0x200000ll, puzzle | 0x100100120100000ll, 14463: partsUsed | 0x40l); 14464: altpiece7at20: 14465: if (partsUsed & 0x80l) goto altpiece8at20; 14466: if(!(puzzle & 0x900100900000ll)) 14467: altDoSolve(21, 0x200000ll, puzzle | 0x900100900000ll, 14468: partsUsed | 0x80l); 14469: if(!(puzzle & 0x900800900000ll)) 14470: altDoSolve(21, 0x200000ll, puzzle | 0x900800900000ll, 14471: partsUsed | 0x80l); 14472: if(!(puzzle & 0x4904100000ll)) 14473: altDoSolve(21, 0x200000ll, puzzle | 0x4904100000ll, 14474: partsUsed | 0x80l); 14475: if(!(puzzle & 0x4104900000ll)) 14476: altDoSolve(21, 0x200000ll, puzzle | 0x4104900000ll, 14477: partsUsed | 0x80l); 14478: if(!(puzzle & 0xcb00000ll)) 14479: altDoSolve(21, 0x200000ll, puzzle | 0xcb00000ll, 14480: partsUsed | 0x80l); 14481: if(!(puzzle & 0xd300000ll)) 14482: altDoSolve(21, 0x200000ll, puzzle | 0xd300000ll, 14483: partsUsed | 0x80l); 14484: if(!(puzzle & 0x300200300000ll)) 14485: altDoSolve(21, 0x200000ll, puzzle | 0x300200300000ll, 14486: partsUsed | 0x80l); 14487: if(!(puzzle & 0x300100300000ll)) 14488: altDoSolve(21, 0x200000ll, puzzle | 0x300100300000ll, 14489: partsUsed | 0x80l); 14490: altpiece8at20: 14491: if (partsUsed & 0x100l) goto altpiece9at20; 14492: if(!(puzzle & 0x190100000ll)) 14493: altDoSolve(21, 0x200000ll, puzzle | 0x190100000ll, 14494: partsUsed | 0x100l); 14495: if(!(puzzle & 0x180900000ll)) 14496: altDoSolve(21, 0x200000ll, puzzle | 0x180900000ll, 14497: partsUsed | 0x100l); 14498: if(!(puzzle & 0x240300000ll)) 14499: altDoSolve(21, 0x200000ll, puzzle | 0x240300000ll, 14500: partsUsed | 0x100l); 14501: if(!(puzzle & 0x200b00000ll)) 14502: altDoSolve(21, 0x200000ll, puzzle | 0x200b00000ll, 14503: partsUsed | 0x100l); 14504: if(!(puzzle & 0x160100000ll)) 14505: altDoSolve(21, 0x200000ll, puzzle | 0x160100000ll, 14506: partsUsed | 0x100l); 14507: if(!(puzzle & 0x400d00000ll)) 14508: altDoSolve(21, 0x200000ll, puzzle | 0x400d00000ll, 14509: partsUsed | 0x100l); 14510: if(!(puzzle & 0xd00100000ll)) 14511: altDoSolve(21, 0x200000ll, puzzle | 0xd00100000ll, 14512: partsUsed | 0x100l); 14513: if(!(puzzle & 0x900300000ll)) 14514: altDoSolve(21, 0x200000ll, puzzle | 0x900300000ll, 14515: partsUsed | 0x100l); 14516: if(!(puzzle & 0x1300100000ll)) 14517: altDoSolve(21, 0x200000ll, puzzle | 0x1300100000ll, 14518: partsUsed | 0x100l); 14519: if(!(puzzle & 0x1800900000ll)) 14520: altDoSolve(21, 0x200000ll, puzzle | 0x1800900000ll, 14521: partsUsed | 0x100l); 14522: if(!(puzzle & 0x101900000ll)) 14523: altDoSolve(21, 0x200000ll, puzzle | 0x101900000ll, 14524: partsUsed | 0x100l); 14525: if(!(puzzle & 0x1001300000ll)) 14526: altDoSolve(21, 0x200000ll, puzzle | 0x1001300000ll, 14527: partsUsed | 0x100l); 14528: altpiece9at20: 14529: if (partsUsed & 0x200l) goto altpiece10at20; 14530: if (!(puzzle & 0x100100100000ll)) { 14531: if(!(puzzle & 0x100120900000ll)) 14532: altDoSolve(21, 0x200000ll, puzzle | 0x100120900000ll, 14533: partsUsed | 0x200l); 14534: if(!(puzzle & 0x120900100000ll)) 14535: altDoSolve(21, 0x200000ll, puzzle | 0x120900100000ll, 14536: partsUsed | 0x200l); 14537: if(!(puzzle & 0x900120100000ll)) 14538: altDoSolve(21, 0x200000ll, puzzle | 0x900120100000ll, 14539: partsUsed | 0x200l); 14540: if(!(puzzle & 0x100180300000ll)) 14541: altDoSolve(21, 0x200000ll, puzzle | 0x100180300000ll, 14542: partsUsed | 0x200l); 14543: if(!(puzzle & 0x300180100000ll)) 14544: altDoSolve(21, 0x200000ll, puzzle | 0x300180100000ll, 14545: partsUsed | 0x200l); 14546: if(!(puzzle & 0x180300100000ll)) 14547: altDoSolve(21, 0x200000ll, puzzle | 0x180300100000ll, 14548: partsUsed | 0x200l); 14549: } 14550: if (!(puzzle & 0x900100000ll)) { 14551: if(!(puzzle & 0x800920100000ll)) 14552: altDoSolve(21, 0x200000ll, puzzle | 0x800920100000ll, 14553: partsUsed | 0x200l); 14554: if(!(puzzle & 0x20920100000ll)) 14555: altDoSolve(21, 0x200000ll, puzzle | 0x20920100000ll, 14556: partsUsed | 0x200l); 14557: if(!(puzzle & 0x804900100000ll)) 14558: altDoSolve(21, 0x200000ll, puzzle | 0x804900100000ll, 14559: partsUsed | 0x200l); 14560: } 14561: if (!(puzzle & 0xd00000ll)) { 14562: if(!(puzzle & 0x9d00000ll)) 14563: altDoSolve(21, 0x200000ll, puzzle | 0x9d00000ll, 14564: partsUsed | 0x200l); 14565: if(!(puzzle & 0x3d00000ll)) 14566: altDoSolve(21, 0x200000ll, puzzle | 0x3d00000ll, 14567: partsUsed | 0x200l); 14568: if(!(puzzle & 0x4f00000ll)) 14569: altDoSolve(21, 0x200000ll, puzzle | 0x4f00000ll, 14570: partsUsed | 0x200l); 14571: if(!(puzzle & 0xcd00000ll)) 14572: altDoSolve(21, 0x200000ll, puzzle | 0xcd00000ll, 14573: partsUsed | 0x200l); 14574: } 14575: if(!(puzzle & 0x7900000ll)) 14576: altDoSolve(21, 0x200000ll, puzzle | 0x7900000ll, 14577: partsUsed | 0x200l); 14578: if(!(puzzle & 0x80380100000ll)) 14579: altDoSolve(21, 0x200000ll, puzzle | 0x80380100000ll, 14580: partsUsed | 0x200l); 14581: if(!(puzzle & 0x200380100000ll)) 14582: altDoSolve(21, 0x200000ll, puzzle | 0x200380100000ll, 14583: partsUsed | 0x200l); 14584: if(!(puzzle & 0x804800900000ll)) 14585: altDoSolve(21, 0x200000ll, puzzle | 0x804800900000ll, 14586: partsUsed | 0x200l); 14587: altpiece10at20: 14588: if (partsUsed & 0x400l) goto altpiece11at20; 14589: if (!(puzzle & 0x800900000ll)) { 14590: if(!(puzzle & 0x100900900000ll)) 14591: altDoSolve(21, 0x200000ll, puzzle | 0x100900900000ll, 14592: partsUsed | 0x400l); 14593: if(!(puzzle & 0x4900900000ll)) 14594: altDoSolve(21, 0x200000ll, puzzle | 0x4900900000ll, 14595: partsUsed | 0x400l); 14596: if(!(puzzle & 0x4804900000ll)) 14597: altDoSolve(21, 0x200000ll, puzzle | 0x4804900000ll, 14598: partsUsed | 0x400l); 14599: if(!(puzzle & 0x904900000ll)) 14600: altDoSolve(21, 0x200000ll, puzzle | 0x904900000ll, 14601: partsUsed | 0x400l); 14602: if(!(puzzle & 0x800900900000ll)) 14603: altDoSolve(21, 0x200000ll, puzzle | 0x800900900000ll, 14604: partsUsed | 0x400l); 14605: } 14606: if (!(puzzle & 0x100100100000ll)) { 14607: if(!(puzzle & 0x900900100000ll)) 14608: altDoSolve(21, 0x200000ll, puzzle | 0x900900100000ll, 14609: partsUsed | 0x400l); 14610: if(!(puzzle & 0x100300300000ll)) 14611: altDoSolve(21, 0x200000ll, puzzle | 0x100300300000ll, 14612: partsUsed | 0x400l); 14613: if(!(puzzle & 0x300300100000ll)) 14614: altDoSolve(21, 0x200000ll, puzzle | 0x300300100000ll, 14615: partsUsed | 0x400l); 14616: } 14617: if (!(puzzle & 0x1900000ll)) { 14618: if(!(puzzle & 0x5b00000ll)) 14619: altDoSolve(21, 0x200000ll, puzzle | 0x5b00000ll, 14620: partsUsed | 0x400l); 14621: if(!(puzzle & 0x9b00000ll)) 14622: altDoSolve(21, 0x200000ll, puzzle | 0x9b00000ll, 14623: partsUsed | 0x400l); 14624: if(!(puzzle & 0xd900000ll)) 14625: altDoSolve(21, 0x200000ll, puzzle | 0xd900000ll, 14626: partsUsed | 0x400l); 14627: } 14628: if(!(puzzle & 0x120120100000ll)) 14629: altDoSolve(21, 0x200000ll, puzzle | 0x120120100000ll, 14630: partsUsed | 0x400l); 14631: if(!(puzzle & 0x920900000ll)) 14632: altDoSolve(21, 0x200000ll, puzzle | 0x920900000ll, 14633: partsUsed | 0x400l); 14634: if(!(puzzle & 0x1f00000ll)) 14635: altDoSolve(21, 0x200000ll, puzzle | 0x1f00000ll, 14636: partsUsed | 0x400l); 14637: if(!(puzzle & 0x6d00000ll)) 14638: altDoSolve(21, 0x200000ll, puzzle | 0x6d00000ll, 14639: partsUsed | 0x400l); 14640: if(!(puzzle & 0x380300000ll)) 14641: altDoSolve(21, 0x200000ll, puzzle | 0x380300000ll, 14642: partsUsed | 0x400l); 14643: if(!(puzzle & 0x180180100000ll)) 14644: altDoSolve(21, 0x200000ll, puzzle | 0x180180100000ll, 14645: partsUsed | 0x400l); 14646: if(!(puzzle & 0x200300300000ll)) 14647: altDoSolve(21, 0x200000ll, puzzle | 0x200300300000ll, 14648: partsUsed | 0x400l); 14649: altpiece11at20: 14650: break; 14651: case 21: 14652: if (partsUsed & 0x2l) goto altpiece2at21; 14653: if(!(puzzle & 0x40241200000ll)) 14654: altDoSolve(22, 0x400000ll, puzzle | 0x40241200000ll, 14655: partsUsed | 0x2l); 14656: if(!(puzzle & 0x7a00000ll)) 14657: altDoSolve(22, 0x400000ll, puzzle | 0x7a00000ll, 14658: partsUsed | 0x2l); 14659: if(!(puzzle & 0x180300200000ll)) 14660: altDoSolve(22, 0x400000ll, puzzle | 0x180300200000ll, 14661: partsUsed | 0x2l); 14662: if(!(puzzle & 0x9001200200000ll)) 14663: altDoSolve(22, 0x400000ll, puzzle | 0x9001200200000ll, 14664: partsUsed | 0x2l); 14665: if(!(puzzle & 0x8009001200000ll)) 14666: altDoSolve(22, 0x400000ll, puzzle | 0x8009001200000ll, 14667: partsUsed | 0x2l); 14668: altpiece2at21: 14669: if (partsUsed & 0x4l) goto altpiece3at21; 14670: if (!(puzzle & 0x200200200000ll)) { 14671: if(!(puzzle & 0x1240200200000ll)) 14672: altDoSolve(22, 0x400000ll, puzzle | 0x1240200200000ll, 14673: partsUsed | 0x4l); 14674: if(!(puzzle & 0x200380200000ll)) 14675: altDoSolve(22, 0x400000ll, puzzle | 0x200380200000ll, 14676: partsUsed | 0x4l); 14677: if(!(puzzle & 0x209200200000ll)) 14678: altDoSolve(22, 0x400000ll, puzzle | 0x209200200000ll, 14679: partsUsed | 0x4l); 14680: } 14681: if(!(puzzle & 0x9e00000ll)) 14682: altDoSolve(22, 0x400000ll, puzzle | 0x9e00000ll, 14683: partsUsed | 0x4l); 14684: if(!(puzzle & 0x1001009200000ll)) 14685: altDoSolve(22, 0x400000ll, puzzle | 0x1001009200000ll, 14686: partsUsed | 0x4l); 14687: altpiece3at21: 14688: if (partsUsed & 0x8l) goto altpiece4at21; 14689: if(!(puzzle & 0x240201200000ll)) 14690: altDoSolve(22, 0x400000ll, puzzle | 0x240201200000ll, 14691: partsUsed | 0x8l); 14692: if(!(puzzle & 0x3e00000ll)) 14693: altDoSolve(22, 0x400000ll, puzzle | 0x3e00000ll, 14694: partsUsed | 0x8l); 14695: if(!(puzzle & 0x80380200000ll)) 14696: altDoSolve(22, 0x400000ll, puzzle | 0x80380200000ll, 14697: partsUsed | 0x8l); 14698: if(!(puzzle & 0x8009200200000ll)) 14699: altDoSolve(22, 0x400000ll, puzzle | 0x8009200200000ll, 14700: partsUsed | 0x8l); 14701: if(!(puzzle & 0x9001001200000ll)) 14702: altDoSolve(22, 0x400000ll, puzzle | 0x9001001200000ll, 14703: partsUsed | 0x8l); 14704: altpiece4at21: 14705: if (partsUsed & 0x10l) goto altpiece5at21; 14706: if (!(puzzle & 0x200200200200000ll)) { 14707: if(!(puzzle & 0x300200300200000ll)) 14708: altDoSolve(22, 0x400000ll, puzzle | 0x300200300200000ll, 14709: partsUsed | 0x10l); 14710: if(!(puzzle & 0x1200201200200000ll)) 14711: altDoSolve(22, 0x400000ll, puzzle | 0x1200201200200000ll, 14712: partsUsed | 0x10l); 14713: if(!(puzzle & 0x201200201200000ll)) 14714: altDoSolve(22, 0x400000ll, puzzle | 0x201200201200000ll, 14715: partsUsed | 0x10l); 14716: } 14717: if(!(puzzle & 0x9248200000ll)) 14718: altDoSolve(22, 0x400000ll, puzzle | 0x9248200000ll, 14719: partsUsed | 0x10l); 14720: if(!(puzzle & 0x240200240200000ll)) 14721: altDoSolve(22, 0x400000ll, puzzle | 0x240200240200000ll, 14722: partsUsed | 0x10l); 14723: if(!(puzzle & 0x1001201001200000ll)) 14724: altDoSolve(22, 0x400000ll, puzzle | 0x1001201001200000ll, 14725: partsUsed | 0x10l); 14726: altpiece5at21: 14727: if (partsUsed & 0x20l) goto altpiece6at21; 14728: if (!(puzzle & 0x200200200200000ll)) { 14729: if(!(puzzle & 0x240200200200000ll)) 14730: altDoSolve(22, 0x400000ll, puzzle | 0x240200200200000ll, 14731: partsUsed | 0x20l); 14732: if(!(puzzle & 0x300200200200000ll)) 14733: altDoSolve(22, 0x400000ll, puzzle | 0x300200200200000ll, 14734: partsUsed | 0x20l); 14735: if(!(puzzle & 0x200200201200000ll)) 14736: altDoSolve(22, 0x400000ll, puzzle | 0x200200201200000ll, 14737: partsUsed | 0x20l); 14738: if(!(puzzle & 0x1200200200200000ll)) 14739: altDoSolve(22, 0x400000ll, puzzle | 0x1200200200200000ll, 14740: partsUsed | 0x20l); 14741: } 14742: if(!(puzzle & 0x1001001001200000ll)) 14743: altDoSolve(22, 0x400000ll, puzzle | 0x1001001001200000ll, 14744: partsUsed | 0x20l); 14745: altpiece6at21: 14746: if (partsUsed & 0x40l) goto altpiece7at21; 14747: if (!(puzzle & 0x200200200200000ll)) { 14748: if(!(puzzle & 0x200240200200000ll)) 14749: altDoSolve(22, 0x400000ll, puzzle | 0x200240200200000ll, 14750: partsUsed | 0x40l); 14751: if(!(puzzle & 0x200200300200000ll)) 14752: altDoSolve(22, 0x400000ll, puzzle | 0x200200300200000ll, 14753: partsUsed | 0x40l); 14754: if(!(puzzle & 0x200300200200000ll)) 14755: altDoSolve(22, 0x400000ll, puzzle | 0x200300200200000ll, 14756: partsUsed | 0x40l); 14757: if(!(puzzle & 0x200201200200000ll)) 14758: altDoSolve(22, 0x400000ll, puzzle | 0x200201200200000ll, 14759: partsUsed | 0x40l); 14760: if(!(puzzle & 0x201200200200000ll)) 14761: altDoSolve(22, 0x400000ll, puzzle | 0x201200200200000ll, 14762: partsUsed | 0x40l); 14763: } 14764: if(!(puzzle & 0x9240200000ll)) 14765: altDoSolve(22, 0x400000ll, puzzle | 0x9240200000ll, 14766: partsUsed | 0x40l); 14767: if(!(puzzle & 0x200200240200000ll)) 14768: altDoSolve(22, 0x400000ll, puzzle | 0x200200240200000ll, 14769: partsUsed | 0x40l); 14770: altpiece7at21: 14771: if (partsUsed & 0x80l) goto altpiece8at21; 14772: if(!(puzzle & 0x1200201200000ll)) 14773: altDoSolve(22, 0x400000ll, puzzle | 0x1200201200000ll, 14774: partsUsed | 0x80l); 14775: if(!(puzzle & 0x1201001200000ll)) 14776: altDoSolve(22, 0x400000ll, puzzle | 0x1201001200000ll, 14777: partsUsed | 0x80l); 14778: if(!(puzzle & 0x9208200000ll)) 14779: altDoSolve(22, 0x400000ll, puzzle | 0x9208200000ll, 14780: partsUsed | 0x80l); 14781: if(!(puzzle & 0x8209200000ll)) 14782: altDoSolve(22, 0x400000ll, puzzle | 0x8209200000ll, 14783: partsUsed | 0x80l); 14784: altpiece8at21: 14785: if (partsUsed & 0x100l) goto altpiece9at21; 14786: if(!(puzzle & 0x320200000ll)) 14787: altDoSolve(22, 0x400000ll, puzzle | 0x320200000ll, 14788: partsUsed | 0x100l); 14789: if(!(puzzle & 0x301200000ll)) 14790: altDoSolve(22, 0x400000ll, puzzle | 0x301200000ll, 14791: partsUsed | 0x100l); 14792: if(!(puzzle & 0x801a00000ll)) 14793: altDoSolve(22, 0x400000ll, puzzle | 0x801a00000ll, 14794: partsUsed | 0x100l); 14795: if(!(puzzle & 0x1a00200000ll)) 14796: altDoSolve(22, 0x400000ll, puzzle | 0x1a00200000ll, 14797: partsUsed | 0x100l); 14798: altpiece9at21: 14799: if (partsUsed & 0x200l) goto altpiece10at21; 14800: if (!(puzzle & 0x200200200000ll)) { 14801: if(!(puzzle & 0x200241200000ll)) 14802: altDoSolve(22, 0x400000ll, puzzle | 0x200241200000ll, 14803: partsUsed | 0x200l); 14804: if(!(puzzle & 0x241200200000ll)) 14805: altDoSolve(22, 0x400000ll, puzzle | 0x241200200000ll, 14806: partsUsed | 0x200l); 14807: if(!(puzzle & 0x1200240200000ll)) 14808: altDoSolve(22, 0x400000ll, puzzle | 0x1200240200000ll, 14809: partsUsed | 0x200l); 14810: } 14811: if (!(puzzle & 0x1200200000ll)) { 14812: if(!(puzzle & 0x1001240200000ll)) 14813: altDoSolve(22, 0x400000ll, puzzle | 0x1001240200000ll, 14814: partsUsed | 0x200l); 14815: if(!(puzzle & 0x41240200000ll)) 14816: altDoSolve(22, 0x400000ll, puzzle | 0x41240200000ll, 14817: partsUsed | 0x200l); 14818: if(!(puzzle & 0x1009200200000ll)) 14819: altDoSolve(22, 0x400000ll, puzzle | 0x1009200200000ll, 14820: partsUsed | 0x200l); 14821: } 14822: if(!(puzzle & 0x5e00000ll)) 14823: altDoSolve(22, 0x400000ll, puzzle | 0x5e00000ll, 14824: partsUsed | 0x200l); 14825: if(!(puzzle & 0x100380200000ll)) 14826: altDoSolve(22, 0x400000ll, puzzle | 0x100380200000ll, 14827: partsUsed | 0x200l); 14828: if(!(puzzle & 0x1009001200000ll)) 14829: altDoSolve(22, 0x400000ll, puzzle | 0x1009001200000ll, 14830: partsUsed | 0x200l); 14831: altpiece10at21: 14832: if (partsUsed & 0x400l) goto altpiece11at21; 14833: if (!(puzzle & 0x9200000ll)) { 14834: if(!(puzzle & 0xda00000ll)) 14835: altDoSolve(22, 0x400000ll, puzzle | 0xda00000ll, 14836: partsUsed | 0x400l); 14837: if(!(puzzle & 0x9009200000ll)) 14838: altDoSolve(22, 0x400000ll, puzzle | 0x9009200000ll, 14839: partsUsed | 0x400l); 14840: if(!(puzzle & 0x1209200000ll)) 14841: altDoSolve(22, 0x400000ll, puzzle | 0x1209200000ll, 14842: partsUsed | 0x400l); 14843: } 14844: if (!(puzzle & 0x200200200000ll)) { 14845: if(!(puzzle & 0x300300200000ll)) 14846: altDoSolve(22, 0x400000ll, puzzle | 0x300300200000ll, 14847: partsUsed | 0x400l); 14848: if(!(puzzle & 0x201201200000ll)) 14849: altDoSolve(22, 0x400000ll, puzzle | 0x201201200000ll, 14850: partsUsed | 0x400l); 14851: if(!(puzzle & 0x1201200200000ll)) 14852: altDoSolve(22, 0x400000ll, puzzle | 0x1201200200000ll, 14853: partsUsed | 0x400l); 14854: } 14855: if(!(puzzle & 0x240240200000ll)) 14856: altDoSolve(22, 0x400000ll, puzzle | 0x240240200000ll, 14857: partsUsed | 0x400l); 14858: if(!(puzzle & 0x1241200000ll)) 14859: altDoSolve(22, 0x400000ll, puzzle | 0x1241200000ll, 14860: partsUsed | 0x400l); 14861: if(!(puzzle & 0x9201200000ll)) 14862: altDoSolve(22, 0x400000ll, puzzle | 0x9201200000ll, 14863: partsUsed | 0x400l); 14864: if(!(puzzle & 0x1001201200000ll)) 14865: altDoSolve(22, 0x400000ll, puzzle | 0x1001201200000ll, 14866: partsUsed | 0x400l); 14867: altpiece11at21: 14868: break; 14869: case 22: 14870: if (partsUsed & 0x2l) goto altpiece2at22; 14871: if(!(puzzle & 0x90480400000ll)) 14872: altDoSolve(23, 0x800000ll, puzzle | 0x90480400000ll, 14873: partsUsed | 0x2l); 14874: if(!(puzzle & 0x80482400000ll)) 14875: altDoSolve(23, 0x800000ll, puzzle | 0x80482400000ll, 14876: partsUsed | 0x2l); 14877: if(!(puzzle & 0x1001800c00000ll)) 14878: altDoSolve(23, 0x800000ll, puzzle | 0x1001800c00000ll, 14879: partsUsed | 0x2l); 14880: if(!(puzzle & 0x1800c00400000ll)) 14881: altDoSolve(23, 0x800000ll, puzzle | 0x1800c00400000ll, 14882: partsUsed | 0x2l); 14883: altpiece2at22: 14884: if (partsUsed & 0x4l) goto altpiece3at22; 14885: if (!(puzzle & 0x400400400000ll)) { 14886: if(!(puzzle & 0x400490400000ll)) 14887: altDoSolve(23, 0x800000ll, puzzle | 0x400490400000ll, 14888: partsUsed | 0x4l); 14889: if(!(puzzle & 0x2480400400000ll)) 14890: altDoSolve(23, 0x800000ll, puzzle | 0x2480400400000ll, 14891: partsUsed | 0x4l); 14892: if(!(puzzle & 0x401c00400000ll)) 14893: altDoSolve(23, 0x800000ll, puzzle | 0x401c00400000ll, 14894: partsUsed | 0x4l); 14895: } 14896: if(!(puzzle & 0x800801c00000ll)) 14897: altDoSolve(23, 0x800000ll, puzzle | 0x800801c00000ll, 14898: partsUsed | 0x4l); 14899: altpiece3at22: 14900: if (partsUsed & 0x8l) goto altpiece4at22; 14901: if(!(puzzle & 0x10490400000ll)) 14902: altDoSolve(23, 0x800000ll, puzzle | 0x10490400000ll, 14903: partsUsed | 0x8l); 14904: if(!(puzzle & 0x480402400000ll)) 14905: altDoSolve(23, 0x800000ll, puzzle | 0x480402400000ll, 14906: partsUsed | 0x8l); 14907: if(!(puzzle & 0x1001c00400000ll)) 14908: altDoSolve(23, 0x800000ll, puzzle | 0x1001c00400000ll, 14909: partsUsed | 0x8l); 14910: if(!(puzzle & 0x1800800c00000ll)) 14911: altDoSolve(23, 0x800000ll, puzzle | 0x1800800c00000ll, 14912: partsUsed | 0x8l); 14913: altpiece4at22: 14914: if (partsUsed & 0x10l) goto altpiece5at22; 14915: if (!(puzzle & 0x400400400400000ll)) { 14916: if(!(puzzle & 0x480400480400000ll)) 14917: altDoSolve(23, 0x800000ll, puzzle | 0x480400480400000ll, 14918: partsUsed | 0x10l); 14919: if(!(puzzle & 0x2400402400400000ll)) 14920: altDoSolve(23, 0x800000ll, puzzle | 0x2400402400400000ll, 14921: partsUsed | 0x10l); 14922: if(!(puzzle & 0x402400402400000ll)) 14923: altDoSolve(23, 0x800000ll, puzzle | 0x402400402400000ll, 14924: partsUsed | 0x10l); 14925: if(!(puzzle & 0xc00400c00400000ll)) 14926: altDoSolve(23, 0x800000ll, puzzle | 0xc00400c00400000ll, 14927: partsUsed | 0x10l); 14928: if(!(puzzle & 0x400c00400c00000ll)) 14929: altDoSolve(23, 0x800000ll, puzzle | 0x400c00400c00000ll, 14930: partsUsed | 0x10l); 14931: } 14932: if(!(puzzle & 0x2002402002400000ll)) 14933: altDoSolve(23, 0x800000ll, puzzle | 0x2002402002400000ll, 14934: partsUsed | 0x10l); 14935: if(!(puzzle & 0x800c00800c00000ll)) 14936: altDoSolve(23, 0x800000ll, puzzle | 0x800c00800c00000ll, 14937: partsUsed | 0x10l); 14938: altpiece5at22: 14939: if (partsUsed & 0x20l) goto altpiece6at22; 14940: if (!(puzzle & 0x400400400400000ll)) { 14941: if(!(puzzle & 0x480400400400000ll)) 14942: altDoSolve(23, 0x800000ll, puzzle | 0x480400400400000ll, 14943: partsUsed | 0x20l); 14944: if(!(puzzle & 0x400400402400000ll)) 14945: altDoSolve(23, 0x800000ll, puzzle | 0x400400402400000ll, 14946: partsUsed | 0x20l); 14947: if(!(puzzle & 0x2400400400400000ll)) 14948: altDoSolve(23, 0x800000ll, puzzle | 0x2400400400400000ll, 14949: partsUsed | 0x20l); 14950: if(!(puzzle & 0x400400400c00000ll)) 14951: altDoSolve(23, 0x800000ll, puzzle | 0x400400400c00000ll, 14952: partsUsed | 0x20l); 14953: if(!(puzzle & 0xc00400400400000ll)) 14954: altDoSolve(23, 0x800000ll, puzzle | 0xc00400400400000ll, 14955: partsUsed | 0x20l); 14956: } 14957: if(!(puzzle & 0x2002002002400000ll)) 14958: altDoSolve(23, 0x800000ll, puzzle | 0x2002002002400000ll, 14959: partsUsed | 0x20l); 14960: if(!(puzzle & 0x800800800c00000ll)) 14961: altDoSolve(23, 0x800000ll, puzzle | 0x800800800c00000ll, 14962: partsUsed | 0x20l); 14963: altpiece6at22: 14964: if (partsUsed & 0x40l) goto altpiece7at22; 14965: if (!(puzzle & 0x400400400400000ll)) { 14966: if(!(puzzle & 0x400480400400000ll)) 14967: altDoSolve(23, 0x800000ll, puzzle | 0x400480400400000ll, 14968: partsUsed | 0x40l); 14969: if(!(puzzle & 0x400402400400000ll)) 14970: altDoSolve(23, 0x800000ll, puzzle | 0x400402400400000ll, 14971: partsUsed | 0x40l); 14972: if(!(puzzle & 0x402400400400000ll)) 14973: altDoSolve(23, 0x800000ll, puzzle | 0x402400400400000ll, 14974: partsUsed | 0x40l); 14975: if(!(puzzle & 0x400400c00400000ll)) 14976: altDoSolve(23, 0x800000ll, puzzle | 0x400400c00400000ll, 14977: partsUsed | 0x40l); 14978: if(!(puzzle & 0x400c00400400000ll)) 14979: altDoSolve(23, 0x800000ll, puzzle | 0x400c00400400000ll, 14980: partsUsed | 0x40l); 14981: } 14982: if(!(puzzle & 0x2490400000ll)) 14983: altDoSolve(23, 0x800000ll, puzzle | 0x2490400000ll, 14984: partsUsed | 0x40l); 14985: if(!(puzzle & 0x400400480400000ll)) 14986: altDoSolve(23, 0x800000ll, puzzle | 0x400400480400000ll, 14987: partsUsed | 0x40l); 14988: altpiece7at22: 14989: if (partsUsed & 0x80l) goto altpiece8at22; 14990: if(!(puzzle & 0x2400402400000ll)) 14991: altDoSolve(23, 0x800000ll, puzzle | 0x2400402400000ll, 14992: partsUsed | 0x80l); 14993: if(!(puzzle & 0x2402002400000ll)) 14994: altDoSolve(23, 0x800000ll, puzzle | 0x2402002400000ll, 14995: partsUsed | 0x80l); 14996: if(!(puzzle & 0xbc00000ll)) 14997: altDoSolve(23, 0x800000ll, puzzle | 0xbc00000ll, 14998: partsUsed | 0x80l); 14999: if(!(puzzle & 0xf400000ll)) 15000: altDoSolve(23, 0x800000ll, puzzle | 0xf400000ll, 15001: partsUsed | 0x80l); 15002: if(!(puzzle & 0xc00800c00000ll)) 15003: altDoSolve(23, 0x800000ll, puzzle | 0xc00800c00000ll, 15004: partsUsed | 0x80l); 15005: if(!(puzzle & 0xc00400c00000ll)) 15006: altDoSolve(23, 0x800000ll, puzzle | 0xc00400c00000ll, 15007: partsUsed | 0x80l); 15008: if(!(puzzle & 0x1c01400000ll)) 15009: altDoSolve(23, 0x800000ll, puzzle | 0x1c01400000ll, 15010: partsUsed | 0x80l); 15011: if(!(puzzle & 0x1401c00000ll)) 15012: altDoSolve(23, 0x800000ll, puzzle | 0x1401c00000ll, 15013: partsUsed | 0x80l); 15014: altpiece8at22: 15015: if (partsUsed & 0x100l) goto altpiece9at22; 15016: if(!(puzzle & 0x900c00000ll)) 15017: altDoSolve(23, 0x800000ll, puzzle | 0x900c00000ll, 15018: partsUsed | 0x100l); 15019: if(!(puzzle & 0x802c00000ll)) 15020: altDoSolve(23, 0x800000ll, puzzle | 0x802c00000ll, 15021: partsUsed | 0x100l); 15022: if(!(puzzle & 0x580400000ll)) 15023: altDoSolve(23, 0x800000ll, puzzle | 0x580400000ll, 15024: partsUsed | 0x100l); 15025: if(!(puzzle & 0x4c00400000ll)) 15026: altDoSolve(23, 0x800000ll, puzzle | 0x4c00400000ll, 15027: partsUsed | 0x100l); 15028: if(!(puzzle & 0x2400c00000ll)) 15029: altDoSolve(23, 0x800000ll, puzzle | 0x2400c00000ll, 15030: partsUsed | 0x100l); 15031: if(!(puzzle & 0x6002400000ll)) 15032: altDoSolve(23, 0x800000ll, puzzle | 0x6002400000ll, 15033: partsUsed | 0x100l); 15034: if(!(puzzle & 0x406400000ll)) 15035: altDoSolve(23, 0x800000ll, puzzle | 0x406400000ll, 15036: partsUsed | 0x100l); 15037: if(!(puzzle & 0x4004c00000ll)) 15038: altDoSolve(23, 0x800000ll, puzzle | 0x4004c00000ll, 15039: partsUsed | 0x100l); 15040: altpiece9at22: 15041: if (partsUsed & 0x200l) goto altpiece10at22; 15042: if (!(puzzle & 0x480400000ll)) { 15043: if(!(puzzle & 0x80490400000ll)) 15044: altDoSolve(23, 0x800000ll, puzzle | 0x80490400000ll, 15045: partsUsed | 0x200l); 15046: if(!(puzzle & 0x400482400000ll)) 15047: altDoSolve(23, 0x800000ll, puzzle | 0x400482400000ll, 15048: partsUsed | 0x200l); 15049: if(!(puzzle & 0x2002480400000ll)) 15050: altDoSolve(23, 0x800000ll, puzzle | 0x2002480400000ll, 15051: partsUsed | 0x200l); 15052: if(!(puzzle & 0x2400480400000ll)) 15053: altDoSolve(23, 0x800000ll, puzzle | 0x2400480400000ll, 15054: partsUsed | 0x200l); 15055: if(!(puzzle & 0x82480400000ll)) 15056: altDoSolve(23, 0x800000ll, puzzle | 0x82480400000ll, 15057: partsUsed | 0x200l); 15058: } 15059: if(!(puzzle & 0x482400400000ll)) 15060: altDoSolve(23, 0x800000ll, puzzle | 0x482400400000ll, 15061: partsUsed | 0x200l); 15062: if(!(puzzle & 0x801800c00000ll)) 15063: altDoSolve(23, 0x800000ll, puzzle | 0x801800c00000ll, 15064: partsUsed | 0x200l); 15065: if(!(puzzle & 0x801c00400000ll)) 15066: altDoSolve(23, 0x800000ll, puzzle | 0x801c00400000ll, 15067: partsUsed | 0x200l); 15068: altpiece10at22: 15069: if (partsUsed & 0x400l) goto altpiece11at22; 15070: if (!(puzzle & 0x2400400000ll)) { 15071: if(!(puzzle & 0x402402400000ll)) 15072: altDoSolve(23, 0x800000ll, puzzle | 0x402402400000ll, 15073: partsUsed | 0x400l); 15074: if(!(puzzle & 0x2402400400000ll)) 15075: altDoSolve(23, 0x800000ll, puzzle | 0x2402400400000ll, 15076: partsUsed | 0x400l); 15077: if(!(puzzle & 0x2002402400000ll)) 15078: altDoSolve(23, 0x800000ll, puzzle | 0x2002402400000ll, 15079: partsUsed | 0x400l); 15080: } 15081: if (!(puzzle & 0x4c00000ll)) { 15082: if(!(puzzle & 0xdc00000ll)) 15083: altDoSolve(23, 0x800000ll, puzzle | 0xdc00000ll, 15084: partsUsed | 0x400l); 15085: if(!(puzzle & 0x7c00000ll)) 15086: altDoSolve(23, 0x800000ll, puzzle | 0x7c00000ll, 15087: partsUsed | 0x400l); 15088: if(!(puzzle & 0xec00000ll)) 15089: altDoSolve(23, 0x800000ll, puzzle | 0xec00000ll, 15090: partsUsed | 0x400l); 15091: } 15092: if (!(puzzle & 0xc00400000ll)) { 15093: if(!(puzzle & 0x800c00c00000ll)) 15094: altDoSolve(23, 0x800000ll, puzzle | 0x800c00c00000ll, 15095: partsUsed | 0x400l); 15096: if(!(puzzle & 0x400c00c00000ll)) 15097: altDoSolve(23, 0x800000ll, puzzle | 0x400c00c00000ll, 15098: partsUsed | 0x400l); 15099: if(!(puzzle & 0x1c00c00000ll)) 15100: altDoSolve(23, 0x800000ll, puzzle | 0x1c00c00000ll, 15101: partsUsed | 0x400l); 15102: if(!(puzzle & 0xc00c00400000ll)) 15103: altDoSolve(23, 0x800000ll, puzzle | 0xc00c00400000ll, 15104: partsUsed | 0x400l); 15105: if(!(puzzle & 0xc01c00000ll)) 15106: altDoSolve(23, 0x800000ll, puzzle | 0xc01c00000ll, 15107: partsUsed | 0x400l); 15108: } 15109: if(!(puzzle & 0x480480400000ll)) 15110: altDoSolve(23, 0x800000ll, puzzle | 0x480480400000ll, 15111: partsUsed | 0x400l); 15112: if(!(puzzle & 0x2482400000ll)) 15113: altDoSolve(23, 0x800000ll, puzzle | 0x2482400000ll, 15114: partsUsed | 0x400l); 15115: if(!(puzzle & 0x1801c00000ll)) 15116: altDoSolve(23, 0x800000ll, puzzle | 0x1801c00000ll, 15117: partsUsed | 0x400l); 15118: altpiece11at22: 15119: break; 15120: case 23: 15121: if (partsUsed & 0x2l) goto altpiece2at23; 15122: if(!(puzzle & 0x400c01800000ll)) 15123: altDoSolve(24, 0x1000000ll, puzzle | 0x400c01800000ll, 15124: partsUsed | 0x2l); 15125: if(!(puzzle & 0x120900800000ll)) 15126: altDoSolve(24, 0x1000000ll, puzzle | 0x120900800000ll, 15127: partsUsed | 0x2l); 15128: if(!(puzzle & 0x100904800000ll)) 15129: altDoSolve(24, 0x1000000ll, puzzle | 0x100904800000ll, 15130: partsUsed | 0x2l); 15131: altpiece2at23: 15132: if (partsUsed & 0x4l) goto altpiece3at23; 15133: if (!(puzzle & 0x800800800000ll)) { 15134: if(!(puzzle & 0x800920800000ll)) 15135: altDoSolve(24, 0x1000000ll, puzzle | 0x800920800000ll, 15136: partsUsed | 0x4l); 15137: if(!(puzzle & 0x4900800800000ll)) 15138: altDoSolve(24, 0x1000000ll, puzzle | 0x4900800800000ll, 15139: partsUsed | 0x4l); 15140: if(!(puzzle & 0x1c00800800000ll)) 15141: altDoSolve(24, 0x1000000ll, puzzle | 0x1c00800800000ll, 15142: partsUsed | 0x4l); 15143: } 15144: altpiece3at23: 15145: if (partsUsed & 0x8l) goto altpiece4at23; 15146: if(!(puzzle & 0x20920800000ll)) 15147: altDoSolve(24, 0x1000000ll, puzzle | 0x20920800000ll, 15148: partsUsed | 0x8l); 15149: if(!(puzzle & 0x900804800000ll)) 15150: altDoSolve(24, 0x1000000ll, puzzle | 0x900804800000ll, 15151: partsUsed | 0x8l); 15152: if(!(puzzle & 0xc00801800000ll)) 15153: altDoSolve(24, 0x1000000ll, puzzle | 0xc00801800000ll, 15154: partsUsed | 0x8l); 15155: altpiece4at23: 15156: if (partsUsed & 0x10l) goto altpiece5at23; 15157: if (!(puzzle & 0x800800800800000ll)) { 15158: if(!(puzzle & 0x900800900800000ll)) 15159: altDoSolve(24, 0x1000000ll, puzzle | 0x900800900800000ll, 15160: partsUsed | 0x10l); 15161: if(!(puzzle & 0xc00800c00800000ll)) 15162: altDoSolve(24, 0x1000000ll, puzzle | 0xc00800c00800000ll, 15163: partsUsed | 0x10l); 15164: if(!(puzzle & 0x4800804800800000ll)) 15165: altDoSolve(24, 0x1000000ll, puzzle | 0x4800804800800000ll, 15166: partsUsed | 0x10l); 15167: if(!(puzzle & 0x804800804800000ll)) 15168: altDoSolve(24, 0x1000000ll, puzzle | 0x804800804800000ll, 15169: partsUsed | 0x10l); 15170: if(!(puzzle & 0x1800801800800000ll)) 15171: altDoSolve(24, 0x1000000ll, puzzle | 0x1800801800800000ll, 15172: partsUsed | 0x10l); 15173: if(!(puzzle & 0x801800801800000ll)) 15174: altDoSolve(24, 0x1000000ll, puzzle | 0x801800801800000ll, 15175: partsUsed | 0x10l); 15176: } 15177: if(!(puzzle & 0x4004804004800000ll)) 15178: altDoSolve(24, 0x1000000ll, puzzle | 0x4004804004800000ll, 15179: partsUsed | 0x10l); 15180: if(!(puzzle & 0x1001801001800000ll)) 15181: altDoSolve(24, 0x1000000ll, puzzle | 0x1001801001800000ll, 15182: partsUsed | 0x10l); 15183: altpiece5at23: 15184: if (partsUsed & 0x20l) goto altpiece6at23; 15185: if (!(puzzle & 0x800800800800000ll)) { 15186: if(!(puzzle & 0x900800800800000ll)) 15187: altDoSolve(24, 0x1000000ll, puzzle | 0x900800800800000ll, 15188: partsUsed | 0x20l); 15189: if(!(puzzle & 0xc00800800800000ll)) 15190: altDoSolve(24, 0x1000000ll, puzzle | 0xc00800800800000ll, 15191: partsUsed | 0x20l); 15192: if(!(puzzle & 0x800800804800000ll)) 15193: altDoSolve(24, 0x1000000ll, puzzle | 0x800800804800000ll, 15194: partsUsed | 0x20l); 15195: if(!(puzzle & 0x4800800800800000ll)) 15196: altDoSolve(24, 0x1000000ll, puzzle | 0x4800800800800000ll, 15197: partsUsed | 0x20l); 15198: if(!(puzzle & 0x800800801800000ll)) 15199: altDoSolve(24, 0x1000000ll, puzzle | 0x800800801800000ll, 15200: partsUsed | 0x20l); 15201: if(!(puzzle & 0x1800800800800000ll)) 15202: altDoSolve(24, 0x1000000ll, puzzle | 0x1800800800800000ll, 15203: partsUsed | 0x20l); 15204: } 15205: if(!(puzzle & 0x4004004004800000ll)) 15206: altDoSolve(24, 0x1000000ll, puzzle | 0x4004004004800000ll, 15207: partsUsed | 0x20l); 15208: if(!(puzzle & 0x1001001001800000ll)) 15209: altDoSolve(24, 0x1000000ll, puzzle | 0x1001001001800000ll, 15210: partsUsed | 0x20l); 15211: altpiece6at23: 15212: if (partsUsed & 0x40l) goto altpiece7at23; 15213: if (!(puzzle & 0x800800800800000ll)) { 15214: if(!(puzzle & 0x800900800800000ll)) 15215: altDoSolve(24, 0x1000000ll, puzzle | 0x800900800800000ll, 15216: partsUsed | 0x40l); 15217: if(!(puzzle & 0x800800c00800000ll)) 15218: altDoSolve(24, 0x1000000ll, puzzle | 0x800800c00800000ll, 15219: partsUsed | 0x40l); 15220: if(!(puzzle & 0x800c00800800000ll)) 15221: altDoSolve(24, 0x1000000ll, puzzle | 0x800c00800800000ll, 15222: partsUsed | 0x40l); 15223: if(!(puzzle & 0x800804800800000ll)) 15224: altDoSolve(24, 0x1000000ll, puzzle | 0x800804800800000ll, 15225: partsUsed | 0x40l); 15226: if(!(puzzle & 0x804800800800000ll)) 15227: altDoSolve(24, 0x1000000ll, puzzle | 0x804800800800000ll, 15228: partsUsed | 0x40l); 15229: if(!(puzzle & 0x800801800800000ll)) 15230: altDoSolve(24, 0x1000000ll, puzzle | 0x800801800800000ll, 15231: partsUsed | 0x40l); 15232: if(!(puzzle & 0x801800800800000ll)) 15233: altDoSolve(24, 0x1000000ll, puzzle | 0x801800800800000ll, 15234: partsUsed | 0x40l); 15235: } 15236: if(!(puzzle & 0x4920800000ll)) 15237: altDoSolve(24, 0x1000000ll, puzzle | 0x4920800000ll, 15238: partsUsed | 0x40l); 15239: if(!(puzzle & 0x800800900800000ll)) 15240: altDoSolve(24, 0x1000000ll, puzzle | 0x800800900800000ll, 15241: partsUsed | 0x40l); 15242: altpiece7at23: 15243: if (partsUsed & 0x80l) goto altpiece8at23; 15244: if(!(puzzle & 0x4800804800000ll)) 15245: altDoSolve(24, 0x1000000ll, puzzle | 0x4800804800000ll, 15246: partsUsed | 0x80l); 15247: if(!(puzzle & 0x4804004800000ll)) 15248: altDoSolve(24, 0x1000000ll, puzzle | 0x4804004800000ll, 15249: partsUsed | 0x80l); 15250: if(!(puzzle & 0x1801001800000ll)) 15251: altDoSolve(24, 0x1000000ll, puzzle | 0x1801001800000ll, 15252: partsUsed | 0x80l); 15253: if(!(puzzle & 0x1800801800000ll)) 15254: altDoSolve(24, 0x1000000ll, puzzle | 0x1800801800000ll, 15255: partsUsed | 0x80l); 15256: altpiece8at23: 15257: if (partsUsed & 0x100l) goto altpiece9at23; 15258: if(!(puzzle & 0xc80800000ll)) 15259: altDoSolve(24, 0x1000000ll, puzzle | 0xc80800000ll, 15260: partsUsed | 0x100l); 15261: if(!(puzzle & 0xc04800000ll)) 15262: altDoSolve(24, 0x1000000ll, puzzle | 0xc04800000ll, 15263: partsUsed | 0x100l); 15264: if(!(puzzle & 0x1201800000ll)) 15265: altDoSolve(24, 0x1000000ll, puzzle | 0x1201800000ll, 15266: partsUsed | 0x100l); 15267: if(!(puzzle & 0x1005800000ll)) 15268: altDoSolve(24, 0x1000000ll, puzzle | 0x1005800000ll, 15269: partsUsed | 0x100l); 15270: if(!(puzzle & 0xb00800000ll)) 15271: altDoSolve(24, 0x1000000ll, puzzle | 0xb00800000ll, 15272: partsUsed | 0x100l); 15273: if(!(puzzle & 0x2006800000ll)) 15274: altDoSolve(24, 0x1000000ll, puzzle | 0x2006800000ll, 15275: partsUsed | 0x100l); 15276: if(!(puzzle & 0x6800800000ll)) 15277: altDoSolve(24, 0x1000000ll, puzzle | 0x6800800000ll, 15278: partsUsed | 0x100l); 15279: if(!(puzzle & 0x4801800000ll)) 15280: altDoSolve(24, 0x1000000ll, puzzle | 0x4801800000ll, 15281: partsUsed | 0x100l); 15282: if(!(puzzle & 0x9800800000ll)) 15283: altDoSolve(24, 0x1000000ll, puzzle | 0x9800800000ll, 15284: partsUsed | 0x100l); 15285: if(!(puzzle & 0xc004800000ll)) 15286: altDoSolve(24, 0x1000000ll, puzzle | 0xc004800000ll, 15287: partsUsed | 0x100l); 15288: if(!(puzzle & 0x80c800000ll)) 15289: altDoSolve(24, 0x1000000ll, puzzle | 0x80c800000ll, 15290: partsUsed | 0x100l); 15291: if(!(puzzle & 0x8009800000ll)) 15292: altDoSolve(24, 0x1000000ll, puzzle | 0x8009800000ll, 15293: partsUsed | 0x100l); 15294: altpiece9at23: 15295: if (partsUsed & 0x200l) goto altpiece10at23; 15296: if (!(puzzle & 0x900800000ll)) { 15297: if(!(puzzle & 0x100920800000ll)) 15298: altDoSolve(24, 0x1000000ll, puzzle | 0x100920800000ll, 15299: partsUsed | 0x200l); 15300: if(!(puzzle & 0x800904800000ll)) 15301: altDoSolve(24, 0x1000000ll, puzzle | 0x800904800000ll, 15302: partsUsed | 0x200l); 15303: if(!(puzzle & 0x4004900800000ll)) 15304: altDoSolve(24, 0x1000000ll, puzzle | 0x4004900800000ll, 15305: partsUsed | 0x200l); 15306: if(!(puzzle & 0x4800900800000ll)) 15307: altDoSolve(24, 0x1000000ll, puzzle | 0x4800900800000ll, 15308: partsUsed | 0x200l); 15309: if(!(puzzle & 0x104900800000ll)) 15310: altDoSolve(24, 0x1000000ll, puzzle | 0x104900800000ll, 15311: partsUsed | 0x200l); 15312: } 15313: if (!(puzzle & 0x800800800000ll)) { 15314: if(!(puzzle & 0x904800800000ll)) 15315: altDoSolve(24, 0x1000000ll, puzzle | 0x904800800000ll, 15316: partsUsed | 0x200l); 15317: if(!(puzzle & 0x800c01800000ll)) 15318: altDoSolve(24, 0x1000000ll, puzzle | 0x800c01800000ll, 15319: partsUsed | 0x200l); 15320: if(!(puzzle & 0x1800c00800000ll)) 15321: altDoSolve(24, 0x1000000ll, puzzle | 0x1800c00800000ll, 15322: partsUsed | 0x200l); 15323: if(!(puzzle & 0xc01800800000ll)) 15324: altDoSolve(24, 0x1000000ll, puzzle | 0xc01800800000ll, 15325: partsUsed | 0x200l); 15326: } 15327: if(!(puzzle & 0x401c00800000ll)) 15328: altDoSolve(24, 0x1000000ll, puzzle | 0x401c00800000ll, 15329: partsUsed | 0x200l); 15330: if(!(puzzle & 0x1001c00800000ll)) 15331: altDoSolve(24, 0x1000000ll, puzzle | 0x1001c00800000ll, 15332: partsUsed | 0x200l); 15333: altpiece10at23: 15334: if (partsUsed & 0x400l) goto altpiece11at23; 15335: if (!(puzzle & 0x4800800000ll)) { 15336: if(!(puzzle & 0x804804800000ll)) 15337: altDoSolve(24, 0x1000000ll, puzzle | 0x804804800000ll, 15338: partsUsed | 0x400l); 15339: if(!(puzzle & 0x4804800800000ll)) 15340: altDoSolve(24, 0x1000000ll, puzzle | 0x4804800800000ll, 15341: partsUsed | 0x400l); 15342: if(!(puzzle & 0x4004804800000ll)) 15343: altDoSolve(24, 0x1000000ll, puzzle | 0x4004804800000ll, 15344: partsUsed | 0x400l); 15345: } 15346: if (!(puzzle & 0x1800800000ll)) { 15347: if(!(puzzle & 0x1001801800000ll)) 15348: altDoSolve(24, 0x1000000ll, puzzle | 0x1001801800000ll, 15349: partsUsed | 0x400l); 15350: if(!(puzzle & 0x801801800000ll)) 15351: altDoSolve(24, 0x1000000ll, puzzle | 0x801801800000ll, 15352: partsUsed | 0x400l); 15353: if(!(puzzle & 0x1801800800000ll)) 15354: altDoSolve(24, 0x1000000ll, puzzle | 0x1801800800000ll, 15355: partsUsed | 0x400l); 15356: } 15357: if(!(puzzle & 0x900900800000ll)) 15358: altDoSolve(24, 0x1000000ll, puzzle | 0x900900800000ll, 15359: partsUsed | 0x400l); 15360: if(!(puzzle & 0x4904800000ll)) 15361: altDoSolve(24, 0x1000000ll, puzzle | 0x4904800000ll, 15362: partsUsed | 0x400l); 15363: if(!(puzzle & 0xf800000ll)) 15364: altDoSolve(24, 0x1000000ll, puzzle | 0xf800000ll, 15365: partsUsed | 0x400l); 15366: if(!(puzzle & 0x1c01800000ll)) 15367: altDoSolve(24, 0x1000000ll, puzzle | 0x1c01800000ll, 15368: partsUsed | 0x400l); 15369: if(!(puzzle & 0xc00c00800000ll)) 15370: altDoSolve(24, 0x1000000ll, puzzle | 0xc00c00800000ll, 15371: partsUsed | 0x400l); 15372: altpiece11at23: 15373: break; 15374: case 24: 15375: if (partsUsed & 0x2l) goto altpiece2at24; 15376: if(!(puzzle & 0xc01801000000ll)) 15377: altDoSolve(25, 0x2000000ll, puzzle | 0xc01801000000ll, 15378: partsUsed | 0x2l); 15379: if(!(puzzle & 0x241201000000ll)) 15380: altDoSolve(25, 0x2000000ll, puzzle | 0x241201000000ll, 15381: partsUsed | 0x2l); 15382: if(!(puzzle & 0x201209000000ll)) 15383: altDoSolve(25, 0x2000000ll, puzzle | 0x201209000000ll, 15384: partsUsed | 0x2l); 15385: altpiece2at24: 15386: if (partsUsed & 0x4l) goto altpiece3at24; 15387: if (!(puzzle & 0x1001001000000ll)) { 15388: if(!(puzzle & 0x1001241000000ll)) 15389: altDoSolve(25, 0x2000000ll, puzzle | 0x1001241000000ll, 15390: partsUsed | 0x4l); 15391: if(!(puzzle & 0x9201001000000ll)) 15392: altDoSolve(25, 0x2000000ll, puzzle | 0x9201001000000ll, 15393: partsUsed | 0x4l); 15394: if(!(puzzle & 0x1001c01000000ll)) 15395: altDoSolve(25, 0x2000000ll, puzzle | 0x1001c01000000ll, 15396: partsUsed | 0x4l); 15397: } 15398: altpiece3at24: 15399: if (partsUsed & 0x8l) goto altpiece4at24; 15400: if(!(puzzle & 0x401c01000000ll)) 15401: altDoSolve(25, 0x2000000ll, puzzle | 0x401c01000000ll, 15402: partsUsed | 0x8l); 15403: if(!(puzzle & 0x41241000000ll)) 15404: altDoSolve(25, 0x2000000ll, puzzle | 0x41241000000ll, 15405: partsUsed | 0x8l); 15406: if(!(puzzle & 0x1201009000000ll)) 15407: altDoSolve(25, 0x2000000ll, puzzle | 0x1201009000000ll, 15408: partsUsed | 0x8l); 15409: altpiece4at24: 15410: if (partsUsed & 0x10l) goto altpiece5at24; 15411: if (!(puzzle & 0x1001001001000000ll)) { 15412: if(!(puzzle & 0x1201001201000000ll)) 15413: altDoSolve(25, 0x2000000ll, puzzle | 0x1201001201000000ll, 15414: partsUsed | 0x10l); 15415: if(!(puzzle & 0x1801001801000000ll)) 15416: altDoSolve(25, 0x2000000ll, puzzle | 0x1801001801000000ll, 15417: partsUsed | 0x10l); 15418: if(!(puzzle & 0x9001009001000000ll)) 15419: altDoSolve(25, 0x2000000ll, puzzle | 0x9001009001000000ll, 15420: partsUsed | 0x10l); 15421: if(!(puzzle & 0x1009001009000000ll)) 15422: altDoSolve(25, 0x2000000ll, puzzle | 0x1009001009000000ll, 15423: partsUsed | 0x10l); 15424: } 15425: if(!(puzzle & 0x8009008009000000ll)) 15426: altDoSolve(25, 0x2000000ll, puzzle | 0x8009008009000000ll, 15427: partsUsed | 0x10l); 15428: altpiece5at24: 15429: if (partsUsed & 0x20l) goto altpiece6at24; 15430: if (!(puzzle & 0x1001001001000000ll)) { 15431: if(!(puzzle & 0x1201001001000000ll)) 15432: altDoSolve(25, 0x2000000ll, puzzle | 0x1201001001000000ll, 15433: partsUsed | 0x20l); 15434: if(!(puzzle & 0x1801001001000000ll)) 15435: altDoSolve(25, 0x2000000ll, puzzle | 0x1801001001000000ll, 15436: partsUsed | 0x20l); 15437: if(!(puzzle & 0x1001001009000000ll)) 15438: altDoSolve(25, 0x2000000ll, puzzle | 0x1001001009000000ll, 15439: partsUsed | 0x20l); 15440: if(!(puzzle & 0x9001001001000000ll)) 15441: altDoSolve(25, 0x2000000ll, puzzle | 0x9001001001000000ll, 15442: partsUsed | 0x20l); 15443: } 15444: if(!(puzzle & 0x8008008009000000ll)) 15445: altDoSolve(25, 0x2000000ll, puzzle | 0x8008008009000000ll, 15446: partsUsed | 0x20l); 15447: altpiece6at24: 15448: if (partsUsed & 0x40l) goto altpiece7at24; 15449: if (!(puzzle & 0x1001001001000000ll)) { 15450: if(!(puzzle & 0x1001201001000000ll)) 15451: altDoSolve(25, 0x2000000ll, puzzle | 0x1001201001000000ll, 15452: partsUsed | 0x40l); 15453: if(!(puzzle & 0x1001001801000000ll)) 15454: altDoSolve(25, 0x2000000ll, puzzle | 0x1001001801000000ll, 15455: partsUsed | 0x40l); 15456: if(!(puzzle & 0x1001801001000000ll)) 15457: altDoSolve(25, 0x2000000ll, puzzle | 0x1001801001000000ll, 15458: partsUsed | 0x40l); 15459: if(!(puzzle & 0x1001009001000000ll)) 15460: altDoSolve(25, 0x2000000ll, puzzle | 0x1001009001000000ll, 15461: partsUsed | 0x40l); 15462: if(!(puzzle & 0x1009001001000000ll)) 15463: altDoSolve(25, 0x2000000ll, puzzle | 0x1009001001000000ll, 15464: partsUsed | 0x40l); 15465: } 15466: if(!(puzzle & 0x9241000000ll)) 15467: altDoSolve(25, 0x2000000ll, puzzle | 0x9241000000ll, 15468: partsUsed | 0x40l); 15469: if(!(puzzle & 0x1001001201000000ll)) 15470: altDoSolve(25, 0x2000000ll, puzzle | 0x1001001201000000ll, 15471: partsUsed | 0x40l); 15472: altpiece7at24: 15473: if (partsUsed & 0x80l) goto altpiece8at24; 15474: if(!(puzzle & 0x9001009000000ll)) 15475: altDoSolve(25, 0x2000000ll, puzzle | 0x9001009000000ll, 15476: partsUsed | 0x80l); 15477: if(!(puzzle & 0x9008009000000ll)) 15478: altDoSolve(25, 0x2000000ll, puzzle | 0x9008009000000ll, 15479: partsUsed | 0x80l); 15480: altpiece8at24: 15481: if (partsUsed & 0x100l) goto altpiece9at24; 15482: if(!(puzzle & 0x1901000000ll)) 15483: altDoSolve(25, 0x2000000ll, puzzle | 0x1901000000ll, 15484: partsUsed | 0x100l); 15485: if(!(puzzle & 0x1809000000ll)) 15486: altDoSolve(25, 0x2000000ll, puzzle | 0x1809000000ll, 15487: partsUsed | 0x100l); 15488: if(!(puzzle & 0x400d000000ll)) 15489: altDoSolve(25, 0x2000000ll, puzzle | 0x400d000000ll, 15490: partsUsed | 0x100l); 15491: if(!(puzzle & 0xd001000000ll)) 15492: altDoSolve(25, 0x2000000ll, puzzle | 0xd001000000ll, 15493: partsUsed | 0x100l); 15494: altpiece9at24: 15495: if (partsUsed & 0x200l) goto altpiece10at24; 15496: if (!(puzzle & 0x1201000000ll)) { 15497: if(!(puzzle & 0x201241000000ll)) 15498: altDoSolve(25, 0x2000000ll, puzzle | 0x201241000000ll, 15499: partsUsed | 0x200l); 15500: if(!(puzzle & 0x1001209000000ll)) 15501: altDoSolve(25, 0x2000000ll, puzzle | 0x1001209000000ll, 15502: partsUsed | 0x200l); 15503: if(!(puzzle & 0x8009201000000ll)) 15504: altDoSolve(25, 0x2000000ll, puzzle | 0x8009201000000ll, 15505: partsUsed | 0x200l); 15506: if(!(puzzle & 0x9001201000000ll)) 15507: altDoSolve(25, 0x2000000ll, puzzle | 0x9001201000000ll, 15508: partsUsed | 0x200l); 15509: if(!(puzzle & 0x209201000000ll)) 15510: altDoSolve(25, 0x2000000ll, puzzle | 0x209201000000ll, 15511: partsUsed | 0x200l); 15512: } 15513: if(!(puzzle & 0x1209001000000ll)) 15514: altDoSolve(25, 0x2000000ll, puzzle | 0x1209001000000ll, 15515: partsUsed | 0x200l); 15516: if(!(puzzle & 0x801c01000000ll)) 15517: altDoSolve(25, 0x2000000ll, puzzle | 0x801c01000000ll, 15518: partsUsed | 0x200l); 15519: altpiece10at24: 15520: if (partsUsed & 0x400l) goto altpiece11at24; 15521: if (!(puzzle & 0x1001001000000ll)) { 15522: if(!(puzzle & 0x1801801000000ll)) 15523: altDoSolve(25, 0x2000000ll, puzzle | 0x1801801000000ll, 15524: partsUsed | 0x400l); 15525: if(!(puzzle & 0x1009009000000ll)) 15526: altDoSolve(25, 0x2000000ll, puzzle | 0x1009009000000ll, 15527: partsUsed | 0x400l); 15528: if(!(puzzle & 0x9009001000000ll)) 15529: altDoSolve(25, 0x2000000ll, puzzle | 0x9009001000000ll, 15530: partsUsed | 0x400l); 15531: } 15532: if(!(puzzle & 0x1201201000000ll)) 15533: altDoSolve(25, 0x2000000ll, puzzle | 0x1201201000000ll, 15534: partsUsed | 0x400l); 15535: if(!(puzzle & 0x9209000000ll)) 15536: altDoSolve(25, 0x2000000ll, puzzle | 0x9209000000ll, 15537: partsUsed | 0x400l); 15538: if(!(puzzle & 0x8009009000000ll)) 15539: altDoSolve(25, 0x2000000ll, puzzle | 0x8009009000000ll, 15540: partsUsed | 0x400l); 15541: altpiece11at24: 15542: break; 15543: case 25: 15544: if (partsUsed & 0x2l) goto altpiece2at25; 15545: if(!(puzzle & 0x482402000000ll)) 15546: altDoSolve(26, 0x4000000ll, puzzle | 0x482402000000ll, 15547: partsUsed | 0x2l); 15548: if(!(puzzle & 0x800c006000000ll)) 15549: altDoSolve(26, 0x4000000ll, puzzle | 0x800c006000000ll, 15550: partsUsed | 0x2l); 15551: if(!(puzzle & 0xc006002000000ll)) 15552: altDoSolve(26, 0x4000000ll, puzzle | 0xc006002000000ll, 15553: partsUsed | 0x2l); 15554: altpiece2at25: 15555: if (partsUsed & 0x4l) goto altpiece3at25; 15556: if(!(puzzle & 0x400400e000000ll)) 15557: altDoSolve(26, 0x4000000ll, puzzle | 0x400400e000000ll, 15558: partsUsed | 0x4l); 15559: if(!(puzzle & 0x2002482000000ll)) 15560: altDoSolve(26, 0x4000000ll, puzzle | 0x2002482000000ll, 15561: partsUsed | 0x4l); 15562: if(!(puzzle & 0x200e002000000ll)) 15563: altDoSolve(26, 0x4000000ll, puzzle | 0x200e002000000ll, 15564: partsUsed | 0x4l); 15565: altpiece3at25: 15566: if (partsUsed & 0x8l) goto altpiece4at25; 15567: if(!(puzzle & 0x82482000000ll)) 15568: altDoSolve(26, 0x4000000ll, puzzle | 0x82482000000ll, 15569: partsUsed | 0x8l); 15570: if(!(puzzle & 0x800e002000000ll)) 15571: altDoSolve(26, 0x4000000ll, puzzle | 0x800e002000000ll, 15572: partsUsed | 0x8l); 15573: if(!(puzzle & 0xc004006000000ll)) 15574: altDoSolve(26, 0x4000000ll, puzzle | 0xc004006000000ll, 15575: partsUsed | 0x8l); 15576: altpiece4at25: 15577: if (partsUsed & 0x10l) goto altpiece5at25; 15578: if (!(puzzle & 0x2002002002000000ll)) { 15579: if(!(puzzle & 0x2402002402000000ll)) 15580: altDoSolve(26, 0x4000000ll, puzzle | 0x2402002402000000ll, 15581: partsUsed | 0x10l); 15582: if(!(puzzle & 0x6002006002000000ll)) 15583: altDoSolve(26, 0x4000000ll, puzzle | 0x6002006002000000ll, 15584: partsUsed | 0x10l); 15585: if(!(puzzle & 0x2006002006000000ll)) 15586: altDoSolve(26, 0x4000000ll, puzzle | 0x2006002006000000ll, 15587: partsUsed | 0x10l); 15588: } 15589: if(!(puzzle & 0x4006004006000000ll)) 15590: altDoSolve(26, 0x4000000ll, puzzle | 0x4006004006000000ll, 15591: partsUsed | 0x10l); 15592: altpiece5at25: 15593: if (partsUsed & 0x20l) goto altpiece6at25; 15594: if (!(puzzle & 0x2002002002000000ll)) { 15595: if(!(puzzle & 0x2402002002000000ll)) 15596: altDoSolve(26, 0x4000000ll, puzzle | 0x2402002002000000ll, 15597: partsUsed | 0x20l); 15598: if(!(puzzle & 0x2002002006000000ll)) 15599: altDoSolve(26, 0x4000000ll, puzzle | 0x2002002006000000ll, 15600: partsUsed | 0x20l); 15601: if(!(puzzle & 0x6002002002000000ll)) 15602: altDoSolve(26, 0x4000000ll, puzzle | 0x6002002002000000ll, 15603: partsUsed | 0x20l); 15604: } 15605: if(!(puzzle & 0x2492000000ll)) 15606: altDoSolve(26, 0x4000000ll, puzzle | 0x2492000000ll, 15607: partsUsed | 0x20l); 15608: if(!(puzzle & 0x4004004006000000ll)) 15609: altDoSolve(26, 0x4000000ll, puzzle | 0x4004004006000000ll, 15610: partsUsed | 0x20l); 15611: altpiece6at25: 15612: if (partsUsed & 0x40l) goto altpiece7at25; 15613: if (!(puzzle & 0x2002002002000000ll)) { 15614: if(!(puzzle & 0x2002402002000000ll)) 15615: altDoSolve(26, 0x4000000ll, puzzle | 0x2002402002000000ll, 15616: partsUsed | 0x40l); 15617: if(!(puzzle & 0x2002002402000000ll)) 15618: altDoSolve(26, 0x4000000ll, puzzle | 0x2002002402000000ll, 15619: partsUsed | 0x40l); 15620: if(!(puzzle & 0x2002006002000000ll)) 15621: altDoSolve(26, 0x4000000ll, puzzle | 0x2002006002000000ll, 15622: partsUsed | 0x40l); 15623: if(!(puzzle & 0x2006002002000000ll)) 15624: altDoSolve(26, 0x4000000ll, puzzle | 0x2006002002000000ll, 15625: partsUsed | 0x40l); 15626: } 15627: altpiece7at25: 15628: if (partsUsed & 0x80l) goto altpiece8at25; 15629: if(!(puzzle & 0x6004006000000ll)) 15630: altDoSolve(26, 0x4000000ll, puzzle | 0x6004006000000ll, 15631: partsUsed | 0x80l); 15632: if(!(puzzle & 0x6002006000000ll)) 15633: altDoSolve(26, 0x4000000ll, puzzle | 0x6002006000000ll, 15634: partsUsed | 0x80l); 15635: if(!(puzzle & 0xe00a000000ll)) 15636: altDoSolve(26, 0x4000000ll, puzzle | 0xe00a000000ll, 15637: partsUsed | 0x80l); 15638: if(!(puzzle & 0xa00e000000ll)) 15639: altDoSolve(26, 0x4000000ll, puzzle | 0xa00e000000ll, 15640: partsUsed | 0x80l); 15641: altpiece8at25: 15642: if (partsUsed & 0x100l) goto altpiece9at25; 15643: if(!(puzzle & 0x4806000000ll)) 15644: altDoSolve(26, 0x4000000ll, puzzle | 0x4806000000ll, 15645: partsUsed | 0x100l); 15646: if(!(puzzle & 0x2c02000000ll)) 15647: altDoSolve(26, 0x4000000ll, puzzle | 0x2c02000000ll, 15648: partsUsed | 0x100l); 15649: altpiece9at25: 15650: if (partsUsed & 0x200l) goto altpiece10at25; 15651: if(!(puzzle & 0x402482000000ll)) 15652: altDoSolve(26, 0x4000000ll, puzzle | 0x402482000000ll, 15653: partsUsed | 0x200l); 15654: if(!(puzzle & 0x400c006000000ll)) 15655: altDoSolve(26, 0x4000000ll, puzzle | 0x400c006000000ll, 15656: partsUsed | 0x200l); 15657: if(!(puzzle & 0x400e002000000ll)) 15658: altDoSolve(26, 0x4000000ll, puzzle | 0x400e002000000ll, 15659: partsUsed | 0x200l); 15660: altpiece10at25: 15661: if (partsUsed & 0x400l) goto altpiece11at25; 15662: if (!(puzzle & 0x2002002000000ll)) { 15663: if(!(puzzle & 0x2402402000000ll)) 15664: altDoSolve(26, 0x4000000ll, puzzle | 0x2402402000000ll, 15665: partsUsed | 0x400l); 15666: if(!(puzzle & 0x2006006000000ll)) 15667: altDoSolve(26, 0x4000000ll, puzzle | 0x2006006000000ll, 15668: partsUsed | 0x400l); 15669: if(!(puzzle & 0x6006002000000ll)) 15670: altDoSolve(26, 0x4000000ll, puzzle | 0x6006002000000ll, 15671: partsUsed | 0x400l); 15672: } 15673: if (!(puzzle & 0x4006000000ll)) { 15674: if(!(puzzle & 0x4006006000000ll)) 15675: altDoSolve(26, 0x4000000ll, puzzle | 0x4006006000000ll, 15676: partsUsed | 0x400l); 15677: if(!(puzzle & 0xe006000000ll)) 15678: altDoSolve(26, 0x4000000ll, puzzle | 0xe006000000ll, 15679: partsUsed | 0x400l); 15680: if(!(puzzle & 0x600e000000ll)) 15681: altDoSolve(26, 0x4000000ll, puzzle | 0x600e000000ll, 15682: partsUsed | 0x400l); 15683: if(!(puzzle & 0xc00e000000ll)) 15684: altDoSolve(26, 0x4000000ll, puzzle | 0xc00e000000ll, 15685: partsUsed | 0x400l); 15686: } 15687: altpiece11at25: 15688: break; 15689: case 26: 15690: if (partsUsed & 0x2l) goto altpiece2at26; 15691: if(!(puzzle & 0x904804000000ll)) 15692: altDoSolve(27, 0x8000000ll, puzzle | 0x904804000000ll, 15693: partsUsed | 0x2l); 15694: if(!(puzzle & 0x200600c000000ll)) 15695: altDoSolve(27, 0x8000000ll, puzzle | 0x200600c000000ll, 15696: partsUsed | 0x2l); 15697: altpiece2at26: 15698: if (partsUsed & 0x4l) goto altpiece3at26; 15699: if(!(puzzle & 0x4004904000000ll)) 15700: altDoSolve(27, 0x8000000ll, puzzle | 0x4004904000000ll, 15701: partsUsed | 0x4l); 15702: if(!(puzzle & 0xe004004000000ll)) 15703: altDoSolve(27, 0x8000000ll, puzzle | 0xe004004000000ll, 15704: partsUsed | 0x4l); 15705: altpiece3at26: 15706: if (partsUsed & 0x8l) goto altpiece4at26; 15707: if(!(puzzle & 0x104904000000ll)) 15708: altDoSolve(27, 0x8000000ll, puzzle | 0x104904000000ll, 15709: partsUsed | 0x8l); 15710: if(!(puzzle & 0x600400c000000ll)) 15711: altDoSolve(27, 0x8000000ll, puzzle | 0x600400c000000ll, 15712: partsUsed | 0x8l); 15713: altpiece4at26: 15714: if (partsUsed & 0x10l) goto altpiece5at26; 15715: if (!(puzzle & 0x4004004004000000ll)) { 15716: if(!(puzzle & 0x4804004804000000ll)) 15717: altDoSolve(27, 0x8000000ll, puzzle | 0x4804004804000000ll, 15718: partsUsed | 0x10l); 15719: if(!(puzzle & 0x6004006004000000ll)) 15720: altDoSolve(27, 0x8000000ll, puzzle | 0x6004006004000000ll, 15721: partsUsed | 0x10l); 15722: if(!(puzzle & 0xc00400c004000000ll)) 15723: altDoSolve(27, 0x8000000ll, puzzle | 0xc00400c004000000ll, 15724: partsUsed | 0x10l); 15725: if(!(puzzle & 0x400c00400c000000ll)) 15726: altDoSolve(27, 0x8000000ll, puzzle | 0x400c00400c000000ll, 15727: partsUsed | 0x10l); 15728: } 15729: if(!(puzzle & 0x800c00800c000000ll)) 15730: altDoSolve(27, 0x8000000ll, puzzle | 0x800c00800c000000ll, 15731: partsUsed | 0x10l); 15732: altpiece5at26: 15733: if (partsUsed & 0x20l) goto altpiece6at26; 15734: if (!(puzzle & 0x4004004004000000ll)) { 15735: if(!(puzzle & 0x4804004004000000ll)) 15736: altDoSolve(27, 0x8000000ll, puzzle | 0x4804004004000000ll, 15737: partsUsed | 0x20l); 15738: if(!(puzzle & 0x6004004004000000ll)) 15739: altDoSolve(27, 0x8000000ll, puzzle | 0x6004004004000000ll, 15740: partsUsed | 0x20l); 15741: if(!(puzzle & 0x400400400c000000ll)) 15742: altDoSolve(27, 0x8000000ll, puzzle | 0x400400400c000000ll, 15743: partsUsed | 0x20l); 15744: if(!(puzzle & 0xc004004004000000ll)) 15745: altDoSolve(27, 0x8000000ll, puzzle | 0xc004004004000000ll, 15746: partsUsed | 0x20l); 15747: } 15748: if(!(puzzle & 0x4924000000ll)) 15749: altDoSolve(27, 0x8000000ll, puzzle | 0x4924000000ll, 15750: partsUsed | 0x20l); 15751: if(!(puzzle & 0x800800800c000000ll)) 15752: altDoSolve(27, 0x8000000ll, puzzle | 0x800800800c000000ll, 15753: partsUsed | 0x20l); 15754: altpiece6at26: 15755: if (partsUsed & 0x40l) goto altpiece7at26; 15756: if (!(puzzle & 0x4004004004000000ll)) { 15757: if(!(puzzle & 0x4004804004000000ll)) 15758: altDoSolve(27, 0x8000000ll, puzzle | 0x4004804004000000ll, 15759: partsUsed | 0x40l); 15760: if(!(puzzle & 0x4004004804000000ll)) 15761: altDoSolve(27, 0x8000000ll, puzzle | 0x4004004804000000ll, 15762: partsUsed | 0x40l); 15763: if(!(puzzle & 0x4004006004000000ll)) 15764: altDoSolve(27, 0x8000000ll, puzzle | 0x4004006004000000ll, 15765: partsUsed | 0x40l); 15766: if(!(puzzle & 0x4006004004000000ll)) 15767: altDoSolve(27, 0x8000000ll, puzzle | 0x4006004004000000ll, 15768: partsUsed | 0x40l); 15769: if(!(puzzle & 0x400400c004000000ll)) 15770: altDoSolve(27, 0x8000000ll, puzzle | 0x400400c004000000ll, 15771: partsUsed | 0x40l); 15772: if(!(puzzle & 0x400c004004000000ll)) 15773: altDoSolve(27, 0x8000000ll, puzzle | 0x400c004004000000ll, 15774: partsUsed | 0x40l); 15775: } 15776: altpiece7at26: 15777: if (partsUsed & 0x80l) goto altpiece8at26; 15778: if(!(puzzle & 0xc00800c000000ll)) 15779: altDoSolve(27, 0x8000000ll, puzzle | 0xc00800c000000ll, 15780: partsUsed | 0x80l); 15781: if(!(puzzle & 0xc00400c000000ll)) 15782: altDoSolve(27, 0x8000000ll, puzzle | 0xc00400c000000ll, 15783: partsUsed | 0x80l); 15784: altpiece8at26: 15785: if (partsUsed & 0x100l) goto altpiece9at26; 15786: if(!(puzzle & 0x5804000000ll)) 15787: altDoSolve(27, 0x8000000ll, puzzle | 0x5804000000ll, 15788: partsUsed | 0x100l); 15789: if(!(puzzle & 0x6404000000ll)) 15790: altDoSolve(27, 0x8000000ll, puzzle | 0x6404000000ll, 15791: partsUsed | 0x100l); 15792: if(!(puzzle & 0x900c000000ll)) 15793: altDoSolve(27, 0x8000000ll, puzzle | 0x900c000000ll, 15794: partsUsed | 0x100l); 15795: altpiece9at26: 15796: if (partsUsed & 0x200l) goto altpiece10at26; 15797: if (!(puzzle & 0x4004004000000ll)) { 15798: if(!(puzzle & 0x400600c000000ll)) 15799: altDoSolve(27, 0x8000000ll, puzzle | 0x400600c000000ll, 15800: partsUsed | 0x200l); 15801: if(!(puzzle & 0xc006004000000ll)) 15802: altDoSolve(27, 0x8000000ll, puzzle | 0xc006004000000ll, 15803: partsUsed | 0x200l); 15804: if(!(puzzle & 0x600c004000000ll)) 15805: altDoSolve(27, 0x8000000ll, puzzle | 0x600c004000000ll, 15806: partsUsed | 0x200l); 15807: } 15808: if(!(puzzle & 0x804904000000ll)) 15809: altDoSolve(27, 0x8000000ll, puzzle | 0x804904000000ll, 15810: partsUsed | 0x200l); 15811: if(!(puzzle & 0x200e004000000ll)) 15812: altDoSolve(27, 0x8000000ll, puzzle | 0x200e004000000ll, 15813: partsUsed | 0x200l); 15814: if(!(puzzle & 0x800e004000000ll)) 15815: altDoSolve(27, 0x8000000ll, puzzle | 0x800e004000000ll, 15816: partsUsed | 0x200l); 15817: altpiece10at26: 15818: if (partsUsed & 0x400l) goto altpiece11at26; 15819: if (!(puzzle & 0x4004004000000ll)) { 15820: if(!(puzzle & 0x4804804000000ll)) 15821: altDoSolve(27, 0x8000000ll, puzzle | 0x4804804000000ll, 15822: partsUsed | 0x400l); 15823: if(!(puzzle & 0x6006004000000ll)) 15824: altDoSolve(27, 0x8000000ll, puzzle | 0x6006004000000ll, 15825: partsUsed | 0x400l); 15826: if(!(puzzle & 0x400c00c000000ll)) 15827: altDoSolve(27, 0x8000000ll, puzzle | 0x400c00c000000ll, 15828: partsUsed | 0x400l); 15829: if(!(puzzle & 0xc00c004000000ll)) 15830: altDoSolve(27, 0x8000000ll, puzzle | 0xc00c004000000ll, 15831: partsUsed | 0x400l); 15832: } 15833: if(!(puzzle & 0xe00c000000ll)) 15834: altDoSolve(27, 0x8000000ll, puzzle | 0xe00c000000ll, 15835: partsUsed | 0x400l); 15836: if(!(puzzle & 0x800c00c000000ll)) 15837: altDoSolve(27, 0x8000000ll, puzzle | 0x800c00c000000ll, 15838: partsUsed | 0x400l); 15839: altpiece11at26: 15840: break; 15841: case 27: 15842: if (partsUsed & 0x2l) goto altpiece2at27; 15843: if(!(puzzle & 0x1209008000000ll)) 15844: altDoSolve(28, 0x10000000ll, puzzle | 0x1209008000000ll, 15845: partsUsed | 0x2l); 15846: if(!(puzzle & 0x600c008000000ll)) 15847: altDoSolve(28, 0x10000000ll, puzzle | 0x600c008000000ll, 15848: partsUsed | 0x2l); 15849: altpiece2at27: 15850: if (partsUsed & 0x4l) goto altpiece3at27; 15851: if(!(puzzle & 0x8009208000000ll)) 15852: altDoSolve(28, 0x10000000ll, puzzle | 0x8009208000000ll, 15853: partsUsed | 0x4l); 15854: if(!(puzzle & 0x800e008000000ll)) 15855: altDoSolve(28, 0x10000000ll, puzzle | 0x800e008000000ll, 15856: partsUsed | 0x4l); 15857: altpiece3at27: 15858: if (partsUsed & 0x8l) goto altpiece4at27; 15859: if(!(puzzle & 0x209208000000ll)) 15860: altDoSolve(28, 0x10000000ll, puzzle | 0x209208000000ll, 15861: partsUsed | 0x8l); 15862: if(!(puzzle & 0x200e008000000ll)) 15863: altDoSolve(28, 0x10000000ll, puzzle | 0x200e008000000ll, 15864: partsUsed | 0x8l); 15865: altpiece4at27: 15866: if (partsUsed & 0x10l) goto altpiece5at27; 15867: if(!(puzzle & 0x9008009008000000ll)) 15868: altDoSolve(28, 0x10000000ll, puzzle | 0x9008009008000000ll, 15869: partsUsed | 0x10l); 15870: if(!(puzzle & 0xc00800c008000000ll)) 15871: altDoSolve(28, 0x10000000ll, puzzle | 0xc00800c008000000ll, 15872: partsUsed | 0x10l); 15873: altpiece5at27: 15874: if (partsUsed & 0x20l) goto altpiece6at27; 15875: if(!(puzzle & 0x9248000000ll)) 15876: altDoSolve(28, 0x10000000ll, puzzle | 0x9248000000ll, 15877: partsUsed | 0x20l); 15878: if(!(puzzle & 0x9008008008000000ll)) 15879: altDoSolve(28, 0x10000000ll, puzzle | 0x9008008008000000ll, 15880: partsUsed | 0x20l); 15881: if(!(puzzle & 0xc008008008000000ll)) 15882: altDoSolve(28, 0x10000000ll, puzzle | 0xc008008008000000ll, 15883: partsUsed | 0x20l); 15884: altpiece6at27: 15885: if (partsUsed & 0x40l) goto altpiece7at27; 15886: if (!(puzzle & 0x8008008008000000ll)) { 15887: if(!(puzzle & 0x8009008008000000ll)) 15888: altDoSolve(28, 0x10000000ll, puzzle | 0x8009008008000000ll, 15889: partsUsed | 0x40l); 15890: if(!(puzzle & 0x8008009008000000ll)) 15891: altDoSolve(28, 0x10000000ll, puzzle | 0x8008009008000000ll, 15892: partsUsed | 0x40l); 15893: if(!(puzzle & 0x800800c008000000ll)) 15894: altDoSolve(28, 0x10000000ll, puzzle | 0x800800c008000000ll, 15895: partsUsed | 0x40l); 15896: if(!(puzzle & 0x800c008008000000ll)) 15897: altDoSolve(28, 0x10000000ll, puzzle | 0x800c008008000000ll, 15898: partsUsed | 0x40l); 15899: } 15900: altpiece7at27: 15901: if (partsUsed & 0x100l) goto altpiece9at27; 15902: if(!(puzzle & 0xc808000000ll)) 15903: altDoSolve(28, 0x10000000ll, puzzle | 0xc808000000ll, 15904: partsUsed | 0x100l); 15905: altpiece9at27: 15906: if (partsUsed & 0x200l) goto altpiece10at27; 15907: if(!(puzzle & 0x1009208000000ll)) 15908: altDoSolve(28, 0x10000000ll, puzzle | 0x1009208000000ll, 15909: partsUsed | 0x200l); 15910: if(!(puzzle & 0x400e008000000ll)) 15911: altDoSolve(28, 0x10000000ll, puzzle | 0x400e008000000ll, 15912: partsUsed | 0x200l); 15913: altpiece10at27: 15914: if (partsUsed & 0x400l) goto altpiece11at27; 15915: if(!(puzzle & 0x9009008000000ll)) 15916: altDoSolve(28, 0x10000000ll, puzzle | 0x9009008000000ll, 15917: partsUsed | 0x400l); 15918: if(!(puzzle & 0xc00c008000000ll)) 15919: altDoSolve(28, 0x10000000ll, puzzle | 0xc00c008000000ll, 15920: partsUsed | 0x400l); 15921: altpiece11at27: 15922: break; 15923: case 28: 15924: if (partsUsed & 0x2l) goto altpiece2at28; 15925: if(!(puzzle & 0x480090010000000ll)) 15926: altDoSolve(29, 0x20000000ll, puzzle | 0x480090010000000ll, 15927: partsUsed | 0x2l); 15928: if(!(puzzle & 0x400480090000000ll)) 15929: altDoSolve(29, 0x20000000ll, puzzle | 0x400480090000000ll, 15930: partsUsed | 0x2l); 15931: if(!(puzzle & 0x1330000000ll)) 15932: altDoSolve(29, 0x20000000ll, puzzle | 0x1330000000ll, 15933: partsUsed | 0x2l); 15934: if(!(puzzle & 0x1990000000ll)) 15935: altDoSolve(29, 0x20000000ll, puzzle | 0x1990000000ll, 15936: partsUsed | 0x2l); 15937: if(!(puzzle & 0x40060030000000ll)) 15938: altDoSolve(29, 0x20000000ll, puzzle | 0x40060030000000ll, 15939: partsUsed | 0x2l); 15940: if(!(puzzle & 0x60030010000000ll)) 15941: altDoSolve(29, 0x20000000ll, puzzle | 0x60030010000000ll, 15942: partsUsed | 0x2l); 15943: altpiece2at28: 15944: if (partsUsed & 0x4l) goto altpiece3at28; 15945: if(!(puzzle & 0x10490010000000ll)) 15946: altDoSolve(29, 0x20000000ll, puzzle | 0x10490010000000ll, 15947: partsUsed | 0x4l); 15948: if(!(puzzle & 0x10070010000000ll)) 15949: altDoSolve(29, 0x20000000ll, puzzle | 0x10070010000000ll, 15950: partsUsed | 0x4l); 15951: if(!(puzzle & 0x80080490000000ll)) 15952: altDoSolve(29, 0x20000000ll, puzzle | 0x80080490000000ll, 15953: partsUsed | 0x4l); 15954: if(!(puzzle & 0x790000000ll)) 15955: altDoSolve(29, 0x20000000ll, puzzle | 0x790000000ll, 15956: partsUsed | 0x4l); 15957: if(!(puzzle & 0x970000000ll)) 15958: altDoSolve(29, 0x20000000ll, puzzle | 0x970000000ll, 15959: partsUsed | 0x4l); 15960: if(!(puzzle & 0x20020070000000ll)) 15961: altDoSolve(29, 0x20000000ll, puzzle | 0x20020070000000ll, 15962: partsUsed | 0x4l); 15963: altpiece3at28: 15964: if (partsUsed & 0x8l) goto altpiece4at28; 15965: if(!(puzzle & 0x400490010000000ll)) 15966: altDoSolve(29, 0x20000000ll, puzzle | 0x400490010000000ll, 15967: partsUsed | 0x8l); 15968: if(!(puzzle & 0x480080090000000ll)) 15969: altDoSolve(29, 0x20000000ll, puzzle | 0x480080090000000ll, 15970: partsUsed | 0x8l); 15971: if(!(puzzle & 0x1930000000ll)) 15972: altDoSolve(29, 0x20000000ll, puzzle | 0x1930000000ll, 15973: partsUsed | 0x8l); 15974: if(!(puzzle & 0x1390000000ll)) 15975: altDoSolve(29, 0x20000000ll, puzzle | 0x1390000000ll, 15976: partsUsed | 0x8l); 15977: if(!(puzzle & 0x40070010000000ll)) 15978: altDoSolve(29, 0x20000000ll, puzzle | 0x40070010000000ll, 15979: partsUsed | 0x8l); 15980: if(!(puzzle & 0x60020030000000ll)) 15981: altDoSolve(29, 0x20000000ll, puzzle | 0x60020030000000ll, 15982: partsUsed | 0x8l); 15983: altpiece4at28: 15984: if (partsUsed & 0x10l) goto altpiece5at28; 15985: if (!(puzzle & 0x2490000000ll)) { 15986: if(!(puzzle & 0x412490000000ll)) 15987: altDoSolve(29, 0x20000000ll, puzzle | 0x412490000000ll, 15988: partsUsed | 0x10l); 15989: if(!(puzzle & 0x6590000000ll)) 15990: altDoSolve(29, 0x20000000ll, puzzle | 0x6590000000ll, 15991: partsUsed | 0x10l); 15992: if(!(puzzle & 0x2082490000000ll)) 15993: altDoSolve(29, 0x20000000ll, puzzle | 0x2082490000000ll, 15994: partsUsed | 0x10l); 15995: if(!(puzzle & 0x2cb0000000ll)) 15996: altDoSolve(29, 0x20000000ll, puzzle | 0x2cb0000000ll, 15997: partsUsed | 0x10l); 15998: } 15999: if(!(puzzle & 0x4d30000000ll)) 16000: altDoSolve(29, 0x20000000ll, puzzle | 0x4d30000000ll, 16001: partsUsed | 0x10l); 16002: if(!(puzzle & 0x2490410000000ll)) 16003: altDoSolve(29, 0x20000000ll, puzzle | 0x2490410000000ll, 16004: partsUsed | 0x10l); 16005: altpiece5at28: 16006: if (partsUsed & 0x20l) goto altpiece6at28; 16007: if (!(puzzle & 0x2490000000ll)) { 16008: if(!(puzzle & 0x2002490000000ll)) 16009: altDoSolve(29, 0x20000000ll, puzzle | 0x2002490000000ll, 16010: partsUsed | 0x20l); 16011: if(!(puzzle & 0x24b0000000ll)) 16012: altDoSolve(29, 0x20000000ll, puzzle | 0x24b0000000ll, 16013: partsUsed | 0x20l); 16014: if(!(puzzle & 0x12490000000ll)) 16015: altDoSolve(29, 0x20000000ll, puzzle | 0x12490000000ll, 16016: partsUsed | 0x20l); 16017: if(!(puzzle & 0x6490000000ll)) 16018: altDoSolve(29, 0x20000000ll, puzzle | 0x6490000000ll, 16019: partsUsed | 0x20l); 16020: } 16021: if(!(puzzle & 0x2490010000000ll)) 16022: altDoSolve(29, 0x20000000ll, puzzle | 0x2490010000000ll, 16023: partsUsed | 0x20l); 16024: if(!(puzzle & 0x4930000000ll)) 16025: altDoSolve(29, 0x20000000ll, puzzle | 0x4930000000ll, 16026: partsUsed | 0x20l); 16027: altpiece6at28: 16028: if (partsUsed & 0x40l) goto altpiece7at28; 16029: if (!(puzzle & 0x2490000000ll)) { 16030: if(!(puzzle & 0x402490000000ll)) 16031: altDoSolve(29, 0x20000000ll, puzzle | 0x402490000000ll, 16032: partsUsed | 0x40l); 16033: if(!(puzzle & 0x2590000000ll)) 16034: altDoSolve(29, 0x20000000ll, puzzle | 0x2590000000ll, 16035: partsUsed | 0x40l); 16036: if(!(puzzle & 0x82490000000ll)) 16037: altDoSolve(29, 0x20000000ll, puzzle | 0x82490000000ll, 16038: partsUsed | 0x40l); 16039: if(!(puzzle & 0x2c90000000ll)) 16040: altDoSolve(29, 0x20000000ll, puzzle | 0x2c90000000ll, 16041: partsUsed | 0x40l); 16042: } 16043: altpiece7at28: 16044: if (partsUsed & 0x80l) goto altpiece8at28; 16045: if(!(puzzle & 0x90010090000000ll)) 16046: altDoSolve(29, 0x20000000ll, puzzle | 0x90010090000000ll, 16047: partsUsed | 0x80l); 16048: if(!(puzzle & 0x90080090000000ll)) 16049: altDoSolve(29, 0x20000000ll, puzzle | 0x90080090000000ll, 16050: partsUsed | 0x80l); 16051: if(!(puzzle & 0x490410000000ll)) 16052: altDoSolve(29, 0x20000000ll, puzzle | 0x490410000000ll, 16053: partsUsed | 0x80l); 16054: if(!(puzzle & 0x410490000000ll)) 16055: altDoSolve(29, 0x20000000ll, puzzle | 0x410490000000ll, 16056: partsUsed | 0x80l); 16057: if(!(puzzle & 0x2f0000000ll)) 16058: altDoSolve(29, 0x20000000ll, puzzle | 0x2f0000000ll, 16059: partsUsed | 0x80l); 16060: if(!(puzzle & 0xcb0000000ll)) 16061: altDoSolve(29, 0x20000000ll, puzzle | 0xcb0000000ll, 16062: partsUsed | 0x80l); 16063: if(!(puzzle & 0xd30000000ll)) 16064: altDoSolve(29, 0x20000000ll, puzzle | 0xd30000000ll, 16065: partsUsed | 0x80l); 16066: if(!(puzzle & 0x3d0000000ll)) 16067: altDoSolve(29, 0x20000000ll, puzzle | 0x3d0000000ll, 16068: partsUsed | 0x80l); 16069: if(!(puzzle & 0x30020030000000ll)) 16070: altDoSolve(29, 0x20000000ll, puzzle | 0x30020030000000ll, 16071: partsUsed | 0x80l); 16072: if(!(puzzle & 0x30010030000000ll)) 16073: altDoSolve(29, 0x20000000ll, puzzle | 0x30010030000000ll, 16074: partsUsed | 0x80l); 16075: if(!(puzzle & 0x70050000000ll)) 16076: altDoSolve(29, 0x20000000ll, puzzle | 0x70050000000ll, 16077: partsUsed | 0x80l); 16078: if(!(puzzle & 0x50070000000ll)) 16079: altDoSolve(29, 0x20000000ll, puzzle | 0x50070000000ll, 16080: partsUsed | 0x80l); 16081: altpiece8at28: 16082: if (partsUsed & 0x100l) goto altpiece9at28; 16083: if(!(puzzle & 0x100130000000ll)) 16084: altDoSolve(29, 0x20000000ll, puzzle | 0x100130000000ll, 16085: partsUsed | 0x100l); 16086: if(!(puzzle & 0x130010000000ll)) 16087: altDoSolve(29, 0x20000000ll, puzzle | 0x130010000000ll, 16088: partsUsed | 0x100l); 16089: if(!(puzzle & 0x200b0000000ll)) 16090: altDoSolve(29, 0x20000000ll, puzzle | 0x200b0000000ll, 16091: partsUsed | 0x100l); 16092: if(!(puzzle & 0x90030000000ll)) 16093: altDoSolve(29, 0x20000000ll, puzzle | 0x90030000000ll, 16094: partsUsed | 0x100l); 16095: if(!(puzzle & 0x180090000000ll)) 16096: altDoSolve(29, 0x20000000ll, puzzle | 0x180090000000ll, 16097: partsUsed | 0x100l); 16098: if(!(puzzle & 0x10190000000ll)) 16099: altDoSolve(29, 0x20000000ll, puzzle | 0x10190000000ll, 16100: partsUsed | 0x100l); 16101: altpiece9at28: 16102: if (partsUsed & 0x200l) goto altpiece10at28; 16103: if(!(puzzle & 0x80490010000000ll)) 16104: altDoSolve(29, 0x20000000ll, puzzle | 0x80490010000000ll, 16105: partsUsed | 0x200l); 16106: if(!(puzzle & 0x80480090000000ll)) 16107: altDoSolve(29, 0x20000000ll, puzzle | 0x80480090000000ll, 16108: partsUsed | 0x200l); 16109: if(!(puzzle & 0xb30000000ll)) 16110: altDoSolve(29, 0x20000000ll, puzzle | 0xb30000000ll, 16111: partsUsed | 0x200l); 16112: if(!(puzzle & 0xb90000000ll)) 16113: altDoSolve(29, 0x20000000ll, puzzle | 0xb90000000ll, 16114: partsUsed | 0x200l); 16115: if(!(puzzle & 0x20060030000000ll)) 16116: altDoSolve(29, 0x20000000ll, puzzle | 0x20060030000000ll, 16117: partsUsed | 0x200l); 16118: if(!(puzzle & 0x20070010000000ll)) 16119: altDoSolve(29, 0x20000000ll, puzzle | 0x20070010000000ll, 16120: partsUsed | 0x200l); 16121: altpiece10at28: 16122: if (partsUsed & 0x400l) goto altpiece11at28; 16123: if (!(puzzle & 0x80090000000ll)) { 16124: if(!(puzzle & 0x10090090000000ll)) 16125: altDoSolve(29, 0x20000000ll, puzzle | 0x10090090000000ll, 16126: partsUsed | 0x400l); 16127: if(!(puzzle & 0x490090000000ll)) 16128: altDoSolve(29, 0x20000000ll, puzzle | 0x490090000000ll, 16129: partsUsed | 0x400l); 16130: if(!(puzzle & 0x480490000000ll)) 16131: altDoSolve(29, 0x20000000ll, puzzle | 0x480490000000ll, 16132: partsUsed | 0x400l); 16133: if(!(puzzle & 0x90490000000ll)) 16134: altDoSolve(29, 0x20000000ll, puzzle | 0x90490000000ll, 16135: partsUsed | 0x400l); 16136: if(!(puzzle & 0x80090090000000ll)) 16137: altDoSolve(29, 0x20000000ll, puzzle | 0x80090090000000ll, 16138: partsUsed | 0x400l); 16139: } 16140: if (!(puzzle & 0x130000000ll)) { 16141: if(!(puzzle & 0x370000000ll)) 16142: altDoSolve(29, 0x20000000ll, puzzle | 0x370000000ll, 16143: partsUsed | 0x400l); 16144: if(!(puzzle & 0x1f0000000ll)) 16145: altDoSolve(29, 0x20000000ll, puzzle | 0x1f0000000ll, 16146: partsUsed | 0x400l); 16147: if(!(puzzle & 0x5b0000000ll)) 16148: altDoSolve(29, 0x20000000ll, puzzle | 0x5b0000000ll, 16149: partsUsed | 0x400l); 16150: if(!(puzzle & 0x9b0000000ll)) 16151: altDoSolve(29, 0x20000000ll, puzzle | 0x9b0000000ll, 16152: partsUsed | 0x400l); 16153: if(!(puzzle & 0x3b0000000ll)) 16154: altDoSolve(29, 0x20000000ll, puzzle | 0x3b0000000ll, 16155: partsUsed | 0x400l); 16156: } 16157: if (!(puzzle & 0x10010010000000ll)) { 16158: if(!(puzzle & 0x90090010000000ll)) 16159: altDoSolve(29, 0x20000000ll, puzzle | 0x90090010000000ll, 16160: partsUsed | 0x400l); 16161: if(!(puzzle & 0x10030030000000ll)) 16162: altDoSolve(29, 0x20000000ll, puzzle | 0x10030030000000ll, 16163: partsUsed | 0x400l); 16164: if(!(puzzle & 0x30030010000000ll)) 16165: altDoSolve(29, 0x20000000ll, puzzle | 0x30030010000000ll, 16166: partsUsed | 0x400l); 16167: } 16168: if (!(puzzle & 0x20030000000ll)) { 16169: if(!(puzzle & 0x20030030000000ll)) 16170: altDoSolve(29, 0x20000000ll, puzzle | 0x20030030000000ll, 16171: partsUsed | 0x400l); 16172: if(!(puzzle & 0x70030000000ll)) 16173: altDoSolve(29, 0x20000000ll, puzzle | 0x70030000000ll, 16174: partsUsed | 0x400l); 16175: if(!(puzzle & 0x30070000000ll)) 16176: altDoSolve(29, 0x20000000ll, puzzle | 0x30070000000ll, 16177: partsUsed | 0x400l); 16178: if(!(puzzle & 0x60070000000ll)) 16179: altDoSolve(29, 0x20000000ll, puzzle | 0x60070000000ll, 16180: partsUsed | 0x400l); 16181: } 16182: if(!(puzzle & 0xd90000000ll)) 16183: altDoSolve(29, 0x20000000ll, puzzle | 0xd90000000ll, 16184: partsUsed | 0x400l); 16185: altpiece11at28: 16186: if (partsUsed & 0x800l) goto altpiece13at28; 16187: if (!(puzzle & 0x10030000000ll)) { 16188: if(!(puzzle & 0x101b0000000ll)) 16189: altDoSolve(29, 0x20000000ll, puzzle | 0x101b0000000ll, 16190: partsUsed | 0x800l); 16191: if(!(puzzle & 0xb0030000000ll)) 16192: altDoSolve(29, 0x20000000ll, puzzle | 0xb0030000000ll, 16193: partsUsed | 0x800l); 16194: if(!(puzzle & 0x300b0000000ll)) 16195: altDoSolve(29, 0x20000000ll, puzzle | 0x300b0000000ll, 16196: partsUsed | 0x800l); 16197: if(!(puzzle & 0x30130000000ll)) 16198: altDoSolve(29, 0x20000000ll, puzzle | 0x30130000000ll, 16199: partsUsed | 0x800l); 16200: if(!(puzzle & 0x130030000000ll)) 16201: altDoSolve(29, 0x20000000ll, puzzle | 0x130030000000ll, 16202: partsUsed | 0x800l); 16203: if(!(puzzle & 0x900b0000000ll)) 16204: altDoSolve(29, 0x20000000ll, puzzle | 0x900b0000000ll, 16205: partsUsed | 0x800l); 16206: } 16207: if (!(puzzle & 0x100110000000ll)) { 16208: if(!(puzzle & 0x180190000000ll)) 16209: altDoSolve(29, 0x20000000ll, puzzle | 0x180190000000ll, 16210: partsUsed | 0x800l); 16211: if(!(puzzle & 0x120130000000ll)) 16212: altDoSolve(29, 0x20000000ll, puzzle | 0x120130000000ll, 16213: partsUsed | 0x800l); 16214: if(!(puzzle & 0x1001b0000000ll)) 16215: altDoSolve(29, 0x20000000ll, puzzle | 0x1001b0000000ll, 16216: partsUsed | 0x800l); 16217: } 16218: if (!(puzzle & 0x80090000000ll)) { 16219: if(!(puzzle & 0xb0090000000ll)) 16220: altDoSolve(29, 0x20000000ll, puzzle | 0xb0090000000ll, 16221: partsUsed | 0x800l); 16222: if(!(puzzle & 0x90190000000ll)) 16223: altDoSolve(29, 0x20000000ll, puzzle | 0x90190000000ll, 16224: partsUsed | 0x800l); 16225: if(!(puzzle & 0x801b0000000ll)) 16226: altDoSolve(29, 0x20000000ll, puzzle | 0x801b0000000ll, 16227: partsUsed | 0x800l); 16228: if(!(puzzle & 0x190090000000ll)) 16229: altDoSolve(29, 0x20000000ll, puzzle | 0x190090000000ll, 16230: partsUsed | 0x800l); 16231: } 16232: if(!(puzzle & 0x201b0000000ll)) 16233: altDoSolve(29, 0x20000000ll, puzzle | 0x201b0000000ll, 16234: partsUsed | 0x800l); 16235: if(!(puzzle & 0x1b0010000000ll)) 16236: altDoSolve(29, 0x20000000ll, puzzle | 0x1b0010000000ll, 16237: partsUsed | 0x800l); 16238: altpiece13at28: 16239: break; 16240: case 29: 16241: if (partsUsed & 0x2l) goto altpiece2at29; 16242: if(!(puzzle & 0x5e0000000ll)) 16243: altDoSolve(30, 0x40000000ll, puzzle | 0x5e0000000ll, 16244: partsUsed | 0x2l); 16245: if(!(puzzle & 0x10030060000000ll)) 16246: altDoSolve(30, 0x40000000ll, puzzle | 0x10030060000000ll, 16247: partsUsed | 0x2l); 16248: if(!(puzzle & 0x900120020000000ll)) 16249: altDoSolve(30, 0x40000000ll, puzzle | 0x900120020000000ll, 16250: partsUsed | 0x2l); 16251: if(!(puzzle & 0x800900120000000ll)) 16252: altDoSolve(30, 0x40000000ll, puzzle | 0x800900120000000ll, 16253: partsUsed | 0x2l); 16254: altpiece2at29: 16255: if (partsUsed & 0x4l) goto altpiece3at29; 16256: if(!(puzzle & 0x1d20000000ll)) 16257: altDoSolve(30, 0x40000000ll, puzzle | 0x1d20000000ll, 16258: partsUsed | 0x4l); 16259: if(!(puzzle & 0x100100920000000ll)) 16260: altDoSolve(30, 0x40000000ll, puzzle | 0x100100920000000ll, 16261: partsUsed | 0x4l); 16262: if(!(puzzle & 0x70020020000000ll)) 16263: altDoSolve(30, 0x40000000ll, puzzle | 0x70020020000000ll, 16264: partsUsed | 0x4l); 16265: if(!(puzzle & 0x20920020000000ll)) 16266: altDoSolve(30, 0x40000000ll, puzzle | 0x20920020000000ll, 16267: partsUsed | 0x4l); 16268: altpiece3at29: 16269: if (partsUsed & 0x8l) goto altpiece4at29; 16270: if(!(puzzle & 0xd60000000ll)) 16271: altDoSolve(30, 0x40000000ll, puzzle | 0xd60000000ll, 16272: partsUsed | 0x8l); 16273: if(!(puzzle & 0x30020060000000ll)) 16274: altDoSolve(30, 0x40000000ll, puzzle | 0x30020060000000ll, 16275: partsUsed | 0x8l); 16276: if(!(puzzle & 0x800920020000000ll)) 16277: altDoSolve(30, 0x40000000ll, puzzle | 0x800920020000000ll, 16278: partsUsed | 0x8l); 16279: if(!(puzzle & 0x900100120000000ll)) 16280: altDoSolve(30, 0x40000000ll, puzzle | 0x900100120000000ll, 16281: partsUsed | 0x8l); 16282: altpiece4at29: 16283: if (partsUsed & 0x10l) goto altpiece5at29; 16284: if (!(puzzle & 0x4920000000ll)) { 16285: if(!(puzzle & 0x69a0000000ll)) 16286: altDoSolve(30, 0x40000000ll, puzzle | 0x69a0000000ll, 16287: partsUsed | 0x10l); 16288: if(!(puzzle & 0x824920000000ll)) 16289: altDoSolve(30, 0x40000000ll, puzzle | 0x824920000000ll, 16290: partsUsed | 0x10l); 16291: if(!(puzzle & 0xcb20000000ll)) 16292: altDoSolve(30, 0x40000000ll, puzzle | 0xcb20000000ll, 16293: partsUsed | 0x10l); 16294: if(!(puzzle & 0x4104920000000ll)) 16295: altDoSolve(30, 0x40000000ll, puzzle | 0x4104920000000ll, 16296: partsUsed | 0x10l); 16297: if(!(puzzle & 0x5960000000ll)) 16298: altDoSolve(30, 0x40000000ll, puzzle | 0x5960000000ll, 16299: partsUsed | 0x10l); 16300: } 16301: if(!(puzzle & 0x9a60000000ll)) 16302: altDoSolve(30, 0x40000000ll, puzzle | 0x9a60000000ll, 16303: partsUsed | 0x10l); 16304: if(!(puzzle & 0x4920820000000ll)) 16305: altDoSolve(30, 0x40000000ll, puzzle | 0x4920820000000ll, 16306: partsUsed | 0x10l); 16307: altpiece5at29: 16308: if (partsUsed & 0x20l) goto altpiece6at29; 16309: if (!(puzzle & 0x4920000000ll)) { 16310: if(!(puzzle & 0x6920000000ll)) 16311: altDoSolve(30, 0x40000000ll, puzzle | 0x6920000000ll, 16312: partsUsed | 0x20l); 16313: if(!(puzzle & 0x4004920000000ll)) 16314: altDoSolve(30, 0x40000000ll, puzzle | 0x4004920000000ll, 16315: partsUsed | 0x20l); 16316: if(!(puzzle & 0x4960000000ll)) 16317: altDoSolve(30, 0x40000000ll, puzzle | 0x4960000000ll, 16318: partsUsed | 0x20l); 16319: if(!(puzzle & 0x24920000000ll)) 16320: altDoSolve(30, 0x40000000ll, puzzle | 0x24920000000ll, 16321: partsUsed | 0x20l); 16322: if(!(puzzle & 0xc920000000ll)) 16323: altDoSolve(30, 0x40000000ll, puzzle | 0xc920000000ll, 16324: partsUsed | 0x20l); 16325: } 16326: if(!(puzzle & 0x4920020000000ll)) 16327: altDoSolve(30, 0x40000000ll, puzzle | 0x4920020000000ll, 16328: partsUsed | 0x20l); 16329: if(!(puzzle & 0x9260000000ll)) 16330: altDoSolve(30, 0x40000000ll, puzzle | 0x9260000000ll, 16331: partsUsed | 0x20l); 16332: altpiece6at29: 16333: if (partsUsed & 0x40l) goto altpiece7at29; 16334: if (!(puzzle & 0x4920000000ll)) { 16335: if(!(puzzle & 0x49a0000000ll)) 16336: altDoSolve(30, 0x40000000ll, puzzle | 0x49a0000000ll, 16337: partsUsed | 0x40l); 16338: if(!(puzzle & 0x4d20000000ll)) 16339: altDoSolve(30, 0x40000000ll, puzzle | 0x4d20000000ll, 16340: partsUsed | 0x40l); 16341: if(!(puzzle & 0x804920000000ll)) 16342: altDoSolve(30, 0x40000000ll, puzzle | 0x804920000000ll, 16343: partsUsed | 0x40l); 16344: if(!(puzzle & 0x4b20000000ll)) 16345: altDoSolve(30, 0x40000000ll, puzzle | 0x4b20000000ll, 16346: partsUsed | 0x40l); 16347: if(!(puzzle & 0x104920000000ll)) 16348: altDoSolve(30, 0x40000000ll, puzzle | 0x104920000000ll, 16349: partsUsed | 0x40l); 16350: if(!(puzzle & 0x5920000000ll)) 16351: altDoSolve(30, 0x40000000ll, puzzle | 0x5920000000ll, 16352: partsUsed | 0x40l); 16353: } 16354: altpiece7at29: 16355: if (partsUsed & 0x80l) goto altpiece8at29; 16356: if(!(puzzle & 0x120020120000000ll)) 16357: altDoSolve(30, 0x40000000ll, puzzle | 0x120020120000000ll, 16358: partsUsed | 0x80l); 16359: if(!(puzzle & 0x120100120000000ll)) 16360: altDoSolve(30, 0x40000000ll, puzzle | 0x120100120000000ll, 16361: partsUsed | 0x80l); 16362: if(!(puzzle & 0x920820000000ll)) 16363: altDoSolve(30, 0x40000000ll, puzzle | 0x920820000000ll, 16364: partsUsed | 0x80l); 16365: if(!(puzzle & 0x820920000000ll)) 16366: altDoSolve(30, 0x40000000ll, puzzle | 0x820920000000ll, 16367: partsUsed | 0x80l); 16368: if(!(puzzle & 0x1960000000ll)) 16369: altDoSolve(30, 0x40000000ll, puzzle | 0x1960000000ll, 16370: partsUsed | 0x80l); 16371: if(!(puzzle & 0x1a60000000ll)) 16372: altDoSolve(30, 0x40000000ll, puzzle | 0x1a60000000ll, 16373: partsUsed | 0x80l); 16374: if(!(puzzle & 0x60040060000000ll)) 16375: altDoSolve(30, 0x40000000ll, puzzle | 0x60040060000000ll, 16376: partsUsed | 0x80l); 16377: if(!(puzzle & 0x60020060000000ll)) 16378: altDoSolve(30, 0x40000000ll, puzzle | 0x60020060000000ll, 16379: partsUsed | 0x80l); 16380: altpiece8at29: 16381: if (partsUsed & 0x100l) goto altpiece9at29; 16382: if(!(puzzle & 0x801a0000000ll)) 16383: altDoSolve(30, 0x40000000ll, puzzle | 0x801a0000000ll, 16384: partsUsed | 0x100l); 16385: if(!(puzzle & 0x30120000000ll)) 16386: altDoSolve(30, 0x40000000ll, puzzle | 0x30120000000ll, 16387: partsUsed | 0x100l); 16388: if(!(puzzle & 0x20320000000ll)) 16389: altDoSolve(30, 0x40000000ll, puzzle | 0x20320000000ll, 16390: partsUsed | 0x100l); 16391: if(!(puzzle & 0x1a0020000000ll)) 16392: altDoSolve(30, 0x40000000ll, puzzle | 0x1a0020000000ll, 16393: partsUsed | 0x100l); 16394: if(!(puzzle & 0x120060000000ll)) 16395: altDoSolve(30, 0x40000000ll, puzzle | 0x120060000000ll, 16396: partsUsed | 0x100l); 16397: if(!(puzzle & 0x260020000000ll)) 16398: altDoSolve(30, 0x40000000ll, puzzle | 0x260020000000ll, 16399: partsUsed | 0x100l); 16400: if(!(puzzle & 0x40160000000ll)) 16401: altDoSolve(30, 0x40000000ll, puzzle | 0x40160000000ll, 16402: partsUsed | 0x100l); 16403: if(!(puzzle & 0x300120000000ll)) 16404: altDoSolve(30, 0x40000000ll, puzzle | 0x300120000000ll, 16405: partsUsed | 0x100l); 16406: if(!(puzzle & 0x200260000000ll)) 16407: altDoSolve(30, 0x40000000ll, puzzle | 0x200260000000ll, 16408: partsUsed | 0x100l); 16409: altpiece9at29: 16410: if (partsUsed & 0x200l) goto altpiece10at29; 16411: if (!(puzzle & 0x1a0000000ll)) { 16412: if(!(puzzle & 0x13a0000000ll)) 16413: altDoSolve(30, 0x40000000ll, puzzle | 0x13a0000000ll, 16414: partsUsed | 0x200l); 16415: if(!(puzzle & 0x7a0000000ll)) 16416: altDoSolve(30, 0x40000000ll, puzzle | 0x7a0000000ll, 16417: partsUsed | 0x200l); 16418: if(!(puzzle & 0x9e0000000ll)) 16419: altDoSolve(30, 0x40000000ll, puzzle | 0x9e0000000ll, 16420: partsUsed | 0x200l); 16421: if(!(puzzle & 0x19a0000000ll)) 16422: altDoSolve(30, 0x40000000ll, puzzle | 0x19a0000000ll, 16423: partsUsed | 0x200l); 16424: } 16425: if (!(puzzle & 0x20020020000000ll)) { 16426: if(!(puzzle & 0x20030060000000ll)) 16427: altDoSolve(30, 0x40000000ll, puzzle | 0x20030060000000ll, 16428: partsUsed | 0x200l); 16429: if(!(puzzle & 0x60030020000000ll)) 16430: altDoSolve(30, 0x40000000ll, puzzle | 0x60030020000000ll, 16431: partsUsed | 0x200l); 16432: if(!(puzzle & 0x30060020000000ll)) 16433: altDoSolve(30, 0x40000000ll, puzzle | 0x30060020000000ll, 16434: partsUsed | 0x200l); 16435: } 16436: if(!(puzzle & 0xf20000000ll)) 16437: altDoSolve(30, 0x40000000ll, puzzle | 0xf20000000ll, 16438: partsUsed | 0x200l); 16439: if(!(puzzle & 0x10070020000000ll)) 16440: altDoSolve(30, 0x40000000ll, puzzle | 0x10070020000000ll, 16441: partsUsed | 0x200l); 16442: if(!(puzzle & 0x40070020000000ll)) 16443: altDoSolve(30, 0x40000000ll, puzzle | 0x40070020000000ll, 16444: partsUsed | 0x200l); 16445: if(!(puzzle & 0x100920020000000ll)) 16446: altDoSolve(30, 0x40000000ll, puzzle | 0x100920020000000ll, 16447: partsUsed | 0x200l); 16448: if(!(puzzle & 0x100900120000000ll)) 16449: altDoSolve(30, 0x40000000ll, puzzle | 0x100900120000000ll, 16450: partsUsed | 0x200l); 16451: altpiece10at29: 16452: if (partsUsed & 0x400l) goto altpiece11at29; 16453: if (!(puzzle & 0x100120000000ll)) { 16454: if(!(puzzle & 0x20120120000000ll)) 16455: altDoSolve(30, 0x40000000ll, puzzle | 0x20120120000000ll, 16456: partsUsed | 0x400l); 16457: if(!(puzzle & 0x920120000000ll)) 16458: altDoSolve(30, 0x40000000ll, puzzle | 0x920120000000ll, 16459: partsUsed | 0x400l); 16460: if(!(puzzle & 0x900920000000ll)) 16461: altDoSolve(30, 0x40000000ll, puzzle | 0x900920000000ll, 16462: partsUsed | 0x400l); 16463: if(!(puzzle & 0x120920000000ll)) 16464: altDoSolve(30, 0x40000000ll, puzzle | 0x120920000000ll, 16465: partsUsed | 0x400l); 16466: if(!(puzzle & 0x100120120000000ll)) 16467: altDoSolve(30, 0x40000000ll, puzzle | 0x100120120000000ll, 16468: partsUsed | 0x400l); 16469: } 16470: if (!(puzzle & 0x20020020000000ll)) { 16471: if(!(puzzle & 0x120120020000000ll)) 16472: altDoSolve(30, 0x40000000ll, puzzle | 0x120120020000000ll, 16473: partsUsed | 0x400l); 16474: if(!(puzzle & 0x20060060000000ll)) 16475: altDoSolve(30, 0x40000000ll, puzzle | 0x20060060000000ll, 16476: partsUsed | 0x400l); 16477: if(!(puzzle & 0x60060020000000ll)) 16478: altDoSolve(30, 0x40000000ll, puzzle | 0x60060020000000ll, 16479: partsUsed | 0x400l); 16480: } 16481: if (!(puzzle & 0x320000000ll)) { 16482: if(!(puzzle & 0xb60000000ll)) 16483: altDoSolve(30, 0x40000000ll, puzzle | 0xb60000000ll, 16484: partsUsed | 0x400l); 16485: if(!(puzzle & 0x1360000000ll)) 16486: altDoSolve(30, 0x40000000ll, puzzle | 0x1360000000ll, 16487: partsUsed | 0x400l); 16488: if(!(puzzle & 0x1b20000000ll)) 16489: altDoSolve(30, 0x40000000ll, puzzle | 0x1b20000000ll, 16490: partsUsed | 0x400l); 16491: } 16492: if(!(puzzle & 0x3e0000000ll)) 16493: altDoSolve(30, 0x40000000ll, puzzle | 0x3e0000000ll, 16494: partsUsed | 0x400l); 16495: if(!(puzzle & 0xda0000000ll)) 16496: altDoSolve(30, 0x40000000ll, puzzle | 0xda0000000ll, 16497: partsUsed | 0x400l); 16498: if(!(puzzle & 0x70060000000ll)) 16499: altDoSolve(30, 0x40000000ll, puzzle | 0x70060000000ll, 16500: partsUsed | 0x400l); 16501: if(!(puzzle & 0x30030020000000ll)) 16502: altDoSolve(30, 0x40000000ll, puzzle | 0x30030020000000ll, 16503: partsUsed | 0x400l); 16504: if(!(puzzle & 0x40060060000000ll)) 16505: altDoSolve(30, 0x40000000ll, puzzle | 0x40060060000000ll, 16506: partsUsed | 0x400l); 16507: altpiece11at29: 16508: if (partsUsed & 0x800l) goto altpiece13at29; 16509: if (!(puzzle & 0x20060000000ll)) { 16510: if(!(puzzle & 0x20360000000ll)) 16511: altDoSolve(30, 0x40000000ll, puzzle | 0x20360000000ll, 16512: partsUsed | 0x800l); 16513: if(!(puzzle & 0x160060000000ll)) 16514: altDoSolve(30, 0x40000000ll, puzzle | 0x160060000000ll, 16515: partsUsed | 0x800l); 16516: if(!(puzzle & 0x60160000000ll)) 16517: altDoSolve(30, 0x40000000ll, puzzle | 0x60160000000ll, 16518: partsUsed | 0x800l); 16519: if(!(puzzle & 0x60260000000ll)) 16520: altDoSolve(30, 0x40000000ll, puzzle | 0x60260000000ll, 16521: partsUsed | 0x800l); 16522: if(!(puzzle & 0x260060000000ll)) 16523: altDoSolve(30, 0x40000000ll, puzzle | 0x260060000000ll, 16524: partsUsed | 0x800l); 16525: if(!(puzzle & 0x120160000000ll)) 16526: altDoSolve(30, 0x40000000ll, puzzle | 0x120160000000ll, 16527: partsUsed | 0x800l); 16528: } 16529: if (!(puzzle & 0x200220000000ll)) { 16530: if(!(puzzle & 0x300320000000ll)) 16531: altDoSolve(30, 0x40000000ll, puzzle | 0x300320000000ll, 16532: partsUsed | 0x800l); 16533: if(!(puzzle & 0x240260000000ll)) 16534: altDoSolve(30, 0x40000000ll, puzzle | 0x240260000000ll, 16535: partsUsed | 0x800l); 16536: if(!(puzzle & 0x200360000000ll)) 16537: altDoSolve(30, 0x40000000ll, puzzle | 0x200360000000ll, 16538: partsUsed | 0x800l); 16539: } 16540: if (!(puzzle & 0x100120000000ll)) { 16541: if(!(puzzle & 0x160120000000ll)) 16542: altDoSolve(30, 0x40000000ll, puzzle | 0x160120000000ll, 16543: partsUsed | 0x800l); 16544: if(!(puzzle & 0x120320000000ll)) 16545: altDoSolve(30, 0x40000000ll, puzzle | 0x120320000000ll, 16546: partsUsed | 0x800l); 16547: if(!(puzzle & 0x100360000000ll)) 16548: altDoSolve(30, 0x40000000ll, puzzle | 0x100360000000ll, 16549: partsUsed | 0x800l); 16550: if(!(puzzle & 0x320120000000ll)) 16551: altDoSolve(30, 0x40000000ll, puzzle | 0x320120000000ll, 16552: partsUsed | 0x800l); 16553: if(!(puzzle & 0x1a0120000000ll)) 16554: altDoSolve(30, 0x40000000ll, puzzle | 0x1a0120000000ll, 16555: partsUsed | 0x800l); 16556: if(!(puzzle & 0x1801a0000000ll)) 16557: altDoSolve(30, 0x40000000ll, puzzle | 0x1801a0000000ll, 16558: partsUsed | 0x800l); 16559: if(!(puzzle & 0x130120000000ll)) 16560: altDoSolve(30, 0x40000000ll, puzzle | 0x130120000000ll, 16561: partsUsed | 0x800l); 16562: if(!(puzzle & 0x1201a0000000ll)) 16563: altDoSolve(30, 0x40000000ll, puzzle | 0x1201a0000000ll, 16564: partsUsed | 0x800l); 16565: } 16566: if(!(puzzle & 0x40360000000ll)) 16567: altDoSolve(30, 0x40000000ll, puzzle | 0x40360000000ll, 16568: partsUsed | 0x800l); 16569: if(!(puzzle & 0x360020000000ll)) 16570: altDoSolve(30, 0x40000000ll, puzzle | 0x360020000000ll, 16571: partsUsed | 0x800l); 16572: if(!(puzzle & 0x1b0020000000ll)) 16573: altDoSolve(30, 0x40000000ll, puzzle | 0x1b0020000000ll, 16574: partsUsed | 0x800l); 16575: altpiece13at29: 16576: break; 16577: case 30: 16578: if (partsUsed & 0x2l) goto altpiece2at30; 16579: if(!(puzzle & 0xf40000000ll)) 16580: altDoSolve(31, 0x80000000ll, puzzle | 0xf40000000ll, 16581: partsUsed | 0x2l); 16582: if(!(puzzle & 0x30060040000000ll)) 16583: altDoSolve(31, 0x80000000ll, puzzle | 0x30060040000000ll, 16584: partsUsed | 0x2l); 16585: if(!(puzzle & 0x1200240040000000ll)) 16586: altDoSolve(31, 0x80000000ll, puzzle | 0x1200240040000000ll, 16587: partsUsed | 0x2l); 16588: if(!(puzzle & 0x1001200240000000ll)) 16589: altDoSolve(31, 0x80000000ll, puzzle | 0x1001200240000000ll, 16590: partsUsed | 0x2l); 16591: altpiece2at30: 16592: if (partsUsed & 0x4l) goto altpiece3at30; 16593: if(!(puzzle & 0x13c0000000ll)) 16594: altDoSolve(31, 0x80000000ll, puzzle | 0x13c0000000ll, 16595: partsUsed | 0x4l); 16596: if(!(puzzle & 0x200201240000000ll)) 16597: altDoSolve(31, 0x80000000ll, puzzle | 0x200201240000000ll, 16598: partsUsed | 0x4l); 16599: if(!(puzzle & 0x40070040000000ll)) 16600: altDoSolve(31, 0x80000000ll, puzzle | 0x40070040000000ll, 16601: partsUsed | 0x4l); 16602: if(!(puzzle & 0x41240040000000ll)) 16603: altDoSolve(31, 0x80000000ll, puzzle | 0x41240040000000ll, 16604: partsUsed | 0x4l); 16605: altpiece3at30: 16606: if (partsUsed & 0x8l) goto altpiece4at30; 16607: if(!(puzzle & 0x7c0000000ll)) 16608: altDoSolve(31, 0x80000000ll, puzzle | 0x7c0000000ll, 16609: partsUsed | 0x8l); 16610: if(!(puzzle & 0x10070040000000ll)) 16611: altDoSolve(31, 0x80000000ll, puzzle | 0x10070040000000ll, 16612: partsUsed | 0x8l); 16613: if(!(puzzle & 0x1001240040000000ll)) 16614: altDoSolve(31, 0x80000000ll, puzzle | 0x1001240040000000ll, 16615: partsUsed | 0x8l); 16616: if(!(puzzle & 0x1200200240000000ll)) 16617: altDoSolve(31, 0x80000000ll, puzzle | 0x1200200240000000ll, 16618: partsUsed | 0x8l); 16619: altpiece4at30: 16620: if (partsUsed & 0x10l) goto altpiece5at30; 16621: if (!(puzzle & 0x9240000000ll)) { 16622: if(!(puzzle & 0xd340000000ll)) 16623: altDoSolve(31, 0x80000000ll, puzzle | 0xd340000000ll, 16624: partsUsed | 0x10l); 16625: if(!(puzzle & 0x1049240000000ll)) 16626: altDoSolve(31, 0x80000000ll, puzzle | 0x1049240000000ll, 16627: partsUsed | 0x10l); 16628: if(!(puzzle & 0x8209240000000ll)) 16629: altDoSolve(31, 0x80000000ll, puzzle | 0x8209240000000ll, 16630: partsUsed | 0x10l); 16631: } 16632: if(!(puzzle & 0x9241040000000ll)) 16633: altDoSolve(31, 0x80000000ll, puzzle | 0x9241040000000ll, 16634: partsUsed | 0x10l); 16635: altpiece5at30: 16636: if (partsUsed & 0x20l) goto altpiece6at30; 16637: if (!(puzzle & 0x9240000000ll)) { 16638: if(!(puzzle & 0xd240000000ll)) 16639: altDoSolve(31, 0x80000000ll, puzzle | 0xd240000000ll, 16640: partsUsed | 0x20l); 16641: if(!(puzzle & 0x8009240000000ll)) 16642: altDoSolve(31, 0x80000000ll, puzzle | 0x8009240000000ll, 16643: partsUsed | 0x20l); 16644: if(!(puzzle & 0x49240000000ll)) 16645: altDoSolve(31, 0x80000000ll, puzzle | 0x49240000000ll, 16646: partsUsed | 0x20l); 16647: } 16648: if(!(puzzle & 0x9240040000000ll)) 16649: altDoSolve(31, 0x80000000ll, puzzle | 0x9240040000000ll, 16650: partsUsed | 0x20l); 16651: altpiece6at30: 16652: if (partsUsed & 0x40l) goto altpiece7at30; 16653: if (!(puzzle & 0x9240000000ll)) { 16654: if(!(puzzle & 0x9340000000ll)) 16655: altDoSolve(31, 0x80000000ll, puzzle | 0x9340000000ll, 16656: partsUsed | 0x40l); 16657: if(!(puzzle & 0x9a40000000ll)) 16658: altDoSolve(31, 0x80000000ll, puzzle | 0x9a40000000ll, 16659: partsUsed | 0x40l); 16660: if(!(puzzle & 0x1009240000000ll)) 16661: altDoSolve(31, 0x80000000ll, puzzle | 0x1009240000000ll, 16662: partsUsed | 0x40l); 16663: if(!(puzzle & 0x209240000000ll)) 16664: altDoSolve(31, 0x80000000ll, puzzle | 0x209240000000ll, 16665: partsUsed | 0x40l); 16666: } 16667: altpiece7at30: 16668: if (partsUsed & 0x80l) goto altpiece8at30; 16669: if(!(puzzle & 0x240040240000000ll)) 16670: altDoSolve(31, 0x80000000ll, puzzle | 0x240040240000000ll, 16671: partsUsed | 0x80l); 16672: if(!(puzzle & 0x240200240000000ll)) 16673: altDoSolve(31, 0x80000000ll, puzzle | 0x240200240000000ll, 16674: partsUsed | 0x80l); 16675: if(!(puzzle & 0x1241040000000ll)) 16676: altDoSolve(31, 0x80000000ll, puzzle | 0x1241040000000ll, 16677: partsUsed | 0x80l); 16678: if(!(puzzle & 0x1041240000000ll)) 16679: altDoSolve(31, 0x80000000ll, puzzle | 0x1041240000000ll, 16680: partsUsed | 0x80l); 16681: altpiece8at30: 16682: if (partsUsed & 0x100l) goto altpiece9at30; 16683: if(!(puzzle & 0x340040000000ll)) 16684: altDoSolve(31, 0x80000000ll, puzzle | 0x340040000000ll, 16685: partsUsed | 0x100l); 16686: if(!(puzzle & 0x100340000000ll)) 16687: altDoSolve(31, 0x80000000ll, puzzle | 0x100340000000ll, 16688: partsUsed | 0x100l); 16689: if(!(puzzle & 0x60240000000ll)) 16690: altDoSolve(31, 0x80000000ll, puzzle | 0x60240000000ll, 16691: partsUsed | 0x100l); 16692: altpiece9at30: 16693: if (partsUsed & 0x200l) goto altpiece10at30; 16694: if(!(puzzle & 0xbc0000000ll)) 16695: altDoSolve(31, 0x80000000ll, puzzle | 0xbc0000000ll, 16696: partsUsed | 0x200l); 16697: if(!(puzzle & 0x20070040000000ll)) 16698: altDoSolve(31, 0x80000000ll, puzzle | 0x20070040000000ll, 16699: partsUsed | 0x200l); 16700: if(!(puzzle & 0x201240040000000ll)) 16701: altDoSolve(31, 0x80000000ll, puzzle | 0x201240040000000ll, 16702: partsUsed | 0x200l); 16703: if(!(puzzle & 0x201200240000000ll)) 16704: altDoSolve(31, 0x80000000ll, puzzle | 0x201200240000000ll, 16705: partsUsed | 0x200l); 16706: altpiece10at30: 16707: if (partsUsed & 0x400l) goto altpiece11at30; 16708: if (!(puzzle & 0x1240000000ll)) { 16709: if(!(puzzle & 0x1b40000000ll)) 16710: altDoSolve(31, 0x80000000ll, puzzle | 0x1b40000000ll, 16711: partsUsed | 0x400l); 16712: if(!(puzzle & 0x1201240000000ll)) 16713: altDoSolve(31, 0x80000000ll, puzzle | 0x1201240000000ll, 16714: partsUsed | 0x400l); 16715: if(!(puzzle & 0x241240000000ll)) 16716: altDoSolve(31, 0x80000000ll, puzzle | 0x241240000000ll, 16717: partsUsed | 0x400l); 16718: } 16719: if (!(puzzle & 0x40040040000000ll)) { 16720: if(!(puzzle & 0x60060040000000ll)) 16721: altDoSolve(31, 0x80000000ll, puzzle | 0x60060040000000ll, 16722: partsUsed | 0x400l); 16723: if(!(puzzle & 0x40240240000000ll)) 16724: altDoSolve(31, 0x80000000ll, puzzle | 0x40240240000000ll, 16725: partsUsed | 0x400l); 16726: if(!(puzzle & 0x240240040000000ll)) 16727: altDoSolve(31, 0x80000000ll, puzzle | 0x240240040000000ll, 16728: partsUsed | 0x400l); 16729: } 16730: if(!(puzzle & 0x1240240000000ll)) 16731: altDoSolve(31, 0x80000000ll, puzzle | 0x1240240000000ll, 16732: partsUsed | 0x400l); 16733: if(!(puzzle & 0x200240240000000ll)) 16734: altDoSolve(31, 0x80000000ll, puzzle | 0x200240240000000ll, 16735: partsUsed | 0x400l); 16736: altpiece11at30: 16737: if (partsUsed & 0x800l) goto altpiece13at30; 16738: if (!(puzzle & 0x300040000000ll)) { 16739: if(!(puzzle & 0x360040000000ll)) 16740: altDoSolve(31, 0x80000000ll, puzzle | 0x360040000000ll, 16741: partsUsed | 0x800l); 16742: if(!(puzzle & 0x340240000000ll)) 16743: altDoSolve(31, 0x80000000ll, puzzle | 0x340240000000ll, 16744: partsUsed | 0x800l); 16745: if(!(puzzle & 0x300340000000ll)) 16746: altDoSolve(31, 0x80000000ll, puzzle | 0x300340000000ll, 16747: partsUsed | 0x800l); 16748: } 16749: if(!(puzzle & 0x260240000000ll)) 16750: altDoSolve(31, 0x80000000ll, puzzle | 0x260240000000ll, 16751: partsUsed | 0x800l); 16752: if(!(puzzle & 0x240340000000ll)) 16753: altDoSolve(31, 0x80000000ll, puzzle | 0x240340000000ll, 16754: partsUsed | 0x800l); 16755: altpiece13at30: 16756: break; 16757: case 31: 16758: if (partsUsed & 0x2l) goto altpiece2at31; 16759: if(!(puzzle & 0x10090480000000ll)) 16760: altDoSolve(32, 0x100000000ll, puzzle | 0x10090480000000ll, 16761: partsUsed | 0x2l); 16762: if(!(puzzle & 0x2400480080000000ll)) 16763: altDoSolve(32, 0x100000000ll, puzzle | 0x2400480080000000ll, 16764: partsUsed | 0x2l); 16765: if(!(puzzle & 0x2002400480000000ll)) 16766: altDoSolve(32, 0x100000000ll, puzzle | 0x2002400480000000ll, 16767: partsUsed | 0x2l); 16768: if(!(puzzle & 0x9980000000ll)) 16769: altDoSolve(32, 0x100000000ll, puzzle | 0x9980000000ll, 16770: partsUsed | 0x2l); 16771: if(!(puzzle & 0xcc80000000ll)) 16772: altDoSolve(32, 0x100000000ll, puzzle | 0xcc80000000ll, 16773: partsUsed | 0x2l); 16774: if(!(puzzle & 0x200300180000000ll)) 16775: altDoSolve(32, 0x100000000ll, puzzle | 0x200300180000000ll, 16776: partsUsed | 0x2l); 16777: if(!(puzzle & 0x300180080000000ll)) 16778: altDoSolve(32, 0x100000000ll, puzzle | 0x300180080000000ll, 16779: partsUsed | 0x2l); 16780: altpiece2at31: 16781: if (partsUsed & 0x4l) goto altpiece3at31; 16782: if (!(puzzle & 0x80080080000000ll)) { 16783: if(!(puzzle & 0x490080080000000ll)) 16784: altDoSolve(32, 0x100000000ll, puzzle | 0x490080080000000ll, 16785: partsUsed | 0x4l); 16786: if(!(puzzle & 0x82480080000000ll)) 16787: altDoSolve(32, 0x100000000ll, puzzle | 0x82480080000000ll, 16788: partsUsed | 0x4l); 16789: if(!(puzzle & 0x80380080000000ll)) 16790: altDoSolve(32, 0x100000000ll, puzzle | 0x80380080000000ll, 16791: partsUsed | 0x4l); 16792: } 16793: if(!(puzzle & 0x400402480000000ll)) 16794: altDoSolve(32, 0x100000000ll, puzzle | 0x400402480000000ll, 16795: partsUsed | 0x4l); 16796: if(!(puzzle & 0x3c80000000ll)) 16797: altDoSolve(32, 0x100000000ll, puzzle | 0x3c80000000ll, 16798: partsUsed | 0x4l); 16799: if(!(puzzle & 0x4b80000000ll)) 16800: altDoSolve(32, 0x100000000ll, puzzle | 0x4b80000000ll, 16801: partsUsed | 0x4l); 16802: if(!(puzzle & 0x100100380000000ll)) 16803: altDoSolve(32, 0x100000000ll, puzzle | 0x100100380000000ll, 16804: partsUsed | 0x4l); 16805: altpiece3at31: 16806: if (partsUsed & 0x8l) goto altpiece4at31; 16807: if(!(puzzle & 0x90080480000000ll)) 16808: altDoSolve(32, 0x100000000ll, puzzle | 0x90080480000000ll, 16809: partsUsed | 0x8l); 16810: if(!(puzzle & 0x2002480080000000ll)) 16811: altDoSolve(32, 0x100000000ll, puzzle | 0x2002480080000000ll, 16812: partsUsed | 0x8l); 16813: if(!(puzzle & 0x2400400480000000ll)) 16814: altDoSolve(32, 0x100000000ll, puzzle | 0x2400400480000000ll, 16815: partsUsed | 0x8l); 16816: if(!(puzzle & 0xc980000000ll)) 16817: altDoSolve(32, 0x100000000ll, puzzle | 0xc980000000ll, 16818: partsUsed | 0x8l); 16819: if(!(puzzle & 0x9c80000000ll)) 16820: altDoSolve(32, 0x100000000ll, puzzle | 0x9c80000000ll, 16821: partsUsed | 0x8l); 16822: if(!(puzzle & 0x200380080000000ll)) 16823: altDoSolve(32, 0x100000000ll, puzzle | 0x200380080000000ll, 16824: partsUsed | 0x8l); 16825: if(!(puzzle & 0x300100180000000ll)) 16826: altDoSolve(32, 0x100000000ll, puzzle | 0x300100180000000ll, 16827: partsUsed | 0x8l); 16828: altpiece4at31: 16829: if (partsUsed & 0x10l) goto altpiece5at31; 16830: if(!(puzzle & 0x2492080000000ll)) 16831: altDoSolve(32, 0x100000000ll, puzzle | 0x2492080000000ll, 16832: partsUsed | 0x10l); 16833: altpiece5at31: 16834: if (partsUsed & 0x40l) goto altpiece7at31; 16835: if(!(puzzle & 0x2490080000000ll)) 16836: altDoSolve(32, 0x100000000ll, puzzle | 0x2490080000000ll, 16837: partsUsed | 0x40l); 16838: altpiece7at31: 16839: if (partsUsed & 0x80l) goto altpiece8at31; 16840: if(!(puzzle & 0x480080480000000ll)) 16841: altDoSolve(32, 0x100000000ll, puzzle | 0x480080480000000ll, 16842: partsUsed | 0x80l); 16843: if(!(puzzle & 0x480400480000000ll)) 16844: altDoSolve(32, 0x100000000ll, puzzle | 0x480400480000000ll, 16845: partsUsed | 0x80l); 16846: if(!(puzzle & 0x2482080000000ll)) 16847: altDoSolve(32, 0x100000000ll, puzzle | 0x2482080000000ll, 16848: partsUsed | 0x80l); 16849: if(!(puzzle & 0x2082480000000ll)) 16850: altDoSolve(32, 0x100000000ll, puzzle | 0x2082480000000ll, 16851: partsUsed | 0x80l); 16852: if(!(puzzle & 0x1780000000ll)) 16853: altDoSolve(32, 0x100000000ll, puzzle | 0x1780000000ll, 16854: partsUsed | 0x80l); 16855: if(!(puzzle & 0x6580000000ll)) 16856: altDoSolve(32, 0x100000000ll, puzzle | 0x6580000000ll, 16857: partsUsed | 0x80l); 16858: if(!(puzzle & 0x6980000000ll)) 16859: altDoSolve(32, 0x100000000ll, puzzle | 0x6980000000ll, 16860: partsUsed | 0x80l); 16861: if(!(puzzle & 0x1e80000000ll)) 16862: altDoSolve(32, 0x100000000ll, puzzle | 0x1e80000000ll, 16863: partsUsed | 0x80l); 16864: if(!(puzzle & 0x180100180000000ll)) 16865: altDoSolve(32, 0x100000000ll, puzzle | 0x180100180000000ll, 16866: partsUsed | 0x80l); 16867: if(!(puzzle & 0x180080180000000ll)) 16868: altDoSolve(32, 0x100000000ll, puzzle | 0x180080180000000ll, 16869: partsUsed | 0x80l); 16870: if(!(puzzle & 0x380280000000ll)) 16871: altDoSolve(32, 0x100000000ll, puzzle | 0x380280000000ll, 16872: partsUsed | 0x80l); 16873: if(!(puzzle & 0x280380000000ll)) 16874: altDoSolve(32, 0x100000000ll, puzzle | 0x280380000000ll, 16875: partsUsed | 0x80l); 16876: altpiece8at31: 16877: if (partsUsed & 0x100l) goto altpiece9at31; 16878: if(!(puzzle & 0x120180000000ll)) 16879: altDoSolve(32, 0x100000000ll, puzzle | 0x120180000000ll, 16880: partsUsed | 0x100l); 16881: if(!(puzzle & 0x100580000000ll)) 16882: altDoSolve(32, 0x100000000ll, puzzle | 0x100580000000ll, 16883: partsUsed | 0x100l); 16884: if(!(puzzle & 0xb0080000000ll)) 16885: altDoSolve(32, 0x100000000ll, puzzle | 0xb0080000000ll, 16886: partsUsed | 0x100l); 16887: if(!(puzzle & 0x980080000000ll)) 16888: altDoSolve(32, 0x100000000ll, puzzle | 0x980080000000ll, 16889: partsUsed | 0x100l); 16890: if(!(puzzle & 0x480180000000ll)) 16891: altDoSolve(32, 0x100000000ll, puzzle | 0x480180000000ll, 16892: partsUsed | 0x100l); 16893: if(!(puzzle & 0xc00480000000ll)) 16894: altDoSolve(32, 0x100000000ll, puzzle | 0xc00480000000ll, 16895: partsUsed | 0x100l); 16896: if(!(puzzle & 0x80c80000000ll)) 16897: altDoSolve(32, 0x100000000ll, puzzle | 0x80c80000000ll, 16898: partsUsed | 0x100l); 16899: if(!(puzzle & 0x800980000000ll)) 16900: altDoSolve(32, 0x100000000ll, puzzle | 0x800980000000ll, 16901: partsUsed | 0x100l); 16902: altpiece9at31: 16903: if (partsUsed & 0x200l) goto altpiece10at31; 16904: if (!(puzzle & 0x80080080000000ll)) { 16905: if(!(puzzle & 0x80090480000000ll)) 16906: altDoSolve(32, 0x100000000ll, puzzle | 0x80090480000000ll, 16907: partsUsed | 0x200l); 16908: if(!(puzzle & 0x90480080000000ll)) 16909: altDoSolve(32, 0x100000000ll, puzzle | 0x90480080000000ll, 16910: partsUsed | 0x200l); 16911: if(!(puzzle & 0x480090080000000ll)) 16912: altDoSolve(32, 0x100000000ll, puzzle | 0x480090080000000ll, 16913: partsUsed | 0x200l); 16914: } 16915: if (!(puzzle & 0x480080000000ll)) { 16916: if(!(puzzle & 0x400490080000000ll)) 16917: altDoSolve(32, 0x100000000ll, puzzle | 0x400490080000000ll, 16918: partsUsed | 0x200l); 16919: if(!(puzzle & 0x10490080000000ll)) 16920: altDoSolve(32, 0x100000000ll, puzzle | 0x10490080000000ll, 16921: partsUsed | 0x200l); 16922: if(!(puzzle & 0x402480080000000ll)) 16923: altDoSolve(32, 0x100000000ll, puzzle | 0x402480080000000ll, 16924: partsUsed | 0x200l); 16925: } 16926: if(!(puzzle & 0x5980000000ll)) 16927: altDoSolve(32, 0x100000000ll, puzzle | 0x5980000000ll, 16928: partsUsed | 0x200l); 16929: if(!(puzzle & 0x5c80000000ll)) 16930: altDoSolve(32, 0x100000000ll, puzzle | 0x5c80000000ll, 16931: partsUsed | 0x200l); 16932: if(!(puzzle & 0x402400480000000ll)) 16933: altDoSolve(32, 0x100000000ll, puzzle | 0x402400480000000ll, 16934: partsUsed | 0x200l); 16935: if(!(puzzle & 0x100300180000000ll)) 16936: altDoSolve(32, 0x100000000ll, puzzle | 0x100300180000000ll, 16937: partsUsed | 0x200l); 16938: if(!(puzzle & 0x100380080000000ll)) 16939: altDoSolve(32, 0x100000000ll, puzzle | 0x100380080000000ll, 16940: partsUsed | 0x200l); 16941: altpiece10at31: 16942: if (partsUsed & 0x400l) goto altpiece11at31; 16943: if (!(puzzle & 0x400480000000ll)) { 16944: if(!(puzzle & 0x80480480000000ll)) 16945: altDoSolve(32, 0x100000000ll, puzzle | 0x80480480000000ll, 16946: partsUsed | 0x400l); 16947: if(!(puzzle & 0x2480480000000ll)) 16948: altDoSolve(32, 0x100000000ll, puzzle | 0x2480480000000ll, 16949: partsUsed | 0x400l); 16950: if(!(puzzle & 0x2402480000000ll)) 16951: altDoSolve(32, 0x100000000ll, puzzle | 0x2402480000000ll, 16952: partsUsed | 0x400l); 16953: if(!(puzzle & 0x482480000000ll)) 16954: altDoSolve(32, 0x100000000ll, puzzle | 0x482480000000ll, 16955: partsUsed | 0x400l); 16956: if(!(puzzle & 0x400480480000000ll)) 16957: altDoSolve(32, 0x100000000ll, puzzle | 0x400480480000000ll, 16958: partsUsed | 0x400l); 16959: } 16960: if (!(puzzle & 0x980000000ll)) { 16961: if(!(puzzle & 0x1b80000000ll)) 16962: altDoSolve(32, 0x100000000ll, puzzle | 0x1b80000000ll, 16963: partsUsed | 0x400l); 16964: if(!(puzzle & 0xf80000000ll)) 16965: altDoSolve(32, 0x100000000ll, puzzle | 0xf80000000ll, 16966: partsUsed | 0x400l); 16967: if(!(puzzle & 0x2d80000000ll)) 16968: altDoSolve(32, 0x100000000ll, puzzle | 0x2d80000000ll, 16969: partsUsed | 0x400l); 16970: if(!(puzzle & 0x4d80000000ll)) 16971: altDoSolve(32, 0x100000000ll, puzzle | 0x4d80000000ll, 16972: partsUsed | 0x400l); 16973: if(!(puzzle & 0x1d80000000ll)) 16974: altDoSolve(32, 0x100000000ll, puzzle | 0x1d80000000ll, 16975: partsUsed | 0x400l); 16976: } 16977: if (!(puzzle & 0x80080080000000ll)) { 16978: if(!(puzzle & 0x480480080000000ll)) 16979: altDoSolve(32, 0x100000000ll, puzzle | 0x480480080000000ll, 16980: partsUsed | 0x400l); 16981: if(!(puzzle & 0x80180180000000ll)) 16982: altDoSolve(32, 0x100000000ll, puzzle | 0x80180180000000ll, 16983: partsUsed | 0x400l); 16984: if(!(puzzle & 0x180180080000000ll)) 16985: altDoSolve(32, 0x100000000ll, puzzle | 0x180180080000000ll, 16986: partsUsed | 0x400l); 16987: } 16988: if (!(puzzle & 0x100180000000ll)) { 16989: if(!(puzzle & 0x100180180000000ll)) 16990: altDoSolve(32, 0x100000000ll, puzzle | 0x100180180000000ll, 16991: partsUsed | 0x400l); 16992: if(!(puzzle & 0x380180000000ll)) 16993: altDoSolve(32, 0x100000000ll, puzzle | 0x380180000000ll, 16994: partsUsed | 0x400l); 16995: if(!(puzzle & 0x180380000000ll)) 16996: altDoSolve(32, 0x100000000ll, puzzle | 0x180380000000ll, 16997: partsUsed | 0x400l); 16998: if(!(puzzle & 0x300380000000ll)) 16999: altDoSolve(32, 0x100000000ll, puzzle | 0x300380000000ll, 17000: partsUsed | 0x400l); 17001: } 17002: if(!(puzzle & 0x90090080000000ll)) 17003: altDoSolve(32, 0x100000000ll, puzzle | 0x90090080000000ll, 17004: partsUsed | 0x400l); 17005: if(!(puzzle & 0x490480000000ll)) 17006: altDoSolve(32, 0x100000000ll, puzzle | 0x490480000000ll, 17007: partsUsed | 0x400l); 17008: if(!(puzzle & 0x6c80000000ll)) 17009: altDoSolve(32, 0x100000000ll, puzzle | 0x6c80000000ll, 17010: partsUsed | 0x400l); 17011: altpiece11at31: 17012: if (partsUsed & 0x800l) goto altpiece13at31; 17013: if (!(puzzle & 0x80180000000ll)) { 17014: if(!(puzzle & 0x80d80000000ll)) 17015: altDoSolve(32, 0x100000000ll, puzzle | 0x80d80000000ll, 17016: partsUsed | 0x800l); 17017: if(!(puzzle & 0x580180000000ll)) 17018: altDoSolve(32, 0x100000000ll, puzzle | 0x580180000000ll, 17019: partsUsed | 0x800l); 17020: if(!(puzzle & 0x180580000000ll)) 17021: altDoSolve(32, 0x100000000ll, puzzle | 0x180580000000ll, 17022: partsUsed | 0x800l); 17023: if(!(puzzle & 0x180980000000ll)) 17024: altDoSolve(32, 0x100000000ll, puzzle | 0x180980000000ll, 17025: partsUsed | 0x800l); 17026: if(!(puzzle & 0x980180000000ll)) 17027: altDoSolve(32, 0x100000000ll, puzzle | 0x980180000000ll, 17028: partsUsed | 0x800l); 17029: if(!(puzzle & 0x480580000000ll)) 17030: altDoSolve(32, 0x100000000ll, puzzle | 0x480580000000ll, 17031: partsUsed | 0x800l); 17032: if(!(puzzle & 0x1a0180000000ll)) 17033: altDoSolve(32, 0x100000000ll, puzzle | 0x1a0180000000ll, 17034: partsUsed | 0x800l); 17035: if(!(puzzle & 0x190180000000ll)) 17036: altDoSolve(32, 0x100000000ll, puzzle | 0x190180000000ll, 17037: partsUsed | 0x800l); 17038: } 17039: if (!(puzzle & 0x800880000000ll)) { 17040: if(!(puzzle & 0xc00c80000000ll)) 17041: altDoSolve(32, 0x100000000ll, puzzle | 0xc00c80000000ll, 17042: partsUsed | 0x800l); 17043: if(!(puzzle & 0x900980000000ll)) 17044: altDoSolve(32, 0x100000000ll, puzzle | 0x900980000000ll, 17045: partsUsed | 0x800l); 17046: if(!(puzzle & 0x800d80000000ll)) 17047: altDoSolve(32, 0x100000000ll, puzzle | 0x800d80000000ll, 17048: partsUsed | 0x800l); 17049: } 17050: if (!(puzzle & 0x400480000000ll)) { 17051: if(!(puzzle & 0x580480000000ll)) 17052: altDoSolve(32, 0x100000000ll, puzzle | 0x580480000000ll, 17053: partsUsed | 0x800l); 17054: if(!(puzzle & 0x480c80000000ll)) 17055: altDoSolve(32, 0x100000000ll, puzzle | 0x480c80000000ll, 17056: partsUsed | 0x800l); 17057: if(!(puzzle & 0x400d80000000ll)) 17058: altDoSolve(32, 0x100000000ll, puzzle | 0x400d80000000ll, 17059: partsUsed | 0x800l); 17060: if(!(puzzle & 0xc80480000000ll)) 17061: altDoSolve(32, 0x100000000ll, puzzle | 0xc80480000000ll, 17062: partsUsed | 0x800l); 17063: } 17064: if(!(puzzle & 0x100d80000000ll)) 17065: altDoSolve(32, 0x100000000ll, puzzle | 0x100d80000000ll, 17066: partsUsed | 0x800l); 17067: if(!(puzzle & 0xd80080000000ll)) 17068: altDoSolve(32, 0x100000000ll, puzzle | 0xd80080000000ll, 17069: partsUsed | 0x800l); 17070: if(!(puzzle & 0x1b0080000000ll)) 17071: altDoSolve(32, 0x100000000ll, puzzle | 0x1b0080000000ll, 17072: partsUsed | 0x800l); 17073: altpiece13at31: 17074: break; 17075: } 17076: } 17077: 17078: 17079: void altDoSolve32(int start, int startMask, int puzzle, int partsUsed) 17080: { 17081: for (;(puzzle & startMask) && start < NUM_HI_BITS; start++, startMask <<= 1); 17082: if(partsUsed == (1<<12)-1) { 17083: if(!(++numSolutions%4099)) { write(0, ".", 1); } 17084: if(!((numSolutions) % (409963/10))) { 17085: percent++; 17086: printf("\r%d%% done, %ld seconds so far; expecting %.0lf seconds.\n", 17087: percent*10, (clock()-startTime)/1000000, ((double)(clock()-startTime)/100000/percent)*correction[percent-1]); 17088: fflush(stdout); 17089: } 17090: return; 17091: } 17092: switch(start) { 17093: case 0: 17094: if (partsUsed & 0x2l) goto altpiece2at0at32; 17095: if(!(puzzle & 0x201209l)) 17096: altDoSolve32(1, 0x2l, puzzle | 0x201209l, partsUsed | 0x2l); 17097: if(!(puzzle & 0x2fl)) 17098: altDoSolve32(1, 0x2l, puzzle | 0x2fl, partsUsed | 0x2l); 17099: if(!(puzzle & 0x801803l)) 17100: altDoSolve32(1, 0x2l, puzzle | 0x801803l, partsUsed | 0x2l); 17101: if(!(puzzle & 0x48009001l)) 17102: altDoSolve32(1, 0x2l, puzzle | 0x48009001l, partsUsed | 0x2l); 17103: if(!(puzzle & 0x40048009l)) 17104: altDoSolve32(1, 0x2l, puzzle | 0x40048009l, partsUsed | 0x2l); 17105: altpiece2at0at32: 17106: if (partsUsed & 0x4l) goto altpiece3at0at32; 17107: if (!(puzzle & 0x1001001l)) { 17108: if(!(puzzle & 0x9201001l)) 17109: altDoSolve32(1, 0x2l, puzzle | 0x9201001l, partsUsed | 0x4l); 17110: if(!(puzzle & 0x3801001l)) 17111: altDoSolve32(1, 0x2l, puzzle | 0x3801001l, partsUsed | 0x4l); 17112: if(!(puzzle & 0x1049001l)) 17113: altDoSolve32(1, 0x2l, puzzle | 0x1049001l, partsUsed | 0x4l); 17114: } 17115: if(!(puzzle & 0xe9l)) 17116: altDoSolve32(1, 0x2l, puzzle | 0xe9l, partsUsed | 0x4l); 17117: if(!(puzzle & 0x8008049l)) 17118: altDoSolve32(1, 0x2l, puzzle | 0x8008049l, partsUsed | 0x4l); 17119: altpiece3at0at32: 17120: if (partsUsed & 0x8l) goto altpiece4at0at32; 17121: if(!(puzzle & 0x1201009l)) 17122: altDoSolve32(1, 0x2l, puzzle | 0x1201009l, partsUsed | 0x8l); 17123: if(!(puzzle & 0x1801003l)) 17124: altDoSolve32(1, 0x2l, puzzle | 0x1801003l, partsUsed | 0x8l); 17125: if(!(puzzle & 0x6bl)) 17126: altDoSolve32(1, 0x2l, puzzle | 0x6bl, partsUsed | 0x8l); 17127: if(!(puzzle & 0x40049001l)) 17128: altDoSolve32(1, 0x2l, puzzle | 0x40049001l, partsUsed | 0x8l); 17129: if(!(puzzle & 0x48008009l)) 17130: altDoSolve32(1, 0x2l, puzzle | 0x48008009l, partsUsed | 0x8l); 17131: altpiece4at0at32: 17132: if (partsUsed & 0x10l) goto altpiece5at0at32; 17133: if(!(puzzle & 0x49241l)) 17134: altDoSolve32(1, 0x2l, puzzle | 0x49241l, partsUsed | 0x10l); 17135: altpiece5at0at32: 17136: if (partsUsed & 0x40l) goto altpiece7at0at32; 17137: if(!(puzzle & 0x49201l)) 17138: altDoSolve32(1, 0x2l, puzzle | 0x49201l, partsUsed | 0x40l); 17139: altpiece7at0at32: 17140: if (partsUsed & 0x80l) goto altpiece8at0at32; 17141: if(!(puzzle & 0x9001009l)) 17142: altDoSolve32(1, 0x2l, puzzle | 0x9001009l, partsUsed | 0x80l); 17143: if(!(puzzle & 0x9008009l)) 17144: altDoSolve32(1, 0x2l, puzzle | 0x9008009l, partsUsed | 0x80l); 17145: if(!(puzzle & 0x49041l)) 17146: altDoSolve32(1, 0x2l, puzzle | 0x49041l, partsUsed | 0x80l); 17147: if(!(puzzle & 0x41049l)) 17148: altDoSolve32(1, 0x2l, puzzle | 0x41049l, partsUsed | 0x80l); 17149: if(!(puzzle & 0xcbl)) 17150: altDoSolve32(1, 0x2l, puzzle | 0xcbl, partsUsed | 0x80l); 17151: if(!(puzzle & 0xd3l)) 17152: altDoSolve32(1, 0x2l, puzzle | 0xd3l, partsUsed | 0x80l); 17153: if(!(puzzle & 0x3002003l)) 17154: altDoSolve32(1, 0x2l, puzzle | 0x3002003l, partsUsed | 0x80l); 17155: if(!(puzzle & 0x3001003l)) 17156: altDoSolve32(1, 0x2l, puzzle | 0x3001003l, partsUsed | 0x80l); 17157: altpiece8at0at32: 17158: if (partsUsed & 0x100l) goto altpiece9at0at32; 17159: if(!(puzzle & 0x1901l)) 17160: altDoSolve32(1, 0x2l, puzzle | 0x1901l, partsUsed | 0x100l); 17161: if(!(puzzle & 0x1809l)) 17162: altDoSolve32(1, 0x2l, puzzle | 0x1809l, partsUsed | 0x100l); 17163: if(!(puzzle & 0x2403l)) 17164: altDoSolve32(1, 0x2l, puzzle | 0x2403l, partsUsed | 0x100l); 17165: if(!(puzzle & 0x200bl)) 17166: altDoSolve32(1, 0x2l, puzzle | 0x200bl, partsUsed | 0x100l); 17167: if(!(puzzle & 0x1601l)) 17168: altDoSolve32(1, 0x2l, puzzle | 0x1601l, partsUsed | 0x100l); 17169: if(!(puzzle & 0x400dl)) 17170: altDoSolve32(1, 0x2l, puzzle | 0x400dl, partsUsed | 0x100l); 17171: if(!(puzzle & 0xd001l)) 17172: altDoSolve32(1, 0x2l, puzzle | 0xd001l, partsUsed | 0x100l); 17173: if(!(puzzle & 0x9003l)) 17174: altDoSolve32(1, 0x2l, puzzle | 0x9003l, partsUsed | 0x100l); 17175: if(!(puzzle & 0x13001l)) 17176: altDoSolve32(1, 0x2l, puzzle | 0x13001l, partsUsed | 0x100l); 17177: if(!(puzzle & 0x18009l)) 17178: altDoSolve32(1, 0x2l, puzzle | 0x18009l, partsUsed | 0x100l); 17179: if(!(puzzle & 0x1019l)) 17180: altDoSolve32(1, 0x2l, puzzle | 0x1019l, partsUsed | 0x100l); 17181: if(!(puzzle & 0x10013l)) 17182: altDoSolve32(1, 0x2l, puzzle | 0x10013l, partsUsed | 0x100l); 17183: altpiece9at0at32: 17184: if (partsUsed & 0x200l) goto altpiece10at0at32; 17185: if (!(puzzle & 0x1001001l)) { 17186: if(!(puzzle & 0x1001209l)) 17187: altDoSolve32(1, 0x2l, puzzle | 0x1001209l, partsUsed | 0x200l); 17188: if(!(puzzle & 0x1209001l)) 17189: altDoSolve32(1, 0x2l, puzzle | 0x1209001l, partsUsed | 0x200l); 17190: if(!(puzzle & 0x9001201l)) 17191: altDoSolve32(1, 0x2l, puzzle | 0x9001201l, partsUsed | 0x200l); 17192: if(!(puzzle & 0x1001803l)) 17193: altDoSolve32(1, 0x2l, puzzle | 0x1001803l, partsUsed | 0x200l); 17194: if(!(puzzle & 0x3001801l)) 17195: altDoSolve32(1, 0x2l, puzzle | 0x3001801l, partsUsed | 0x200l); 17196: if(!(puzzle & 0x1803001l)) 17197: altDoSolve32(1, 0x2l, puzzle | 0x1803001l, partsUsed | 0x200l); 17198: } 17199: if (!(puzzle & 0x9001l)) { 17200: if(!(puzzle & 0x8009201l)) 17201: altDoSolve32(1, 0x2l, puzzle | 0x8009201l, partsUsed | 0x200l); 17202: if(!(puzzle & 0x209201l)) 17203: altDoSolve32(1, 0x2l, puzzle | 0x209201l, partsUsed | 0x200l); 17204: if(!(puzzle & 0x8049001l)) 17205: altDoSolve32(1, 0x2l, puzzle | 0x8049001l, partsUsed | 0x200l); 17206: } 17207: if (!(puzzle & 0xdl)) { 17208: if(!(puzzle & 0x9dl)) 17209: altDoSolve32(1, 0x2l, puzzle | 0x9dl, partsUsed | 0x200l); 17210: if(!(puzzle & 0x3dl)) 17211: altDoSolve32(1, 0x2l, puzzle | 0x3dl, partsUsed | 0x200l); 17212: if(!(puzzle & 0x4fl)) 17213: altDoSolve32(1, 0x2l, puzzle | 0x4fl, partsUsed | 0x200l); 17214: if(!(puzzle & 0xcdl)) 17215: altDoSolve32(1, 0x2l, puzzle | 0xcdl, partsUsed | 0x200l); 17216: } 17217: if(!(puzzle & 0x79l)) 17218: altDoSolve32(1, 0x2l, puzzle | 0x79l, partsUsed | 0x200l); 17219: if(!(puzzle & 0x803801l)) 17220: altDoSolve32(1, 0x2l, puzzle | 0x803801l, partsUsed | 0x200l); 17221: if(!(puzzle & 0x2003801l)) 17222: altDoSolve32(1, 0x2l, puzzle | 0x2003801l, partsUsed | 0x200l); 17223: if(!(puzzle & 0x8048009l)) 17224: altDoSolve32(1, 0x2l, puzzle | 0x8048009l, partsUsed | 0x200l); 17225: altpiece10at0at32: 17226: if (partsUsed & 0x400l) goto altpiece11at0at32; 17227: if (!(puzzle & 0x8009l)) { 17228: if(!(puzzle & 0x1009009l)) 17229: altDoSolve32(1, 0x2l, puzzle | 0x1009009l, partsUsed | 0x400l); 17230: if(!(puzzle & 0x49009l)) 17231: altDoSolve32(1, 0x2l, puzzle | 0x49009l, partsUsed | 0x400l); 17232: if(!(puzzle & 0x48049l)) 17233: altDoSolve32(1, 0x2l, puzzle | 0x48049l, partsUsed | 0x400l); 17234: if(!(puzzle & 0x9049l)) 17235: altDoSolve32(1, 0x2l, puzzle | 0x9049l, partsUsed | 0x400l); 17236: if(!(puzzle & 0x8009009l)) 17237: altDoSolve32(1, 0x2l, puzzle | 0x8009009l, partsUsed | 0x400l); 17238: } 17239: if (!(puzzle & 0x1001001l)) { 17240: if(!(puzzle & 0x9009001l)) 17241: altDoSolve32(1, 0x2l, puzzle | 0x9009001l, partsUsed | 0x400l); 17242: if(!(puzzle & 0x1003003l)) 17243: altDoSolve32(1, 0x2l, puzzle | 0x1003003l, partsUsed | 0x400l); 17244: if(!(puzzle & 0x3003001l)) 17245: altDoSolve32(1, 0x2l, puzzle | 0x3003001l, partsUsed | 0x400l); 17246: } 17247: if (!(puzzle & 0x19l)) { 17248: if(!(puzzle & 0x5bl)) 17249: altDoSolve32(1, 0x2l, puzzle | 0x5bl, partsUsed | 0x400l); 17250: if(!(puzzle & 0x9bl)) 17251: altDoSolve32(1, 0x2l, puzzle | 0x9bl, partsUsed | 0x400l); 17252: if(!(puzzle & 0xd9l)) 17253: altDoSolve32(1, 0x2l, puzzle | 0xd9l, partsUsed | 0x400l); 17254: } 17255: if(!(puzzle & 0x1201201l)) 17256: altDoSolve32(1, 0x2l, puzzle | 0x1201201l, partsUsed | 0x400l); 17257: if(!(puzzle & 0x9209l)) 17258: altDoSolve32(1, 0x2l, puzzle | 0x9209l, partsUsed | 0x400l); 17259: if(!(puzzle & 0x1fl)) 17260: altDoSolve32(1, 0x2l, puzzle | 0x1fl, partsUsed | 0x400l); 17261: if(!(puzzle & 0x6dl)) 17262: altDoSolve32(1, 0x2l, puzzle | 0x6dl, partsUsed | 0x400l); 17263: if(!(puzzle & 0x3803l)) 17264: altDoSolve32(1, 0x2l, puzzle | 0x3803l, partsUsed | 0x400l); 17265: if(!(puzzle & 0x1801801l)) 17266: altDoSolve32(1, 0x2l, puzzle | 0x1801801l, partsUsed | 0x400l); 17267: if(!(puzzle & 0x2003003l)) 17268: altDoSolve32(1, 0x2l, puzzle | 0x2003003l, partsUsed | 0x400l); 17269: altpiece11at0at32: 17270: if (partsUsed & 0x800l) goto altpiece13at0at32; 17271: if (!(puzzle & 0x1003l)) { 17272: if(!(puzzle & 0x101bl)) 17273: altDoSolve32(1, 0x2l, puzzle | 0x101bl, partsUsed | 0x800l); 17274: if(!(puzzle & 0xb003l)) 17275: altDoSolve32(1, 0x2l, puzzle | 0xb003l, partsUsed | 0x800l); 17276: if(!(puzzle & 0x300bl)) 17277: altDoSolve32(1, 0x2l, puzzle | 0x300bl, partsUsed | 0x800l); 17278: if(!(puzzle & 0x3013l)) 17279: altDoSolve32(1, 0x2l, puzzle | 0x3013l, partsUsed | 0x800l); 17280: if(!(puzzle & 0x13003l)) 17281: altDoSolve32(1, 0x2l, puzzle | 0x13003l, partsUsed | 0x800l); 17282: if(!(puzzle & 0x900bl)) 17283: altDoSolve32(1, 0x2l, puzzle | 0x900bl, partsUsed | 0x800l); 17284: if(!(puzzle & 0x3403l)) 17285: altDoSolve32(1, 0x2l, puzzle | 0x3403l, partsUsed | 0x800l); 17286: if(!(puzzle & 0x3203l)) 17287: altDoSolve32(1, 0x2l, puzzle | 0x3203l, partsUsed | 0x800l); 17288: } 17289: if (!(puzzle & 0x10011l)) { 17290: if(!(puzzle & 0x18019l)) 17291: altDoSolve32(1, 0x2l, puzzle | 0x18019l, partsUsed | 0x800l); 17292: if(!(puzzle & 0x12013l)) 17293: altDoSolve32(1, 0x2l, puzzle | 0x12013l, partsUsed | 0x800l); 17294: if(!(puzzle & 0x1001bl)) 17295: altDoSolve32(1, 0x2l, puzzle | 0x1001bl, partsUsed | 0x800l); 17296: } 17297: if (!(puzzle & 0x8009l)) { 17298: if(!(puzzle & 0xb009l)) 17299: altDoSolve32(1, 0x2l, puzzle | 0xb009l, partsUsed | 0x800l); 17300: if(!(puzzle & 0x9019l)) 17301: altDoSolve32(1, 0x2l, puzzle | 0x9019l, partsUsed | 0x800l); 17302: if(!(puzzle & 0x801bl)) 17303: altDoSolve32(1, 0x2l, puzzle | 0x801bl, partsUsed | 0x800l); 17304: if(!(puzzle & 0x19009l)) 17305: altDoSolve32(1, 0x2l, puzzle | 0x19009l, partsUsed | 0x800l); 17306: if(!(puzzle & 0xd009l)) 17307: altDoSolve32(1, 0x2l, puzzle | 0xd009l, partsUsed | 0x800l); 17308: if(!(puzzle & 0xc00dl)) 17309: altDoSolve32(1, 0x2l, puzzle | 0xc00dl, partsUsed | 0x800l); 17310: if(!(puzzle & 0x9809l)) 17311: altDoSolve32(1, 0x2l, puzzle | 0x9809l, partsUsed | 0x800l); 17312: if(!(puzzle & 0x900dl)) 17313: altDoSolve32(1, 0x2l, puzzle | 0x900dl, partsUsed | 0x800l); 17314: } 17315: if(!(puzzle & 0x201bl)) 17316: altDoSolve32(1, 0x2l, puzzle | 0x201bl, partsUsed | 0x800l); 17317: if(!(puzzle & 0x1b001l)) 17318: altDoSolve32(1, 0x2l, puzzle | 0x1b001l, partsUsed | 0x800l); 17319: if(!(puzzle & 0xd801l)) 17320: altDoSolve32(1, 0x2l, puzzle | 0xd801l, partsUsed | 0x800l); 17321: if(!(puzzle & 0x3601l)) 17322: altDoSolve32(1, 0x2l, puzzle | 0x3601l, partsUsed | 0x800l); 17323: if(!(puzzle & 0x1b01l)) 17324: altDoSolve32(1, 0x2l, puzzle | 0x1b01l, partsUsed | 0x800l); 17325: altpiece13at0at32: 17326: break; 17327: case 1: 17328: if (partsUsed & 0x2l) goto altpiece2at1at32; 17329: if(!(puzzle & 0x402412l)) 17330: altDoSolve32(2, 0x4l, puzzle | 0x402412l, partsUsed | 0x2l); 17331: if(!(puzzle & 0x7al)) 17332: altDoSolve32(2, 0x4l, puzzle | 0x7al, partsUsed | 0x2l); 17333: if(!(puzzle & 0x1803002l)) 17334: altDoSolve32(2, 0x4l, puzzle | 0x1803002l, partsUsed | 0x2l); 17335: if(!(puzzle & 0x90012002l)) 17336: altDoSolve32(2, 0x4l, puzzle | 0x90012002l, partsUsed | 0x2l); 17337: if(!(puzzle & 0x80090012l)) 17338: altDoSolve32(2, 0x4l, puzzle | 0x80090012l, partsUsed | 0x2l); 17339: altpiece2at1at32: 17340: if (partsUsed & 0x4l) goto altpiece3at1at32; 17341: if (!(puzzle & 0x2002002l)) { 17342: if(!(puzzle & 0x12402002l)) 17343: altDoSolve32(2, 0x4l, puzzle | 0x12402002l, partsUsed | 0x4l); 17344: if(!(puzzle & 0x2003802l)) 17345: altDoSolve32(2, 0x4l, puzzle | 0x2003802l, partsUsed | 0x4l); 17346: if(!(puzzle & 0x2092002l)) 17347: altDoSolve32(2, 0x4l, puzzle | 0x2092002l, partsUsed | 0x4l); 17348: } 17349: if(!(puzzle & 0x9el)) 17350: altDoSolve32(2, 0x4l, puzzle | 0x9el, partsUsed | 0x4l); 17351: if(!(puzzle & 0x10010092l)) 17352: altDoSolve32(2, 0x4l, puzzle | 0x10010092l, partsUsed | 0x4l); 17353: altpiece3at1at32: 17354: if (partsUsed & 0x8l) goto altpiece4at1at32; 17355: if(!(puzzle & 0x2402012l)) 17356: altDoSolve32(2, 0x4l, puzzle | 0x2402012l, partsUsed | 0x8l); 17357: if(!(puzzle & 0x3el)) 17358: altDoSolve32(2, 0x4l, puzzle | 0x3el, partsUsed | 0x8l); 17359: if(!(puzzle & 0x803802l)) 17360: altDoSolve32(2, 0x4l, puzzle | 0x803802l, partsUsed | 0x8l); 17361: if(!(puzzle & 0x80092002l)) 17362: altDoSolve32(2, 0x4l, puzzle | 0x80092002l, partsUsed | 0x8l); 17363: if(!(puzzle & 0x90010012l)) 17364: altDoSolve32(2, 0x4l, puzzle | 0x90010012l, partsUsed | 0x8l); 17365: altpiece4at1at32: 17366: if (partsUsed & 0x10l) goto altpiece5at1at32; 17367: if(!(puzzle & 0x92482l)) 17368: altDoSolve32(2, 0x4l, puzzle | 0x92482l, partsUsed | 0x10l); 17369: altpiece5at1at32: 17370: if (partsUsed & 0x40l) goto altpiece7at1at32; 17371: if(!(puzzle & 0x92402l)) 17372: altDoSolve32(2, 0x4l, puzzle | 0x92402l, partsUsed | 0x40l); 17373: altpiece7at1at32: 17374: if (partsUsed & 0x80l) goto altpiece8at1at32; 17375: if(!(puzzle & 0x12002012l)) 17376: altDoSolve32(2, 0x4l, puzzle | 0x12002012l, partsUsed | 0x80l); 17377: if(!(puzzle & 0x12010012l)) 17378: altDoSolve32(2, 0x4l, puzzle | 0x12010012l, partsUsed | 0x80l); 17379: if(!(puzzle & 0x92082l)) 17380: altDoSolve32(2, 0x4l, puzzle | 0x92082l, partsUsed | 0x80l); 17381: if(!(puzzle & 0x82092l)) 17382: altDoSolve32(2, 0x4l, puzzle | 0x82092l, partsUsed | 0x80l); 17383: altpiece8at1at32: 17384: if (partsUsed & 0x100l) goto altpiece9at1at32; 17385: if(!(puzzle & 0x3202l)) 17386: altDoSolve32(2, 0x4l, puzzle | 0x3202l, partsUsed | 0x100l); 17387: if(!(puzzle & 0x3012l)) 17388: altDoSolve32(2, 0x4l, puzzle | 0x3012l, partsUsed | 0x100l); 17389: if(!(puzzle & 0x801al)) 17390: altDoSolve32(2, 0x4l, puzzle | 0x801al, partsUsed | 0x100l); 17391: if(!(puzzle & 0x1a002l)) 17392: altDoSolve32(2, 0x4l, puzzle | 0x1a002l, partsUsed | 0x100l); 17393: altpiece9at1at32: 17394: if (partsUsed & 0x200l) goto altpiece10at1at32; 17395: if (!(puzzle & 0x2002002l)) { 17396: if(!(puzzle & 0x2002412l)) 17397: altDoSolve32(2, 0x4l, puzzle | 0x2002412l, partsUsed | 0x200l); 17398: if(!(puzzle & 0x2412002l)) 17399: altDoSolve32(2, 0x4l, puzzle | 0x2412002l, partsUsed | 0x200l); 17400: if(!(puzzle & 0x12002402l)) 17401: altDoSolve32(2, 0x4l, puzzle | 0x12002402l, partsUsed | 0x200l); 17402: } 17403: if (!(puzzle & 0x12002l)) { 17404: if(!(puzzle & 0x10012402l)) 17405: altDoSolve32(2, 0x4l, puzzle | 0x10012402l, partsUsed | 0x200l); 17406: if(!(puzzle & 0x412402l)) 17407: altDoSolve32(2, 0x4l, puzzle | 0x412402l, partsUsed | 0x200l); 17408: if(!(puzzle & 0x10092002l)) 17409: altDoSolve32(2, 0x4l, puzzle | 0x10092002l, partsUsed | 0x200l); 17410: } 17411: if(!(puzzle & 0x5el)) 17412: altDoSolve32(2, 0x4l, puzzle | 0x5el, partsUsed | 0x200l); 17413: if(!(puzzle & 0x1003802l)) 17414: altDoSolve32(2, 0x4l, puzzle | 0x1003802l, partsUsed | 0x200l); 17415: if(!(puzzle & 0x10090012l)) 17416: altDoSolve32(2, 0x4l, puzzle | 0x10090012l, partsUsed | 0x200l); 17417: altpiece10at1at32: 17418: if (partsUsed & 0x400l) goto altpiece11at1at32; 17419: if (!(puzzle & 0x92l)) { 17420: if(!(puzzle & 0xdal)) 17421: altDoSolve32(2, 0x4l, puzzle | 0xdal, partsUsed | 0x400l); 17422: if(!(puzzle & 0x90092l)) 17423: altDoSolve32(2, 0x4l, puzzle | 0x90092l, partsUsed | 0x400l); 17424: if(!(puzzle & 0x12092l)) 17425: altDoSolve32(2, 0x4l, puzzle | 0x12092l, partsUsed | 0x400l); 17426: } 17427: if (!(puzzle & 0x2002002l)) { 17428: if(!(puzzle & 0x3003002l)) 17429: altDoSolve32(2, 0x4l, puzzle | 0x3003002l, partsUsed | 0x400l); 17430: if(!(puzzle & 0x2012012l)) 17431: altDoSolve32(2, 0x4l, puzzle | 0x2012012l, partsUsed | 0x400l); 17432: if(!(puzzle & 0x12012002l)) 17433: altDoSolve32(2, 0x4l, puzzle | 0x12012002l, partsUsed | 0x400l); 17434: } 17435: if(!(puzzle & 0x2402402l)) 17436: altDoSolve32(2, 0x4l, puzzle | 0x2402402l, partsUsed | 0x400l); 17437: if(!(puzzle & 0x12412l)) 17438: altDoSolve32(2, 0x4l, puzzle | 0x12412l, partsUsed | 0x400l); 17439: if(!(puzzle & 0x92012l)) 17440: altDoSolve32(2, 0x4l, puzzle | 0x92012l, partsUsed | 0x400l); 17441: if(!(puzzle & 0x10012012l)) 17442: altDoSolve32(2, 0x4l, puzzle | 0x10012012l, partsUsed | 0x400l); 17443: altpiece11at1at32: 17444: if (partsUsed & 0x800l) goto altpiece13at1at32; 17445: if (!(puzzle & 0x18002l)) { 17446: if(!(puzzle & 0x1b002l)) 17447: altDoSolve32(2, 0x4l, puzzle | 0x1b002l, partsUsed | 0x800l); 17448: if(!(puzzle & 0x1a012l)) 17449: altDoSolve32(2, 0x4l, puzzle | 0x1a012l, partsUsed | 0x800l); 17450: if(!(puzzle & 0x1801al)) 17451: altDoSolve32(2, 0x4l, puzzle | 0x1801al, partsUsed | 0x800l); 17452: } 17453: if(!(puzzle & 0x13012l)) 17454: altDoSolve32(2, 0x4l, puzzle | 0x13012l, partsUsed | 0x800l); 17455: if(!(puzzle & 0x1201al)) 17456: altDoSolve32(2, 0x4l, puzzle | 0x1201al, partsUsed | 0x800l); 17457: if(!(puzzle & 0x3602l)) 17458: altDoSolve32(2, 0x4l, puzzle | 0x3602l, partsUsed | 0x800l); 17459: altpiece13at1at32: 17460: break; 17461: case 2: 17462: if (partsUsed & 0x2l) goto altpiece2at2at32; 17463: if(!(puzzle & 0x904804l)) 17464: altDoSolve32(3, 0x8l, puzzle | 0x904804l, partsUsed | 0x2l); 17465: if(!(puzzle & 0x804824l)) 17466: altDoSolve32(3, 0x8l, puzzle | 0x804824l, partsUsed | 0x2l); 17467: if(!(puzzle & 0x1001800cl)) 17468: altDoSolve32(3, 0x8l, puzzle | 0x1001800cl, partsUsed | 0x2l); 17469: if(!(puzzle & 0x1800c004l)) 17470: altDoSolve32(3, 0x8l, puzzle | 0x1800c004l, partsUsed | 0x2l); 17471: altpiece2at2at32: 17472: if (partsUsed & 0x4l) goto altpiece3at2at32; 17473: if (!(puzzle & 0x4004004l)) { 17474: if(!(puzzle & 0x4004904l)) 17475: altDoSolve32(3, 0x8l, puzzle | 0x4004904l, partsUsed | 0x4l); 17476: if(!(puzzle & 0x24804004l)) 17477: altDoSolve32(3, 0x8l, puzzle | 0x24804004l, partsUsed | 0x4l); 17478: if(!(puzzle & 0x401c004l)) 17479: altDoSolve32(3, 0x8l, puzzle | 0x401c004l, partsUsed | 0x4l); 17480: } 17481: if(!(puzzle & 0x800801cl)) 17482: altDoSolve32(3, 0x8l, puzzle | 0x800801cl, partsUsed | 0x4l); 17483: altpiece3at2at32: 17484: if (partsUsed & 0x8l) goto altpiece4at2at32; 17485: if(!(puzzle & 0x104904l)) 17486: altDoSolve32(3, 0x8l, puzzle | 0x104904l, partsUsed | 0x8l); 17487: if(!(puzzle & 0x4804024l)) 17488: altDoSolve32(3, 0x8l, puzzle | 0x4804024l, partsUsed | 0x8l); 17489: if(!(puzzle & 0x1001c004l)) 17490: altDoSolve32(3, 0x8l, puzzle | 0x1001c004l, partsUsed | 0x8l); 17491: if(!(puzzle & 0x1800800cl)) 17492: altDoSolve32(3, 0x8l, puzzle | 0x1800800cl, partsUsed | 0x8l); 17493: altpiece4at2at32: 17494: if (partsUsed & 0x40l) goto altpiece7at2at32; 17495: if(!(puzzle & 0x24904l)) 17496: altDoSolve32(3, 0x8l, puzzle | 0x24904l, partsUsed | 0x40l); 17497: altpiece7at2at32: 17498: if (partsUsed & 0x80l) goto altpiece8at2at32; 17499: if(!(puzzle & 0x24004024l)) 17500: altDoSolve32(3, 0x8l, puzzle | 0x24004024l, partsUsed | 0x80l); 17501: if(!(puzzle & 0x24020024l)) 17502: altDoSolve32(3, 0x8l, puzzle | 0x24020024l, partsUsed | 0x80l); 17503: if(!(puzzle & 0xbcl)) 17504: altDoSolve32(3, 0x8l, puzzle | 0xbcl, partsUsed | 0x80l); 17505: if(!(puzzle & 0xf4l)) 17506: altDoSolve32(3, 0x8l, puzzle | 0xf4l, partsUsed | 0x80l); 17507: if(!(puzzle & 0xc00800cl)) 17508: altDoSolve32(3, 0x8l, puzzle | 0xc00800cl, partsUsed | 0x80l); 17509: if(!(puzzle & 0xc00400cl)) 17510: altDoSolve32(3, 0x8l, puzzle | 0xc00400cl, partsUsed | 0x80l); 17511: if(!(puzzle & 0x1c014l)) 17512: altDoSolve32(3, 0x8l, puzzle | 0x1c014l, partsUsed | 0x80l); 17513: if(!(puzzle & 0x1401cl)) 17514: altDoSolve32(3, 0x8l, puzzle | 0x1401cl, partsUsed | 0x80l); 17515: altpiece8at2at32: 17516: if (partsUsed & 0x100l) goto altpiece9at2at32; 17517: if(!(puzzle & 0x900cl)) 17518: altDoSolve32(3, 0x8l, puzzle | 0x900cl, partsUsed | 0x100l); 17519: if(!(puzzle & 0x802cl)) 17520: altDoSolve32(3, 0x8l, puzzle | 0x802cl, partsUsed | 0x100l); 17521: if(!(puzzle & 0x5804l)) 17522: altDoSolve32(3, 0x8l, puzzle | 0x5804l, partsUsed | 0x100l); 17523: if(!(puzzle & 0x4c004l)) 17524: altDoSolve32(3, 0x8l, puzzle | 0x4c004l, partsUsed | 0x100l); 17525: if(!(puzzle & 0x2400cl)) 17526: altDoSolve32(3, 0x8l, puzzle | 0x2400cl, partsUsed | 0x100l); 17527: if(!(puzzle & 0x60024l)) 17528: altDoSolve32(3, 0x8l, puzzle | 0x60024l, partsUsed | 0x100l); 17529: if(!(puzzle & 0x4064l)) 17530: altDoSolve32(3, 0x8l, puzzle | 0x4064l, partsUsed | 0x100l); 17531: if(!(puzzle & 0x4004cl)) 17532: altDoSolve32(3, 0x8l, puzzle | 0x4004cl, partsUsed | 0x100l); 17533: altpiece9at2at32: 17534: if (partsUsed & 0x200l) goto altpiece10at2at32; 17535: if (!(puzzle & 0x4804l)) { 17536: if(!(puzzle & 0x804904l)) 17537: altDoSolve32(3, 0x8l, puzzle | 0x804904l, partsUsed | 0x200l); 17538: if(!(puzzle & 0x4004824l)) 17539: altDoSolve32(3, 0x8l, puzzle | 0x4004824l, partsUsed | 0x200l); 17540: if(!(puzzle & 0x20024804l)) 17541: altDoSolve32(3, 0x8l, puzzle | 0x20024804l, partsUsed | 0x200l); 17542: if(!(puzzle & 0x24004804l)) 17543: altDoSolve32(3, 0x8l, puzzle | 0x24004804l, partsUsed | 0x200l); 17544: if(!(puzzle & 0x824804l)) 17545: altDoSolve32(3, 0x8l, puzzle | 0x824804l, partsUsed | 0x200l); 17546: } 17547: if(!(puzzle & 0x4824004l)) 17548: altDoSolve32(3, 0x8l, puzzle | 0x4824004l, partsUsed | 0x200l); 17549: if(!(puzzle & 0x801800cl)) 17550: altDoSolve32(3, 0x8l, puzzle | 0x801800cl, partsUsed | 0x200l); 17551: if(!(puzzle & 0x801c004l)) 17552: altDoSolve32(3, 0x8l, puzzle | 0x801c004l, partsUsed | 0x200l); 17553: altpiece10at2at32: 17554: if (partsUsed & 0x400l) goto altpiece11at2at32; 17555: if (!(puzzle & 0x24004l)) { 17556: if(!(puzzle & 0x4024024l)) 17557: altDoSolve32(3, 0x8l, puzzle | 0x4024024l, partsUsed | 0x400l); 17558: if(!(puzzle & 0x24024004l)) 17559: altDoSolve32(3, 0x8l, puzzle | 0x24024004l, partsUsed | 0x400l); 17560: if(!(puzzle & 0x20024024l)) 17561: altDoSolve32(3, 0x8l, puzzle | 0x20024024l, partsUsed | 0x400l); 17562: } 17563: if (!(puzzle & 0x4cl)) { 17564: if(!(puzzle & 0xdcl)) 17565: altDoSolve32(3, 0x8l, puzzle | 0xdcl, partsUsed | 0x400l); 17566: if(!(puzzle & 0x7cl)) 17567: altDoSolve32(3, 0x8l, puzzle | 0x7cl, partsUsed | 0x400l); 17568: if(!(puzzle & 0xecl)) 17569: altDoSolve32(3, 0x8l, puzzle | 0xecl, partsUsed | 0x400l); 17570: } 17571: if (!(puzzle & 0xc004l)) { 17572: if(!(puzzle & 0x800c00cl)) 17573: altDoSolve32(3, 0x8l, puzzle | 0x800c00cl, partsUsed | 0x400l); 17574: if(!(puzzle & 0x400c00cl)) 17575: altDoSolve32(3, 0x8l, puzzle | 0x400c00cl, partsUsed | 0x400l); 17576: if(!(puzzle & 0x1c00cl)) 17577: altDoSolve32(3, 0x8l, puzzle | 0x1c00cl, partsUsed | 0x400l); 17578: if(!(puzzle & 0xc00c004l)) 17579: altDoSolve32(3, 0x8l, puzzle | 0xc00c004l, partsUsed | 0x400l); 17580: if(!(puzzle & 0xc01cl)) 17581: altDoSolve32(3, 0x8l, puzzle | 0xc01cl, partsUsed | 0x400l); 17582: } 17583: if(!(puzzle & 0x4804804l)) 17584: altDoSolve32(3, 0x8l, puzzle | 0x4804804l, partsUsed | 0x400l); 17585: if(!(puzzle & 0x24824l)) 17586: altDoSolve32(3, 0x8l, puzzle | 0x24824l, partsUsed | 0x400l); 17587: if(!(puzzle & 0x1801cl)) 17588: altDoSolve32(3, 0x8l, puzzle | 0x1801cl, partsUsed | 0x400l); 17589: altpiece11at2at32: 17590: if (partsUsed & 0x800l) goto altpiece13at2at32; 17591: if (!(puzzle & 0x400cl)) { 17592: if(!(puzzle & 0x406cl)) 17593: altDoSolve32(3, 0x8l, puzzle | 0x406cl, partsUsed | 0x800l); 17594: if(!(puzzle & 0x2c00cl)) 17595: altDoSolve32(3, 0x8l, puzzle | 0x2c00cl, partsUsed | 0x800l); 17596: if(!(puzzle & 0xc02cl)) 17597: altDoSolve32(3, 0x8l, puzzle | 0xc02cl, partsUsed | 0x800l); 17598: if(!(puzzle & 0xc04cl)) 17599: altDoSolve32(3, 0x8l, puzzle | 0xc04cl, partsUsed | 0x800l); 17600: if(!(puzzle & 0x4c00cl)) 17601: altDoSolve32(3, 0x8l, puzzle | 0x4c00cl, partsUsed | 0x800l); 17602: if(!(puzzle & 0x2402cl)) 17603: altDoSolve32(3, 0x8l, puzzle | 0x2402cl, partsUsed | 0x800l); 17604: if(!(puzzle & 0xd00cl)) 17605: altDoSolve32(3, 0x8l, puzzle | 0xd00cl, partsUsed | 0x800l); 17606: if(!(puzzle & 0xc80cl)) 17607: altDoSolve32(3, 0x8l, puzzle | 0xc80cl, partsUsed | 0x800l); 17608: } 17609: if (!(puzzle & 0x40044l)) { 17610: if(!(puzzle & 0x60064l)) 17611: altDoSolve32(3, 0x8l, puzzle | 0x60064l, partsUsed | 0x800l); 17612: if(!(puzzle & 0x4804cl)) 17613: altDoSolve32(3, 0x8l, puzzle | 0x4804cl, partsUsed | 0x800l); 17614: if(!(puzzle & 0x4006cl)) 17615: altDoSolve32(3, 0x8l, puzzle | 0x4006cl, partsUsed | 0x800l); 17616: } 17617: if (!(puzzle & 0x20024l)) { 17618: if(!(puzzle & 0x2c024l)) 17619: altDoSolve32(3, 0x8l, puzzle | 0x2c024l, partsUsed | 0x800l); 17620: if(!(puzzle & 0x24064l)) 17621: altDoSolve32(3, 0x8l, puzzle | 0x24064l, partsUsed | 0x800l); 17622: if(!(puzzle & 0x2006cl)) 17623: altDoSolve32(3, 0x8l, puzzle | 0x2006cl, partsUsed | 0x800l); 17624: if(!(puzzle & 0x64024l)) 17625: altDoSolve32(3, 0x8l, puzzle | 0x64024l, partsUsed | 0x800l); 17626: } 17627: if(!(puzzle & 0x806cl)) 17628: altDoSolve32(3, 0x8l, puzzle | 0x806cl, partsUsed | 0x800l); 17629: if(!(puzzle & 0x6c004l)) 17630: altDoSolve32(3, 0x8l, puzzle | 0x6c004l, partsUsed | 0x800l); 17631: if(!(puzzle & 0xd804l)) 17632: altDoSolve32(3, 0x8l, puzzle | 0xd804l, partsUsed | 0x800l); 17633: altpiece13at2at32: 17634: break; 17635: case 3: 17636: if (partsUsed & 0x2l) goto altpiece2at3at32; 17637: if(!(puzzle & 0x400c018l)) 17638: altDoSolve32(4, 0x10l, puzzle | 0x400c018l, partsUsed | 0x2l); 17639: if(!(puzzle & 0x1209008l)) 17640: altDoSolve32(4, 0x10l, puzzle | 0x1209008l, partsUsed | 0x2l); 17641: if(!(puzzle & 0x1009048l)) 17642: altDoSolve32(4, 0x10l, puzzle | 0x1009048l, partsUsed | 0x2l); 17643: altpiece2at3at32: 17644: if (partsUsed & 0x4l) goto altpiece3at3at32; 17645: if (!(puzzle & 0x8008008l)) { 17646: if(!(puzzle & 0x8009208l)) 17647: altDoSolve32(4, 0x10l, puzzle | 0x8009208l, partsUsed | 0x4l); 17648: if(!(puzzle & 0x49008008l)) 17649: altDoSolve32(4, 0x10l, puzzle | 0x49008008l, partsUsed | 0x4l); 17650: if(!(puzzle & 0x1c008008l)) 17651: altDoSolve32(4, 0x10l, puzzle | 0x1c008008l, partsUsed | 0x4l); 17652: } 17653: altpiece3at3at32: 17654: if (partsUsed & 0x8l) goto altpiece4at3at32; 17655: if(!(puzzle & 0x209208l)) 17656: altDoSolve32(4, 0x10l, puzzle | 0x209208l, partsUsed | 0x8l); 17657: if(!(puzzle & 0x9008048l)) 17658: altDoSolve32(4, 0x10l, puzzle | 0x9008048l, partsUsed | 0x8l); 17659: if(!(puzzle & 0xc008018l)) 17660: altDoSolve32(4, 0x10l, puzzle | 0xc008018l, partsUsed | 0x8l); 17661: altpiece4at3at32: 17662: if (partsUsed & 0x40l) goto altpiece7at3at32; 17663: if(!(puzzle & 0x49208l)) 17664: altDoSolve32(4, 0x10l, puzzle | 0x49208l, partsUsed | 0x40l); 17665: altpiece7at3at32: 17666: if (partsUsed & 0x80l) goto altpiece8at3at32; 17667: if(!(puzzle & 0x48008048l)) 17668: altDoSolve32(4, 0x10l, puzzle | 0x48008048l, partsUsed | 0x80l); 17669: if(!(puzzle & 0x48040048l)) 17670: altDoSolve32(4, 0x10l, puzzle | 0x48040048l, partsUsed | 0x80l); 17671: if(!(puzzle & 0x18010018l)) 17672: altDoSolve32(4, 0x10l, puzzle | 0x18010018l, partsUsed | 0x80l); 17673: if(!(puzzle & 0x18008018l)) 17674: altDoSolve32(4, 0x10l, puzzle | 0x18008018l, partsUsed | 0x80l); 17675: altpiece8at3at32: 17676: if (partsUsed & 0x100l) goto altpiece9at3at32; 17677: if(!(puzzle & 0xc808l)) 17678: altDoSolve32(4, 0x10l, puzzle | 0xc808l, partsUsed | 0x100l); 17679: if(!(puzzle & 0xc048l)) 17680: altDoSolve32(4, 0x10l, puzzle | 0xc048l, partsUsed | 0x100l); 17681: if(!(puzzle & 0x12018l)) 17682: altDoSolve32(4, 0x10l, puzzle | 0x12018l, partsUsed | 0x100l); 17683: if(!(puzzle & 0x10058l)) 17684: altDoSolve32(4, 0x10l, puzzle | 0x10058l, partsUsed | 0x100l); 17685: if(!(puzzle & 0xb008l)) 17686: altDoSolve32(4, 0x10l, puzzle | 0xb008l, partsUsed | 0x100l); 17687: if(!(puzzle & 0x20068l)) 17688: altDoSolve32(4, 0x10l, puzzle | 0x20068l, partsUsed | 0x100l); 17689: if(!(puzzle & 0x68008l)) 17690: altDoSolve32(4, 0x10l, puzzle | 0x68008l, partsUsed | 0x100l); 17691: if(!(puzzle & 0x48018l)) 17692: altDoSolve32(4, 0x10l, puzzle | 0x48018l, partsUsed | 0x100l); 17693: if(!(puzzle & 0x98008l)) 17694: altDoSolve32(4, 0x10l, puzzle | 0x98008l, partsUsed | 0x100l); 17695: if(!(puzzle & 0xc0048l)) 17696: altDoSolve32(4, 0x10l, puzzle | 0xc0048l, partsUsed | 0x100l); 17697: if(!(puzzle & 0x80c8l)) 17698: altDoSolve32(4, 0x10l, puzzle | 0x80c8l, partsUsed | 0x100l); 17699: if(!(puzzle & 0x80098l)) 17700: altDoSolve32(4, 0x10l, puzzle | 0x80098l, partsUsed | 0x100l); 17701: altpiece9at3at32: 17702: if (partsUsed & 0x200l) goto altpiece10at3at32; 17703: if (!(puzzle & 0x9008l)) { 17704: if(!(puzzle & 0x1009208l)) 17705: altDoSolve32(4, 0x10l, puzzle | 0x1009208l, partsUsed | 0x200l); 17706: if(!(puzzle & 0x8009048l)) 17707: altDoSolve32(4, 0x10l, puzzle | 0x8009048l, partsUsed | 0x200l); 17708: if(!(puzzle & 0x40049008l)) 17709: altDoSolve32(4, 0x10l, puzzle | 0x40049008l, partsUsed | 0x200l); 17710: if(!(puzzle & 0x48009008l)) 17711: altDoSolve32(4, 0x10l, puzzle | 0x48009008l, partsUsed | 0x200l); 17712: if(!(puzzle & 0x1049008l)) 17713: altDoSolve32(4, 0x10l, puzzle | 0x1049008l, partsUsed | 0x200l); 17714: } 17715: if (!(puzzle & 0x8008008l)) { 17716: if(!(puzzle & 0x9048008l)) 17717: altDoSolve32(4, 0x10l, puzzle | 0x9048008l, partsUsed | 0x200l); 17718: if(!(puzzle & 0x800c018l)) 17719: altDoSolve32(4, 0x10l, puzzle | 0x800c018l, partsUsed | 0x200l); 17720: if(!(puzzle & 0x1800c008l)) 17721: altDoSolve32(4, 0x10l, puzzle | 0x1800c008l, partsUsed | 0x200l); 17722: if(!(puzzle & 0xc018008l)) 17723: altDoSolve32(4, 0x10l, puzzle | 0xc018008l, partsUsed | 0x200l); 17724: } 17725: if(!(puzzle & 0x401c008l)) 17726: altDoSolve32(4, 0x10l, puzzle | 0x401c008l, partsUsed | 0x200l); 17727: if(!(puzzle & 0x1001c008l)) 17728: altDoSolve32(4, 0x10l, puzzle | 0x1001c008l, partsUsed | 0x200l); 17729: altpiece10at3at32: 17730: if (partsUsed & 0x400l) goto altpiece11at3at32; 17731: if (!(puzzle & 0x48008l)) { 17732: if(!(puzzle & 0x8048048l)) 17733: altDoSolve32(4, 0x10l, puzzle | 0x8048048l, partsUsed | 0x400l); 17734: if(!(puzzle & 0x48048008l)) 17735: altDoSolve32(4, 0x10l, puzzle | 0x48048008l, partsUsed | 0x400l); 17736: if(!(puzzle & 0x40048048l)) 17737: altDoSolve32(4, 0x10l, puzzle | 0x40048048l, partsUsed | 0x400l); 17738: } 17739: if (!(puzzle & 0x18008l)) { 17740: if(!(puzzle & 0x10018018l)) 17741: altDoSolve32(4, 0x10l, puzzle | 0x10018018l, partsUsed | 0x400l); 17742: if(!(puzzle & 0x8018018l)) 17743: altDoSolve32(4, 0x10l, puzzle | 0x8018018l, partsUsed | 0x400l); 17744: if(!(puzzle & 0x18018008l)) 17745: altDoSolve32(4, 0x10l, puzzle | 0x18018008l, partsUsed | 0x400l); 17746: } 17747: if(!(puzzle & 0x9009008l)) 17748: altDoSolve32(4, 0x10l, puzzle | 0x9009008l, partsUsed | 0x400l); 17749: if(!(puzzle & 0x49048l)) 17750: altDoSolve32(4, 0x10l, puzzle | 0x49048l, partsUsed | 0x400l); 17751: if(!(puzzle & 0xf8l)) 17752: altDoSolve32(4, 0x10l, puzzle | 0xf8l, partsUsed | 0x400l); 17753: if(!(puzzle & 0x1c018l)) 17754: altDoSolve32(4, 0x10l, puzzle | 0x1c018l, partsUsed | 0x400l); 17755: if(!(puzzle & 0xc00c008l)) 17756: altDoSolve32(4, 0x10l, puzzle | 0xc00c008l, partsUsed | 0x400l); 17757: altpiece11at3at32: 17758: if (partsUsed & 0x800l) goto altpiece13at3at32; 17759: if (!(puzzle & 0x8018l)) { 17760: if(!(puzzle & 0x80d8l)) 17761: altDoSolve32(4, 0x10l, puzzle | 0x80d8l, partsUsed | 0x800l); 17762: if(!(puzzle & 0x58018l)) 17763: altDoSolve32(4, 0x10l, puzzle | 0x58018l, partsUsed | 0x800l); 17764: if(!(puzzle & 0x18058l)) 17765: altDoSolve32(4, 0x10l, puzzle | 0x18058l, partsUsed | 0x800l); 17766: if(!(puzzle & 0x18098l)) 17767: altDoSolve32(4, 0x10l, puzzle | 0x18098l, partsUsed | 0x800l); 17768: if(!(puzzle & 0x98018l)) 17769: altDoSolve32(4, 0x10l, puzzle | 0x98018l, partsUsed | 0x800l); 17770: if(!(puzzle & 0x48058l)) 17771: altDoSolve32(4, 0x10l, puzzle | 0x48058l, partsUsed | 0x800l); 17772: if(!(puzzle & 0x1a018l)) 17773: altDoSolve32(4, 0x10l, puzzle | 0x1a018l, partsUsed | 0x800l); 17774: if(!(puzzle & 0x19018l)) 17775: altDoSolve32(4, 0x10l, puzzle | 0x19018l, partsUsed | 0x800l); 17776: } 17777: if (!(puzzle & 0x80088l)) { 17778: if(!(puzzle & 0xc00c8l)) 17779: altDoSolve32(4, 0x10l, puzzle | 0xc00c8l, partsUsed | 0x800l); 17780: if(!(puzzle & 0x90098l)) 17781: altDoSolve32(4, 0x10l, puzzle | 0x90098l, partsUsed | 0x800l); 17782: if(!(puzzle & 0x800d8l)) 17783: altDoSolve32(4, 0x10l, puzzle | 0x800d8l, partsUsed | 0x800l); 17784: } 17785: if (!(puzzle & 0x40048l)) { 17786: if(!(puzzle & 0x58048l)) 17787: altDoSolve32(4, 0x10l, puzzle | 0x58048l, partsUsed | 0x800l); 17788: if(!(puzzle & 0x480c8l)) 17789: altDoSolve32(4, 0x10l, puzzle | 0x480c8l, partsUsed | 0x800l); 17790: if(!(puzzle & 0x400d8l)) 17791: altDoSolve32(4, 0x10l, puzzle | 0x400d8l, partsUsed | 0x800l); 17792: if(!(puzzle & 0xc8048l)) 17793: altDoSolve32(4, 0x10l, puzzle | 0xc8048l, partsUsed | 0x800l); 17794: if(!(puzzle & 0x68048l)) 17795: altDoSolve32(4, 0x10l, puzzle | 0x68048l, partsUsed | 0x800l); 17796: if(!(puzzle & 0x60068l)) 17797: altDoSolve32(4, 0x10l, puzzle | 0x60068l, partsUsed | 0x800l); 17798: if(!(puzzle & 0x4c048l)) 17799: altDoSolve32(4, 0x10l, puzzle | 0x4c048l, partsUsed | 0x800l); 17800: if(!(puzzle & 0x48068l)) 17801: altDoSolve32(4, 0x10l, puzzle | 0x48068l, partsUsed | 0x800l); 17802: } 17803: if(!(puzzle & 0x100d8l)) 17804: altDoSolve32(4, 0x10l, puzzle | 0x100d8l, partsUsed | 0x800l); 17805: if(!(puzzle & 0xd8008l)) 17806: altDoSolve32(4, 0x10l, puzzle | 0xd8008l, partsUsed | 0x800l); 17807: if(!(puzzle & 0x6c008l)) 17808: altDoSolve32(4, 0x10l, puzzle | 0x6c008l, partsUsed | 0x800l); 17809: if(!(puzzle & 0x1b008l)) 17810: altDoSolve32(4, 0x10l, puzzle | 0x1b008l, partsUsed | 0x800l); 17811: if(!(puzzle & 0xd808l)) 17812: altDoSolve32(4, 0x10l, puzzle | 0xd808l, partsUsed | 0x800l); 17813: altpiece13at3at32: 17814: break; 17815: case 4: 17816: if (partsUsed & 0x2l) goto altpiece2at4at32; 17817: if(!(puzzle & 0xc018010l)) 17818: altDoSolve32(5, 0x20l, puzzle | 0xc018010l, partsUsed | 0x2l); 17819: if(!(puzzle & 0x2412010l)) 17820: altDoSolve32(5, 0x20l, puzzle | 0x2412010l, partsUsed | 0x2l); 17821: if(!(puzzle & 0x2012090l)) 17822: altDoSolve32(5, 0x20l, puzzle | 0x2012090l, partsUsed | 0x2l); 17823: altpiece2at4at32: 17824: if (partsUsed & 0x4l) goto altpiece3at4at32; 17825: if (!(puzzle & 0x10010010l)) { 17826: if(!(puzzle & 0x10012410l)) 17827: altDoSolve32(5, 0x20l, puzzle | 0x10012410l, partsUsed | 0x4l); 17828: if(!(puzzle & 0x92010010l)) 17829: altDoSolve32(5, 0x20l, puzzle | 0x92010010l, partsUsed | 0x4l); 17830: if(!(puzzle & 0x1001c010l)) 17831: altDoSolve32(5, 0x20l, puzzle | 0x1001c010l, partsUsed | 0x4l); 17832: } 17833: altpiece3at4at32: 17834: if (partsUsed & 0x8l) goto altpiece4at4at32; 17835: if(!(puzzle & 0x401c010l)) 17836: altDoSolve32(5, 0x20l, puzzle | 0x401c010l, partsUsed | 0x8l); 17837: if(!(puzzle & 0x412410l)) 17838: altDoSolve32(5, 0x20l, puzzle | 0x412410l, partsUsed | 0x8l); 17839: if(!(puzzle & 0x12010090l)) 17840: altDoSolve32(5, 0x20l, puzzle | 0x12010090l, partsUsed | 0x8l); 17841: altpiece4at4at32: 17842: if (partsUsed & 0x40l) goto altpiece7at4at32; 17843: if(!(puzzle & 0x92410l)) 17844: altDoSolve32(5, 0x20l, puzzle | 0x92410l, partsUsed | 0x40l); 17845: altpiece7at4at32: 17846: if (partsUsed & 0x80l) goto altpiece8at4at32; 17847: if(!(puzzle & 0x90010090l)) 17848: altDoSolve32(5, 0x20l, puzzle | 0x90010090l, partsUsed | 0x80l); 17849: if(!(puzzle & 0x90080090l)) 17850: altDoSolve32(5, 0x20l, puzzle | 0x90080090l, partsUsed | 0x80l); 17851: altpiece8at4at32: 17852: if (partsUsed & 0x100l) goto altpiece9at4at32; 17853: if(!(puzzle & 0x19010l)) 17854: altDoSolve32(5, 0x20l, puzzle | 0x19010l, partsUsed | 0x100l); 17855: if(!(puzzle & 0x18090l)) 17856: altDoSolve32(5, 0x20l, puzzle | 0x18090l, partsUsed | 0x100l); 17857: if(!(puzzle & 0x400d0l)) 17858: altDoSolve32(5, 0x20l, puzzle | 0x400d0l, partsUsed | 0x100l); 17859: if(!(puzzle & 0xd0010l)) 17860: altDoSolve32(5, 0x20l, puzzle | 0xd0010l, partsUsed | 0x100l); 17861: altpiece9at4at32: 17862: if (partsUsed & 0x200l) goto altpiece10at4at32; 17863: if (!(puzzle & 0x12010l)) { 17864: if(!(puzzle & 0x2012410l)) 17865: altDoSolve32(5, 0x20l, puzzle | 0x2012410l, partsUsed | 0x200l); 17866: if(!(puzzle & 0x10012090l)) 17867: altDoSolve32(5, 0x20l, puzzle | 0x10012090l, partsUsed | 0x200l); 17868: if(!(puzzle & 0x80092010l)) 17869: altDoSolve32(5, 0x20l, puzzle | 0x80092010l, partsUsed | 0x200l); 17870: if(!(puzzle & 0x90012010l)) 17871: altDoSolve32(5, 0x20l, puzzle | 0x90012010l, partsUsed | 0x200l); 17872: if(!(puzzle & 0x2092010l)) 17873: altDoSolve32(5, 0x20l, puzzle | 0x2092010l, partsUsed | 0x200l); 17874: } 17875: if(!(puzzle & 0x12090010l)) 17876: altDoSolve32(5, 0x20l, puzzle | 0x12090010l, partsUsed | 0x200l); 17877: if(!(puzzle & 0x801c010l)) 17878: altDoSolve32(5, 0x20l, puzzle | 0x801c010l, partsUsed | 0x200l); 17879: altpiece10at4at32: 17880: if (partsUsed & 0x400l) goto altpiece11at4at32; 17881: if (!(puzzle & 0x10010010l)) { 17882: if(!(puzzle & 0x18018010l)) 17883: altDoSolve32(5, 0x20l, puzzle | 0x18018010l, partsUsed | 0x400l); 17884: if(!(puzzle & 0x10090090l)) 17885: altDoSolve32(5, 0x20l, puzzle | 0x10090090l, partsUsed | 0x400l); 17886: if(!(puzzle & 0x90090010l)) 17887: altDoSolve32(5, 0x20l, puzzle | 0x90090010l, partsUsed | 0x400l); 17888: } 17889: if(!(puzzle & 0x12012010l)) 17890: altDoSolve32(5, 0x20l, puzzle | 0x12012010l, partsUsed | 0x400l); 17891: if(!(puzzle & 0x92090l)) 17892: altDoSolve32(5, 0x20l, puzzle | 0x92090l, partsUsed | 0x400l); 17893: if(!(puzzle & 0x80090090l)) 17894: altDoSolve32(5, 0x20l, puzzle | 0x80090090l, partsUsed | 0x400l); 17895: altpiece11at4at32: 17896: if (partsUsed & 0x800l) goto altpiece13at4at32; 17897: if (!(puzzle & 0xc0010l)) { 17898: if(!(puzzle & 0xd8010l)) 17899: altDoSolve32(5, 0x20l, puzzle | 0xd8010l, partsUsed | 0x800l); 17900: if(!(puzzle & 0xd0090l)) 17901: altDoSolve32(5, 0x20l, puzzle | 0xd0090l, partsUsed | 0x800l); 17902: if(!(puzzle & 0xc00d0l)) 17903: altDoSolve32(5, 0x20l, puzzle | 0xc00d0l, partsUsed | 0x800l); 17904: } 17905: if(!(puzzle & 0x98090l)) 17906: altDoSolve32(5, 0x20l, puzzle | 0x98090l, partsUsed | 0x800l); 17907: if(!(puzzle & 0x900d0l)) 17908: altDoSolve32(5, 0x20l, puzzle | 0x900d0l, partsUsed | 0x800l); 17909: if(!(puzzle & 0x1b010l)) 17910: altDoSolve32(5, 0x20l, puzzle | 0x1b010l, partsUsed | 0x800l); 17911: altpiece13at4at32: 17912: break; 17913: case 5: 17914: if (partsUsed & 0x2l) goto altpiece2at5at32; 17915: if(!(puzzle & 0x4824020l)) 17916: altDoSolve32(6, 0x40l, puzzle | 0x4824020l, partsUsed | 0x2l); 17917: if(!(puzzle & 0x800c0060l)) 17918: altDoSolve32(6, 0x40l, puzzle | 0x800c0060l, partsUsed | 0x2l); 17919: if(!(puzzle & 0xc0060020l)) 17920: altDoSolve32(6, 0x40l, puzzle | 0xc0060020l, partsUsed | 0x2l); 17921: altpiece2at5at32: 17922: if (partsUsed & 0x4l) goto altpiece3at5at32; 17923: if(!(puzzle & 0x400400e0l)) 17924: altDoSolve32(6, 0x40l, puzzle | 0x400400e0l, partsUsed | 0x4l); 17925: if(!(puzzle & 0x20024820l)) 17926: altDoSolve32(6, 0x40l, puzzle | 0x20024820l, partsUsed | 0x4l); 17927: if(!(puzzle & 0x200e0020l)) 17928: altDoSolve32(6, 0x40l, puzzle | 0x200e0020l, partsUsed | 0x4l); 17929: altpiece3at5at32: 17930: if (partsUsed & 0x8l) goto altpiece4at5at32; 17931: if(!(puzzle & 0x824820l)) 17932: altDoSolve32(6, 0x40l, puzzle | 0x824820l, partsUsed | 0x8l); 17933: if(!(puzzle & 0x800e0020l)) 17934: altDoSolve32(6, 0x40l, puzzle | 0x800e0020l, partsUsed | 0x8l); 17935: if(!(puzzle & 0xc0040060l)) 17936: altDoSolve32(6, 0x40l, puzzle | 0xc0040060l, partsUsed | 0x8l); 17937: altpiece4at5at32: 17938: if (partsUsed & 0x20l) goto altpiece6at5at32; 17939: if(!(puzzle & 0x24920l)) 17940: altDoSolve32(6, 0x40l, puzzle | 0x24920l, partsUsed | 0x20l); 17941: altpiece6at5at32: 17942: if (partsUsed & 0x80l) goto altpiece8at5at32; 17943: if(!(puzzle & 0x60040060l)) 17944: altDoSolve32(6, 0x40l, puzzle | 0x60040060l, partsUsed | 0x80l); 17945: if(!(puzzle & 0x60020060l)) 17946: altDoSolve32(6, 0x40l, puzzle | 0x60020060l, partsUsed | 0x80l); 17947: if(!(puzzle & 0xe00a0l)) 17948: altDoSolve32(6, 0x40l, puzzle | 0xe00a0l, partsUsed | 0x80l); 17949: if(!(puzzle & 0xa00e0l)) 17950: altDoSolve32(6, 0x40l, puzzle | 0xa00e0l, partsUsed | 0x80l); 17951: altpiece8at5at32: 17952: if (partsUsed & 0x100l) goto altpiece9at5at32; 17953: if(!(puzzle & 0x48060l)) 17954: altDoSolve32(6, 0x40l, puzzle | 0x48060l, partsUsed | 0x100l); 17955: if(!(puzzle & 0x2c020l)) 17956: altDoSolve32(6, 0x40l, puzzle | 0x2c020l, partsUsed | 0x100l); 17957: altpiece9at5at32: 17958: if (partsUsed & 0x200l) goto altpiece10at5at32; 17959: if(!(puzzle & 0x4024820l)) 17960: altDoSolve32(6, 0x40l, puzzle | 0x4024820l, partsUsed | 0x200l); 17961: if(!(puzzle & 0x400c0060l)) 17962: altDoSolve32(6, 0x40l, puzzle | 0x400c0060l, partsUsed | 0x200l); 17963: if(!(puzzle & 0x400e0020l)) 17964: altDoSolve32(6, 0x40l, puzzle | 0x400e0020l, partsUsed | 0x200l); 17965: altpiece10at5at32: 17966: if (partsUsed & 0x400l) goto altpiece11at5at32; 17967: if (!(puzzle & 0x20020020l)) { 17968: if(!(puzzle & 0x24024020l)) 17969: altDoSolve32(6, 0x40l, puzzle | 0x24024020l, partsUsed | 0x400l); 17970: if(!(puzzle & 0x20060060l)) 17971: altDoSolve32(6, 0x40l, puzzle | 0x20060060l, partsUsed | 0x400l); 17972: if(!(puzzle & 0x60060020l)) 17973: altDoSolve32(6, 0x40l, puzzle | 0x60060020l, partsUsed | 0x400l); 17974: } 17975: if (!(puzzle & 0x40060l)) { 17976: if(!(puzzle & 0x40060060l)) 17977: altDoSolve32(6, 0x40l, puzzle | 0x40060060l, partsUsed | 0x400l); 17978: if(!(puzzle & 0xe0060l)) 17979: altDoSolve32(6, 0x40l, puzzle | 0xe0060l, partsUsed | 0x400l); 17980: if(!(puzzle & 0x600e0l)) 17981: altDoSolve32(6, 0x40l, puzzle | 0x600e0l, partsUsed | 0x400l); 17982: if(!(puzzle & 0xc00e0l)) 17983: altDoSolve32(6, 0x40l, puzzle | 0xc00e0l, partsUsed | 0x400l); 17984: } 17985: altpiece11at5at32: 17986: if (partsUsed & 0x800l) goto altpiece13at5at32; 17987: if (!(puzzle & 0x60020l)) { 17988: if(!(puzzle & 0x6c020l)) 17989: altDoSolve32(6, 0x40l, puzzle | 0x6c020l, partsUsed | 0x800l); 17990: if(!(puzzle & 0x68060l)) 17991: altDoSolve32(6, 0x40l, puzzle | 0x68060l, partsUsed | 0x800l); 17992: if(!(puzzle & 0x64060l)) 17993: altDoSolve32(6, 0x40l, puzzle | 0x64060l, partsUsed | 0x800l); 17994: } 17995: altpiece13at5at32: 17996: break; 17997: case 6: 17998: if (partsUsed & 0x2l) goto altpiece2at6at32; 17999: if(!(puzzle & 0x9048040l)) 18000: altDoSolve32(7, 0x80l, puzzle | 0x9048040l, partsUsed | 0x2l); 18001: if(!(puzzle & 0x200600c0l)) 18002: altDoSolve32(7, 0x80l, puzzle | 0x200600c0l, partsUsed | 0x2l); 18003: altpiece2at6at32: 18004: if (partsUsed & 0x4l) goto altpiece3at6at32; 18005: if(!(puzzle & 0x40049040l)) 18006: altDoSolve32(7, 0x80l, puzzle | 0x40049040l, partsUsed | 0x4l); 18007: if(!(puzzle & 0xe0040040l)) 18008: altDoSolve32(7, 0x80l, puzzle | 0xe0040040l, partsUsed | 0x4l); 18009: altpiece3at6at32: 18010: if (partsUsed & 0x8l) goto altpiece4at6at32; 18011: if(!(puzzle & 0x1049040l)) 18012: altDoSolve32(7, 0x80l, puzzle | 0x1049040l, partsUsed | 0x8l); 18013: if(!(puzzle & 0x600400c0l)) 18014: altDoSolve32(7, 0x80l, puzzle | 0x600400c0l, partsUsed | 0x8l); 18015: altpiece4at6at32: 18016: if (partsUsed & 0x20l) goto altpiece6at6at32; 18017: if(!(puzzle & 0x49240l)) 18018: altDoSolve32(7, 0x80l, puzzle | 0x49240l, partsUsed | 0x20l); 18019: altpiece6at6at32: 18020: if (partsUsed & 0x80l) goto altpiece8at6at32; 18021: if(!(puzzle & 0xc00800c0l)) 18022: altDoSolve32(7, 0x80l, puzzle | 0xc00800c0l, partsUsed | 0x80l); 18023: if(!(puzzle & 0xc00400c0l)) 18024: altDoSolve32(7, 0x80l, puzzle | 0xc00400c0l, partsUsed | 0x80l); 18025: altpiece8at6at32: 18026: if (partsUsed & 0x100l) goto altpiece9at6at32; 18027: if(!(puzzle & 0x58040l)) 18028: altDoSolve32(7, 0x80l, puzzle | 0x58040l, partsUsed | 0x100l); 18029: if(!(puzzle & 0x64040l)) 18030: altDoSolve32(7, 0x80l, puzzle | 0x64040l, partsUsed | 0x100l); 18031: if(!(puzzle & 0x900c0l)) 18032: altDoSolve32(7, 0x80l, puzzle | 0x900c0l, partsUsed | 0x100l); 18033: altpiece9at6at32: 18034: if (partsUsed & 0x200l) goto altpiece10at6at32; 18035: if (!(puzzle & 0x40040040l)) { 18036: if(!(puzzle & 0x400600c0l)) 18037: altDoSolve32(7, 0x80l, puzzle | 0x400600c0l, partsUsed | 0x200l); 18038: if(!(puzzle & 0xc0060040l)) 18039: altDoSolve32(7, 0x80l, puzzle | 0xc0060040l, partsUsed | 0x200l); 18040: if(!(puzzle & 0x600c0040l)) 18041: altDoSolve32(7, 0x80l, puzzle | 0x600c0040l, partsUsed | 0x200l); 18042: } 18043: if(!(puzzle & 0x8049040l)) 18044: altDoSolve32(7, 0x80l, puzzle | 0x8049040l, partsUsed | 0x200l); 18045: if(!(puzzle & 0x200e0040l)) 18046: altDoSolve32(7, 0x80l, puzzle | 0x200e0040l, partsUsed | 0x200l); 18047: if(!(puzzle & 0x800e0040l)) 18048: altDoSolve32(7, 0x80l, puzzle | 0x800e0040l, partsUsed | 0x200l); 18049: altpiece10at6at32: 18050: if (partsUsed & 0x400l) goto altpiece11at6at32; 18051: if (!(puzzle & 0x40040040l)) { 18052: if(!(puzzle & 0x48048040l)) 18053: altDoSolve32(7, 0x80l, puzzle | 0x48048040l, partsUsed | 0x400l); 18054: if(!(puzzle & 0x60060040l)) 18055: altDoSolve32(7, 0x80l, puzzle | 0x60060040l, partsUsed | 0x400l); 18056: if(!(puzzle & 0x400c00c0l)) 18057: altDoSolve32(7, 0x80l, puzzle | 0x400c00c0l, partsUsed | 0x400l); 18058: if(!(puzzle & 0xc00c0040l)) 18059: altDoSolve32(7, 0x80l, puzzle | 0xc00c0040l, partsUsed | 0x400l); 18060: } 18061: if(!(puzzle & 0xe00c0l)) 18062: altDoSolve32(7, 0x80l, puzzle | 0xe00c0l, partsUsed | 0x400l); 18063: if(!(puzzle & 0x800c00c0l)) 18064: altDoSolve32(7, 0x80l, puzzle | 0x800c00c0l, partsUsed | 0x400l); 18065: altpiece11at6at32: 18066: if (partsUsed & 0x800l) goto altpiece13at6at32; 18067: if (!(puzzle & 0xc0040l)) { 18068: if(!(puzzle & 0xd8040l)) 18069: altDoSolve32(7, 0x80l, puzzle | 0xd8040l, partsUsed | 0x800l); 18070: if(!(puzzle & 0xd00c0l)) 18071: altDoSolve32(7, 0x80l, puzzle | 0xd00c0l, partsUsed | 0x800l); 18072: if(!(puzzle & 0xc80c0l)) 18073: altDoSolve32(7, 0x80l, puzzle | 0xc80c0l, partsUsed | 0x800l); 18074: } 18075: if(!(puzzle & 0x6c040l)) 18076: altDoSolve32(7, 0x80l, puzzle | 0x6c040l, partsUsed | 0x800l); 18077: altpiece13at6at32: 18078: break; 18079: case 7: 18080: if (partsUsed & 0x2l) goto altpiece2at7at32; 18081: if(!(puzzle & 0x12090080l)) 18082: altDoSolve32(8, 0x100l, puzzle | 0x12090080l, partsUsed | 0x2l); 18083: if(!(puzzle & 0x600c0080l)) 18084: altDoSolve32(8, 0x100l, puzzle | 0x600c0080l, partsUsed | 0x2l); 18085: altpiece2at7at32: 18086: if (partsUsed & 0x4l) goto altpiece3at7at32; 18087: if(!(puzzle & 0x80092080l)) 18088: altDoSolve32(8, 0x100l, puzzle | 0x80092080l, partsUsed | 0x4l); 18089: if(!(puzzle & 0x800e0080l)) 18090: altDoSolve32(8, 0x100l, puzzle | 0x800e0080l, partsUsed | 0x4l); 18091: altpiece3at7at32: 18092: if (partsUsed & 0x8l) goto altpiece4at7at32; 18093: if(!(puzzle & 0x2092080l)) 18094: altDoSolve32(8, 0x100l, puzzle | 0x2092080l, partsUsed | 0x8l); 18095: if(!(puzzle & 0x200e0080l)) 18096: altDoSolve32(8, 0x100l, puzzle | 0x200e0080l, partsUsed | 0x8l); 18097: altpiece4at7at32: 18098: if (partsUsed & 0x20l) goto altpiece6at7at32; 18099: if(!(puzzle & 0x92480l)) 18100: altDoSolve32(8, 0x100l, puzzle | 0x92480l, partsUsed | 0x20l); 18101: altpiece6at7at32: 18102: if (partsUsed & 0x100l) goto altpiece9at7at32; 18103: if(!(puzzle & 0xc8080l)) 18104: altDoSolve32(8, 0x100l, puzzle | 0xc8080l, partsUsed | 0x100l); 18105: altpiece9at7at32: 18106: if (partsUsed & 0x200l) goto altpiece10at7at32; 18107: if(!(puzzle & 0x10092080l)) 18108: altDoSolve32(8, 0x100l, puzzle | 0x10092080l, partsUsed | 0x200l); 18109: if(!(puzzle & 0x400e0080l)) 18110: altDoSolve32(8, 0x100l, puzzle | 0x400e0080l, partsUsed | 0x200l); 18111: altpiece10at7at32: 18112: if (partsUsed & 0x400l) goto altpiece11at7at32; 18113: if(!(puzzle & 0x90090080l)) 18114: altDoSolve32(8, 0x100l, puzzle | 0x90090080l, partsUsed | 0x400l); 18115: if(!(puzzle & 0xc00c0080l)) 18116: altDoSolve32(8, 0x100l, puzzle | 0xc00c0080l, partsUsed | 0x400l); 18117: altpiece11at7at32: 18118: if (partsUsed & 0x800l) goto altpiece13at7at32; 18119: if(!(puzzle & 0xd8080l)) 18120: altDoSolve32(8, 0x100l, puzzle | 0xd8080l, partsUsed | 0x800l); 18121: altpiece13at7at32: 18122: break; 18123: case 8: 18124: if (partsUsed & 0x2l) goto altpiece2at8at32; 18125: if(!(puzzle & 0x13300l)) 18126: altDoSolve32(9, 0x200l, puzzle | 0x13300l, partsUsed | 0x2l); 18127: if(!(puzzle & 0x19900l)) 18128: altDoSolve32(9, 0x200l, puzzle | 0x19900l, partsUsed | 0x2l); 18129: altpiece2at8at32: 18130: if (partsUsed & 0x4l) goto altpiece3at8at32; 18131: if(!(puzzle & 0x9700l)) 18132: altDoSolve32(9, 0x200l, puzzle | 0x9700l, partsUsed | 0x4l); 18133: if(!(puzzle & 0x7900l)) 18134: altDoSolve32(9, 0x200l, puzzle | 0x7900l, partsUsed | 0x4l); 18135: altpiece3at8at32: 18136: if (partsUsed & 0x8l) goto altpiece4at8at32; 18137: if(!(puzzle & 0x19300l)) 18138: altDoSolve32(9, 0x200l, puzzle | 0x19300l, partsUsed | 0x8l); 18139: if(!(puzzle & 0x13900l)) 18140: altDoSolve32(9, 0x200l, puzzle | 0x13900l, partsUsed | 0x8l); 18141: altpiece4at8at32: 18142: if (partsUsed & 0x10l) goto altpiece5at8at32; 18143: if (!(puzzle & 0x24900l)) { 18144: if(!(puzzle & 0x4124900l)) 18145: altDoSolve32(9, 0x200l, puzzle | 0x4124900l, partsUsed | 0x10l); 18146: if(!(puzzle & 0x65900l)) 18147: altDoSolve32(9, 0x200l, puzzle | 0x65900l, partsUsed | 0x10l); 18148: if(!(puzzle & 0x20824900l)) 18149: altDoSolve32(9, 0x200l, puzzle | 0x20824900l, partsUsed | 0x10l); 18150: if(!(puzzle & 0x2cb00l)) 18151: altDoSolve32(9, 0x200l, puzzle | 0x2cb00l, partsUsed | 0x10l); 18152: } 18153: if(!(puzzle & 0x4d300l)) 18154: altDoSolve32(9, 0x200l, puzzle | 0x4d300l, partsUsed | 0x10l); 18155: if(!(puzzle & 0x24904100l)) 18156: altDoSolve32(9, 0x200l, puzzle | 0x24904100l, partsUsed | 0x10l); 18157: altpiece5at8at32: 18158: if (partsUsed & 0x20l) goto altpiece6at8at32; 18159: if (!(puzzle & 0x24900l)) { 18160: if(!(puzzle & 0x20024900l)) 18161: altDoSolve32(9, 0x200l, puzzle | 0x20024900l, partsUsed | 0x20l); 18162: if(!(puzzle & 0x24b00l)) 18163: altDoSolve32(9, 0x200l, puzzle | 0x24b00l, partsUsed | 0x20l); 18164: if(!(puzzle & 0x124900l)) 18165: altDoSolve32(9, 0x200l, puzzle | 0x124900l, partsUsed | 0x20l); 18166: if(!(puzzle & 0x64900l)) 18167: altDoSolve32(9, 0x200l, puzzle | 0x64900l, partsUsed | 0x20l); 18168: } 18169: if(!(puzzle & 0x24900100l)) 18170: altDoSolve32(9, 0x200l, puzzle | 0x24900100l, partsUsed | 0x20l); 18171: if(!(puzzle & 0x49300l)) 18172: altDoSolve32(9, 0x200l, puzzle | 0x49300l, partsUsed | 0x20l); 18173: altpiece6at8at32: 18174: if (partsUsed & 0x40l) goto altpiece7at8at32; 18175: if (!(puzzle & 0x24900l)) { 18176: if(!(puzzle & 0x4024900l)) 18177: altDoSolve32(9, 0x200l, puzzle | 0x4024900l, partsUsed | 0x40l); 18178: if(!(puzzle & 0x25900l)) 18179: altDoSolve32(9, 0x200l, puzzle | 0x25900l, partsUsed | 0x40l); 18180: if(!(puzzle & 0x824900l)) 18181: altDoSolve32(9, 0x200l, puzzle | 0x824900l, partsUsed | 0x40l); 18182: if(!(puzzle & 0x2c900l)) 18183: altDoSolve32(9, 0x200l, puzzle | 0x2c900l, partsUsed | 0x40l); 18184: } 18185: altpiece7at8at32: 18186: if (partsUsed & 0x80l) goto altpiece8at8at32; 18187: if(!(puzzle & 0x4904100l)) 18188: altDoSolve32(9, 0x200l, puzzle | 0x4904100l, partsUsed | 0x80l); 18189: if(!(puzzle & 0x4104900l)) 18190: altDoSolve32(9, 0x200l, puzzle | 0x4104900l, partsUsed | 0x80l); 18191: if(!(puzzle & 0x2f00l)) 18192: altDoSolve32(9, 0x200l, puzzle | 0x2f00l, partsUsed | 0x80l); 18193: if(!(puzzle & 0xcb00l)) 18194: altDoSolve32(9, 0x200l, puzzle | 0xcb00l, partsUsed | 0x80l); 18195: if(!(puzzle & 0xd300l)) 18196: altDoSolve32(9, 0x200l, puzzle | 0xd300l, partsUsed | 0x80l); 18197: if(!(puzzle & 0x3d00l)) 18198: altDoSolve32(9, 0x200l, puzzle | 0x3d00l, partsUsed | 0x80l); 18199: if(!(puzzle & 0x700500l)) 18200: altDoSolve32(9, 0x200l, puzzle | 0x700500l, partsUsed | 0x80l); 18201: if(!(puzzle & 0x500700l)) 18202: altDoSolve32(9, 0x200l, puzzle | 0x500700l, partsUsed | 0x80l); 18203: altpiece8at8at32: 18204: if (partsUsed & 0x100l) goto altpiece9at8at32; 18205: if(!(puzzle & 0x1001300l)) 18206: altDoSolve32(9, 0x200l, puzzle | 0x1001300l, partsUsed | 0x100l); 18207: if(!(puzzle & 0x1300100l)) 18208: altDoSolve32(9, 0x200l, puzzle | 0x1300100l, partsUsed | 0x100l); 18209: if(!(puzzle & 0x200b00l)) 18210: altDoSolve32(9, 0x200l, puzzle | 0x200b00l, partsUsed | 0x100l); 18211: if(!(puzzle & 0x900300l)) 18212: altDoSolve32(9, 0x200l, puzzle | 0x900300l, partsUsed | 0x100l); 18213: if(!(puzzle & 0x1800900l)) 18214: altDoSolve32(9, 0x200l, puzzle | 0x1800900l, partsUsed | 0x100l); 18215: if(!(puzzle & 0x101900l)) 18216: altDoSolve32(9, 0x200l, puzzle | 0x101900l, partsUsed | 0x100l); 18217: altpiece9at8at32: 18218: if (partsUsed & 0x200l) goto altpiece10at8at32; 18219: if(!(puzzle & 0xb300l)) 18220: altDoSolve32(9, 0x200l, puzzle | 0xb300l, partsUsed | 0x200l); 18221: if(!(puzzle & 0xb900l)) 18222: altDoSolve32(9, 0x200l, puzzle | 0xb900l, partsUsed | 0x200l); 18223: altpiece10at8at32: 18224: if (partsUsed & 0x400l) goto altpiece11at8at32; 18225: if (!(puzzle & 0x800900l)) { 18226: if(!(puzzle & 0x4900900l)) 18227: altDoSolve32(9, 0x200l, puzzle | 0x4900900l, partsUsed | 0x400l); 18228: if(!(puzzle & 0x4804900l)) 18229: altDoSolve32(9, 0x200l, puzzle | 0x4804900l, partsUsed | 0x400l); 18230: if(!(puzzle & 0x904900l)) 18231: altDoSolve32(9, 0x200l, puzzle | 0x904900l, partsUsed | 0x400l); 18232: } 18233: if (!(puzzle & 0x1300l)) { 18234: if(!(puzzle & 0x3700l)) 18235: altDoSolve32(9, 0x200l, puzzle | 0x3700l, partsUsed | 0x400l); 18236: if(!(puzzle & 0x1f00l)) 18237: altDoSolve32(9, 0x200l, puzzle | 0x1f00l, partsUsed | 0x400l); 18238: if(!(puzzle & 0x5b00l)) 18239: altDoSolve32(9, 0x200l, puzzle | 0x5b00l, partsUsed | 0x400l); 18240: if(!(puzzle & 0x9b00l)) 18241: altDoSolve32(9, 0x200l, puzzle | 0x9b00l, partsUsed | 0x400l); 18242: if(!(puzzle & 0x3b00l)) 18243: altDoSolve32(9, 0x200l, puzzle | 0x3b00l, partsUsed | 0x400l); 18244: } 18245: if (!(puzzle & 0x200300l)) { 18246: if(!(puzzle & 0x700300l)) 18247: altDoSolve32(9, 0x200l, puzzle | 0x700300l, partsUsed | 0x400l); 18248: if(!(puzzle & 0x300700l)) 18249: altDoSolve32(9, 0x200l, puzzle | 0x300700l, partsUsed | 0x400l); 18250: if(!(puzzle & 0x600700l)) 18251: altDoSolve32(9, 0x200l, puzzle | 0x600700l, partsUsed | 0x400l); 18252: } 18253: if(!(puzzle & 0xd900l)) 18254: altDoSolve32(9, 0x200l, puzzle | 0xd900l, partsUsed | 0x400l); 18255: altpiece11at8at32: 18256: if (partsUsed & 0x800l) goto altpiece13at8at32; 18257: if (!(puzzle & 0x100300l)) { 18258: if(!(puzzle & 0x101b00l)) 18259: altDoSolve32(9, 0x200l, puzzle | 0x101b00l, partsUsed | 0x800l); 18260: if(!(puzzle & 0xb00300l)) 18261: altDoSolve32(9, 0x200l, puzzle | 0xb00300l, partsUsed | 0x800l); 18262: if(!(puzzle & 0x300b00l)) 18263: altDoSolve32(9, 0x200l, puzzle | 0x300b00l, partsUsed | 0x800l); 18264: if(!(puzzle & 0x301300l)) 18265: altDoSolve32(9, 0x200l, puzzle | 0x301300l, partsUsed | 0x800l); 18266: if(!(puzzle & 0x1300300l)) 18267: altDoSolve32(9, 0x200l, puzzle | 0x1300300l, partsUsed | 0x800l); 18268: if(!(puzzle & 0x900b00l)) 18269: altDoSolve32(9, 0x200l, puzzle | 0x900b00l, partsUsed | 0x800l); 18270: } 18271: if (!(puzzle & 0x1001100l)) { 18272: if(!(puzzle & 0x1801900l)) 18273: altDoSolve32(9, 0x200l, puzzle | 0x1801900l, partsUsed | 0x800l); 18274: if(!(puzzle & 0x1201300l)) 18275: altDoSolve32(9, 0x200l, puzzle | 0x1201300l, partsUsed | 0x800l); 18276: if(!(puzzle & 0x1001b00l)) 18277: altDoSolve32(9, 0x200l, puzzle | 0x1001b00l, partsUsed | 0x800l); 18278: } 18279: if (!(puzzle & 0x800900l)) { 18280: if(!(puzzle & 0xb00900l)) 18281: altDoSolve32(9, 0x200l, puzzle | 0xb00900l, partsUsed | 0x800l); 18282: if(!(puzzle & 0x901900l)) 18283: altDoSolve32(9, 0x200l, puzzle | 0x901900l, partsUsed | 0x800l); 18284: if(!(puzzle & 0x801b00l)) 18285: altDoSolve32(9, 0x200l, puzzle | 0x801b00l, partsUsed | 0x800l); 18286: if(!(puzzle & 0x1900900l)) 18287: altDoSolve32(9, 0x200l, puzzle | 0x1900900l, partsUsed | 0x800l); 18288: } 18289: if(!(puzzle & 0x201b00l)) 18290: altDoSolve32(9, 0x200l, puzzle | 0x201b00l, partsUsed | 0x800l); 18291: if(!(puzzle & 0x1b00100l)) 18292: altDoSolve32(9, 0x200l, puzzle | 0x1b00100l, partsUsed | 0x800l); 18293: altpiece13at8at32: 18294: break; 18295: case 9: 18296: if (partsUsed & 0x2l) goto altpiece2at9at32; 18297: if(!(puzzle & 0x5e00l)) 18298: altDoSolve32(10, 0x400l, puzzle | 0x5e00l, partsUsed | 0x2l); 18299: altpiece2at9at32: 18300: if (partsUsed & 0x4l) goto altpiece3at9at32; 18301: if(!(puzzle & 0x1d200l)) 18302: altDoSolve32(10, 0x400l, puzzle | 0x1d200l, partsUsed | 0x4l); 18303: altpiece3at9at32: 18304: if (partsUsed & 0x8l) goto altpiece4at9at32; 18305: if(!(puzzle & 0xd600l)) 18306: altDoSolve32(10, 0x400l, puzzle | 0xd600l, partsUsed | 0x8l); 18307: altpiece4at9at32: 18308: if (partsUsed & 0x10l) goto altpiece5at9at32; 18309: if (!(puzzle & 0x49200l)) { 18310: if(!(puzzle & 0x69a00l)) 18311: altDoSolve32(10, 0x400l, puzzle | 0x69a00l, partsUsed | 0x10l); 18312: if(!(puzzle & 0x8249200l)) 18313: altDoSolve32(10, 0x400l, puzzle | 0x8249200l, partsUsed | 0x10l); 18314: if(!(puzzle & 0xcb200l)) 18315: altDoSolve32(10, 0x400l, puzzle | 0xcb200l, partsUsed | 0x10l); 18316: if(!(puzzle & 0x41049200l)) 18317: altDoSolve32(10, 0x400l, puzzle | 0x41049200l, partsUsed | 0x10l); 18318: if(!(puzzle & 0x59600l)) 18319: altDoSolve32(10, 0x400l, puzzle | 0x59600l, partsUsed | 0x10l); 18320: } 18321: if(!(puzzle & 0x9a600l)) 18322: altDoSolve32(10, 0x400l, puzzle | 0x9a600l, partsUsed | 0x10l); 18323: if(!(puzzle & 0x49208200l)) 18324: altDoSolve32(10, 0x400l, puzzle | 0x49208200l, partsUsed | 0x10l); 18325: altpiece5at9at32: 18326: if (partsUsed & 0x20l) goto altpiece6at9at32; 18327: if (!(puzzle & 0x49200l)) { 18328: if(!(puzzle & 0x69200l)) 18329: altDoSolve32(10, 0x400l, puzzle | 0x69200l, partsUsed | 0x20l); 18330: if(!(puzzle & 0x40049200l)) 18331: altDoSolve32(10, 0x400l, puzzle | 0x40049200l, partsUsed | 0x20l); 18332: if(!(puzzle & 0x49600l)) 18333: altDoSolve32(10, 0x400l, puzzle | 0x49600l, partsUsed | 0x20l); 18334: if(!(puzzle & 0x249200l)) 18335: altDoSolve32(10, 0x400l, puzzle | 0x249200l, partsUsed | 0x20l); 18336: if(!(puzzle & 0xc9200l)) 18337: altDoSolve32(10, 0x400l, puzzle | 0xc9200l, partsUsed | 0x20l); 18338: } 18339: if(!(puzzle & 0x49200200l)) 18340: altDoSolve32(10, 0x400l, puzzle | 0x49200200l, partsUsed | 0x20l); 18341: if(!(puzzle & 0x92600l)) 18342: altDoSolve32(10, 0x400l, puzzle | 0x92600l, partsUsed | 0x20l); 18343: altpiece6at9at32: 18344: if (partsUsed & 0x40l) goto altpiece7at9at32; 18345: if (!(puzzle & 0x49200l)) { 18346: if(!(puzzle & 0x49a00l)) 18347: altDoSolve32(10, 0x400l, puzzle | 0x49a00l, partsUsed | 0x40l); 18348: if(!(puzzle & 0x4d200l)) 18349: altDoSolve32(10, 0x400l, puzzle | 0x4d200l, partsUsed | 0x40l); 18350: if(!(puzzle & 0x8049200l)) 18351: altDoSolve32(10, 0x400l, puzzle | 0x8049200l, partsUsed | 0x40l); 18352: if(!(puzzle & 0x4b200l)) 18353: altDoSolve32(10, 0x400l, puzzle | 0x4b200l, partsUsed | 0x40l); 18354: if(!(puzzle & 0x1049200l)) 18355: altDoSolve32(10, 0x400l, puzzle | 0x1049200l, partsUsed | 0x40l); 18356: if(!(puzzle & 0x59200l)) 18357: altDoSolve32(10, 0x400l, puzzle | 0x59200l, partsUsed | 0x40l); 18358: } 18359: altpiece7at9at32: 18360: if (partsUsed & 0x80l) goto altpiece8at9at32; 18361: if(!(puzzle & 0x9208200l)) 18362: altDoSolve32(10, 0x400l, puzzle | 0x9208200l, partsUsed | 0x80l); 18363: if(!(puzzle & 0x8209200l)) 18364: altDoSolve32(10, 0x400l, puzzle | 0x8209200l, partsUsed | 0x80l); 18365: if(!(puzzle & 0x19600l)) 18366: altDoSolve32(10, 0x400l, puzzle | 0x19600l, partsUsed | 0x80l); 18367: if(!(puzzle & 0x1a600l)) 18368: altDoSolve32(10, 0x400l, puzzle | 0x1a600l, partsUsed | 0x80l); 18369: altpiece8at9at32: 18370: if (partsUsed & 0x100l) goto altpiece9at9at32; 18371: if(!(puzzle & 0x801a00l)) 18372: altDoSolve32(10, 0x400l, puzzle | 0x801a00l, partsUsed | 0x100l); 18373: if(!(puzzle & 0x301200l)) 18374: altDoSolve32(10, 0x400l, puzzle | 0x301200l, partsUsed | 0x100l); 18375: if(!(puzzle & 0x203200l)) 18376: altDoSolve32(10, 0x400l, puzzle | 0x203200l, partsUsed | 0x100l); 18377: if(!(puzzle & 0x1a00200l)) 18378: altDoSolve32(10, 0x400l, puzzle | 0x1a00200l, partsUsed | 0x100l); 18379: if(!(puzzle & 0x1200600l)) 18380: altDoSolve32(10, 0x400l, puzzle | 0x1200600l, partsUsed | 0x100l); 18381: if(!(puzzle & 0x2600200l)) 18382: altDoSolve32(10, 0x400l, puzzle | 0x2600200l, partsUsed | 0x100l); 18383: if(!(puzzle & 0x401600l)) 18384: altDoSolve32(10, 0x400l, puzzle | 0x401600l, partsUsed | 0x100l); 18385: if(!(puzzle & 0x3001200l)) 18386: altDoSolve32(10, 0x400l, puzzle | 0x3001200l, partsUsed | 0x100l); 18387: if(!(puzzle & 0x2002600l)) 18388: altDoSolve32(10, 0x400l, puzzle | 0x2002600l, partsUsed | 0x100l); 18389: altpiece9at9at32: 18390: if (partsUsed & 0x200l) goto altpiece10at9at32; 18391: if (!(puzzle & 0x1a00l)) { 18392: if(!(puzzle & 0x13a00l)) 18393: altDoSolve32(10, 0x400l, puzzle | 0x13a00l, partsUsed | 0x200l); 18394: if(!(puzzle & 0x7a00l)) 18395: altDoSolve32(10, 0x400l, puzzle | 0x7a00l, partsUsed | 0x200l); 18396: if(!(puzzle & 0x9e00l)) 18397: altDoSolve32(10, 0x400l, puzzle | 0x9e00l, partsUsed | 0x200l); 18398: if(!(puzzle & 0x19a00l)) 18399: altDoSolve32(10, 0x400l, puzzle | 0x19a00l, partsUsed | 0x200l); 18400: } 18401: if(!(puzzle & 0xf200l)) 18402: altDoSolve32(10, 0x400l, puzzle | 0xf200l, partsUsed | 0x200l); 18403: altpiece10at9at32: 18404: if (partsUsed & 0x400l) goto altpiece11at9at32; 18405: if (!(puzzle & 0x1001200l)) { 18406: if(!(puzzle & 0x9201200l)) 18407: altDoSolve32(10, 0x400l, puzzle | 0x9201200l, partsUsed | 0x400l); 18408: if(!(puzzle & 0x9009200l)) 18409: altDoSolve32(10, 0x400l, puzzle | 0x9009200l, partsUsed | 0x400l); 18410: if(!(puzzle & 0x1209200l)) 18411: altDoSolve32(10, 0x400l, puzzle | 0x1209200l, partsUsed | 0x400l); 18412: } 18413: if (!(puzzle & 0x3200l)) { 18414: if(!(puzzle & 0xb600l)) 18415: altDoSolve32(10, 0x400l, puzzle | 0xb600l, partsUsed | 0x400l); 18416: if(!(puzzle & 0x13600l)) 18417: altDoSolve32(10, 0x400l, puzzle | 0x13600l, partsUsed | 0x400l); 18418: if(!(puzzle & 0x1b200l)) 18419: altDoSolve32(10, 0x400l, puzzle | 0x1b200l, partsUsed | 0x400l); 18420: } 18421: if(!(puzzle & 0x3e00l)) 18422: altDoSolve32(10, 0x400l, puzzle | 0x3e00l, partsUsed | 0x400l); 18423: if(!(puzzle & 0xda00l)) 18424: altDoSolve32(10, 0x400l, puzzle | 0xda00l, partsUsed | 0x400l); 18425: if(!(puzzle & 0x700600l)) 18426: altDoSolve32(10, 0x400l, puzzle | 0x700600l, partsUsed | 0x400l); 18427: altpiece11at9at32: 18428: if (partsUsed & 0x800l) goto altpiece13at9at32; 18429: if (!(puzzle & 0x200600l)) { 18430: if(!(puzzle & 0x203600l)) 18431: altDoSolve32(10, 0x400l, puzzle | 0x203600l, partsUsed | 0x800l); 18432: if(!(puzzle & 0x1600600l)) 18433: altDoSolve32(10, 0x400l, puzzle | 0x1600600l, partsUsed | 0x800l); 18434: if(!(puzzle & 0x601600l)) 18435: altDoSolve32(10, 0x400l, puzzle | 0x601600l, partsUsed | 0x800l); 18436: if(!(puzzle & 0x602600l)) 18437: altDoSolve32(10, 0x400l, puzzle | 0x602600l, partsUsed | 0x800l); 18438: if(!(puzzle & 0x2600600l)) 18439: altDoSolve32(10, 0x400l, puzzle | 0x2600600l, partsUsed | 0x800l); 18440: if(!(puzzle & 0x1201600l)) 18441: altDoSolve32(10, 0x400l, puzzle | 0x1201600l, partsUsed | 0x800l); 18442: } 18443: if (!(puzzle & 0x2002200l)) { 18444: if(!(puzzle & 0x3003200l)) 18445: altDoSolve32(10, 0x400l, puzzle | 0x3003200l, partsUsed | 0x800l); 18446: if(!(puzzle & 0x2402600l)) 18447: altDoSolve32(10, 0x400l, puzzle | 0x2402600l, partsUsed | 0x800l); 18448: if(!(puzzle & 0x2003600l)) 18449: altDoSolve32(10, 0x400l, puzzle | 0x2003600l, partsUsed | 0x800l); 18450: } 18451: if (!(puzzle & 0x1001200l)) { 18452: if(!(puzzle & 0x1601200l)) 18453: altDoSolve32(10, 0x400l, puzzle | 0x1601200l, partsUsed | 0x800l); 18454: if(!(puzzle & 0x1203200l)) 18455: altDoSolve32(10, 0x400l, puzzle | 0x1203200l, partsUsed | 0x800l); 18456: if(!(puzzle & 0x1003600l)) 18457: altDoSolve32(10, 0x400l, puzzle | 0x1003600l, partsUsed | 0x800l); 18458: if(!(puzzle & 0x3201200l)) 18459: altDoSolve32(10, 0x400l, puzzle | 0x3201200l, partsUsed | 0x800l); 18460: if(!(puzzle & 0x1a01200l)) 18461: altDoSolve32(10, 0x400l, puzzle | 0x1a01200l, partsUsed | 0x800l); 18462: if(!(puzzle & 0x1801a00l)) 18463: altDoSolve32(10, 0x400l, puzzle | 0x1801a00l, partsUsed | 0x800l); 18464: if(!(puzzle & 0x1301200l)) 18465: altDoSolve32(10, 0x400l, puzzle | 0x1301200l, partsUsed | 0x800l); 18466: if(!(puzzle & 0x1201a00l)) 18467: altDoSolve32(10, 0x400l, puzzle | 0x1201a00l, partsUsed | 0x800l); 18468: } 18469: if(!(puzzle & 0x403600l)) 18470: altDoSolve32(10, 0x400l, puzzle | 0x403600l, partsUsed | 0x800l); 18471: if(!(puzzle & 0x3600200l)) 18472: altDoSolve32(10, 0x400l, puzzle | 0x3600200l, partsUsed | 0x800l); 18473: if(!(puzzle & 0x1b00200l)) 18474: altDoSolve32(10, 0x400l, puzzle | 0x1b00200l, partsUsed | 0x800l); 18475: altpiece13at9at32: 18476: break; 18477: case 10: 18478: if (partsUsed & 0x2l) goto altpiece2at10at32; 18479: if(!(puzzle & 0xf400l)) 18480: altDoSolve32(11, 0x800l, puzzle | 0xf400l, partsUsed | 0x2l); 18481: altpiece2at10at32: 18482: if (partsUsed & 0x4l) goto altpiece3at10at32; 18483: if(!(puzzle & 0x13c00l)) 18484: altDoSolve32(11, 0x800l, puzzle | 0x13c00l, partsUsed | 0x4l); 18485: altpiece3at10at32: 18486: if (partsUsed & 0x8l) goto altpiece4at10at32; 18487: if(!(puzzle & 0x7c00l)) 18488: altDoSolve32(11, 0x800l, puzzle | 0x7c00l, partsUsed | 0x8l); 18489: altpiece4at10at32: 18490: if (partsUsed & 0x10l) goto altpiece5at10at32; 18491: if (!(puzzle & 0x92400l)) { 18492: if(!(puzzle & 0xd3400l)) 18493: altDoSolve32(11, 0x800l, puzzle | 0xd3400l, partsUsed | 0x10l); 18494: if(!(puzzle & 0x10492400l)) 18495: altDoSolve32(11, 0x800l, puzzle | 0x10492400l, partsUsed | 0x10l); 18496: if(!(puzzle & 0x82092400l)) 18497: altDoSolve32(11, 0x800l, puzzle | 0x82092400l, partsUsed | 0x10l); 18498: } 18499: if(!(puzzle & 0x92410400l)) 18500: altDoSolve32(11, 0x800l, puzzle | 0x92410400l, partsUsed | 0x10l); 18501: altpiece5at10at32: 18502: if (partsUsed & 0x20l) goto altpiece6at10at32; 18503: if (!(puzzle & 0x92400l)) { 18504: if(!(puzzle & 0xd2400l)) 18505: altDoSolve32(11, 0x800l, puzzle | 0xd2400l, partsUsed | 0x20l); 18506: if(!(puzzle & 0x80092400l)) 18507: altDoSolve32(11, 0x800l, puzzle | 0x80092400l, partsUsed | 0x20l); 18508: if(!(puzzle & 0x492400l)) 18509: altDoSolve32(11, 0x800l, puzzle | 0x492400l, partsUsed | 0x20l); 18510: } 18511: if(!(puzzle & 0x92400400l)) 18512: altDoSolve32(11, 0x800l, puzzle | 0x92400400l, partsUsed | 0x20l); 18513: altpiece6at10at32: 18514: if (partsUsed & 0x40l) goto altpiece7at10at32; 18515: if (!(puzzle & 0x92400l)) { 18516: if(!(puzzle & 0x93400l)) 18517: altDoSolve32(11, 0x800l, puzzle | 0x93400l, partsUsed | 0x40l); 18518: if(!(puzzle & 0x9a400l)) 18519: altDoSolve32(11, 0x800l, puzzle | 0x9a400l, partsUsed | 0x40l); 18520: if(!(puzzle & 0x10092400l)) 18521: altDoSolve32(11, 0x800l, puzzle | 0x10092400l, partsUsed | 0x40l); 18522: if(!(puzzle & 0x2092400l)) 18523: altDoSolve32(11, 0x800l, puzzle | 0x2092400l, partsUsed | 0x40l); 18524: } 18525: altpiece7at10at32: 18526: if (partsUsed & 0x80l) goto altpiece8at10at32; 18527: if(!(puzzle & 0x12410400l)) 18528: altDoSolve32(11, 0x800l, puzzle | 0x12410400l, partsUsed | 0x80l); 18529: if(!(puzzle & 0x10412400l)) 18530: altDoSolve32(11, 0x800l, puzzle | 0x10412400l, partsUsed | 0x80l); 18531: altpiece8at10at32: 18532: if (partsUsed & 0x100l) goto altpiece9at10at32; 18533: if(!(puzzle & 0x3400400l)) 18534: altDoSolve32(11, 0x800l, puzzle | 0x3400400l, partsUsed | 0x100l); 18535: if(!(puzzle & 0x1003400l)) 18536: altDoSolve32(11, 0x800l, puzzle | 0x1003400l, partsUsed | 0x100l); 18537: if(!(puzzle & 0x602400l)) 18538: altDoSolve32(11, 0x800l, puzzle | 0x602400l, partsUsed | 0x100l); 18539: altpiece9at10at32: 18540: if (partsUsed & 0x200l) goto altpiece10at10at32; 18541: if(!(puzzle & 0xbc00l)) 18542: altDoSolve32(11, 0x800l, puzzle | 0xbc00l, partsUsed | 0x200l); 18543: altpiece10at10at32: 18544: if (partsUsed & 0x400l) goto altpiece11at10at32; 18545: if (!(puzzle & 0x12400l)) { 18546: if(!(puzzle & 0x1b400l)) 18547: altDoSolve32(11, 0x800l, puzzle | 0x1b400l, partsUsed | 0x400l); 18548: if(!(puzzle & 0x12012400l)) 18549: altDoSolve32(11, 0x800l, puzzle | 0x12012400l, partsUsed | 0x400l); 18550: if(!(puzzle & 0x2412400l)) 18551: altDoSolve32(11, 0x800l, puzzle | 0x2412400l, partsUsed | 0x400l); 18552: } 18553: if(!(puzzle & 0x12402400l)) 18554: altDoSolve32(11, 0x800l, puzzle | 0x12402400l, partsUsed | 0x400l); 18555: altpiece11at10at32: 18556: if (partsUsed & 0x800l) goto altpiece13at10at32; 18557: if (!(puzzle & 0x3000400l)) { 18558: if(!(puzzle & 0x3600400l)) 18559: altDoSolve32(11, 0x800l, puzzle | 0x3600400l, partsUsed | 0x800l); 18560: if(!(puzzle & 0x3402400l)) 18561: altDoSolve32(11, 0x800l, puzzle | 0x3402400l, partsUsed | 0x800l); 18562: if(!(puzzle & 0x3003400l)) 18563: altDoSolve32(11, 0x800l, puzzle | 0x3003400l, partsUsed | 0x800l); 18564: } 18565: if(!(puzzle & 0x2602400l)) 18566: altDoSolve32(11, 0x800l, puzzle | 0x2602400l, partsUsed | 0x800l); 18567: if(!(puzzle & 0x2403400l)) 18568: altDoSolve32(11, 0x800l, puzzle | 0x2403400l, partsUsed | 0x800l); 18569: altpiece13at10at32: 18570: break; 18571: case 11: 18572: if (partsUsed & 0x2l) goto altpiece2at11at32; 18573: if(!(puzzle & 0x99800l)) 18574: altDoSolve32(12, 0x1000l, puzzle | 0x99800l, partsUsed | 0x2l); 18575: if(!(puzzle & 0xcc800l)) 18576: altDoSolve32(12, 0x1000l, puzzle | 0xcc800l, partsUsed | 0x2l); 18577: altpiece2at11at32: 18578: if (partsUsed & 0x4l) goto altpiece3at11at32; 18579: if(!(puzzle & 0x4b800l)) 18580: altDoSolve32(12, 0x1000l, puzzle | 0x4b800l, partsUsed | 0x4l); 18581: if(!(puzzle & 0x3c800l)) 18582: altDoSolve32(12, 0x1000l, puzzle | 0x3c800l, partsUsed | 0x4l); 18583: altpiece3at11at32: 18584: if (partsUsed & 0x8l) goto altpiece4at11at32; 18585: if(!(puzzle & 0xc9800l)) 18586: altDoSolve32(12, 0x1000l, puzzle | 0xc9800l, partsUsed | 0x8l); 18587: if(!(puzzle & 0x9c800l)) 18588: altDoSolve32(12, 0x1000l, puzzle | 0x9c800l, partsUsed | 0x8l); 18589: altpiece4at11at32: 18590: if (partsUsed & 0x10l) goto altpiece5at11at32; 18591: if(!(puzzle & 0x24920800l)) 18592: altDoSolve32(12, 0x1000l, puzzle | 0x24920800l, partsUsed | 0x10l); 18593: altpiece5at11at32: 18594: if (partsUsed & 0x40l) goto altpiece7at11at32; 18595: if(!(puzzle & 0x24900800l)) 18596: altDoSolve32(12, 0x1000l, puzzle | 0x24900800l, partsUsed | 0x40l); 18597: altpiece7at11at32: 18598: if (partsUsed & 0x80l) goto altpiece8at11at32; 18599: if(!(puzzle & 0x24820800l)) 18600: altDoSolve32(12, 0x1000l, puzzle | 0x24820800l, partsUsed | 0x80l); 18601: if(!(puzzle & 0x20824800l)) 18602: altDoSolve32(12, 0x1000l, puzzle | 0x20824800l, partsUsed | 0x80l); 18603: if(!(puzzle & 0x17800l)) 18604: altDoSolve32(12, 0x1000l, puzzle | 0x17800l, partsUsed | 0x80l); 18605: if(!(puzzle & 0x65800l)) 18606: altDoSolve32(12, 0x1000l, puzzle | 0x65800l, partsUsed | 0x80l); 18607: if(!(puzzle & 0x69800l)) 18608: altDoSolve32(12, 0x1000l, puzzle | 0x69800l, partsUsed | 0x80l); 18609: if(!(puzzle & 0x1e800l)) 18610: altDoSolve32(12, 0x1000l, puzzle | 0x1e800l, partsUsed | 0x80l); 18611: if(!(puzzle & 0x3802800l)) 18612: altDoSolve32(12, 0x1000l, puzzle | 0x3802800l, partsUsed | 0x80l); 18613: if(!(puzzle & 0x2803800l)) 18614: altDoSolve32(12, 0x1000l, puzzle | 0x2803800l, partsUsed | 0x80l); 18615: altpiece8at11at32: 18616: if (partsUsed & 0x100l) goto altpiece9at11at32; 18617: if(!(puzzle & 0x1201800l)) 18618: altDoSolve32(12, 0x1000l, puzzle | 0x1201800l, partsUsed | 0x100l); 18619: if(!(puzzle & 0x1005800l)) 18620: altDoSolve32(12, 0x1000l, puzzle | 0x1005800l, partsUsed | 0x100l); 18621: if(!(puzzle & 0xb00800l)) 18622: altDoSolve32(12, 0x1000l, puzzle | 0xb00800l, partsUsed | 0x100l); 18623: if(!(puzzle & 0x9800800l)) 18624: altDoSolve32(12, 0x1000l, puzzle | 0x9800800l, partsUsed | 0x100l); 18625: if(!(puzzle & 0x4801800l)) 18626: altDoSolve32(12, 0x1000l, puzzle | 0x4801800l, partsUsed | 0x100l); 18627: if(!(puzzle & 0xc004800l)) 18628: altDoSolve32(12, 0x1000l, puzzle | 0xc004800l, partsUsed | 0x100l); 18629: if(!(puzzle & 0x80c800l)) 18630: altDoSolve32(12, 0x1000l, puzzle | 0x80c800l, partsUsed | 0x100l); 18631: if(!(puzzle & 0x8009800l)) 18632: altDoSolve32(12, 0x1000l, puzzle | 0x8009800l, partsUsed | 0x100l); 18633: altpiece9at11at32: 18634: if (partsUsed & 0x200l) goto altpiece10at11at32; 18635: if(!(puzzle & 0x59800l)) 18636: altDoSolve32(12, 0x1000l, puzzle | 0x59800l, partsUsed | 0x200l); 18637: if(!(puzzle & 0x5c800l)) 18638: altDoSolve32(12, 0x1000l, puzzle | 0x5c800l, partsUsed | 0x200l); 18639: altpiece10at11at32: 18640: if (partsUsed & 0x400l) goto altpiece11at11at32; 18641: if (!(puzzle & 0x4004800l)) { 18642: if(!(puzzle & 0x4904800l)) 18643: altDoSolve32(12, 0x1000l, puzzle | 0x4904800l, partsUsed | 0x400l); 18644: if(!(puzzle & 0x24804800l)) 18645: altDoSolve32(12, 0x1000l, puzzle | 0x24804800l, partsUsed | 0x400l); 18646: if(!(puzzle & 0x24024800l)) 18647: altDoSolve32(12, 0x1000l, puzzle | 0x24024800l, partsUsed | 0x400l); 18648: if(!(puzzle & 0x4824800l)) 18649: altDoSolve32(12, 0x1000l, puzzle | 0x4824800l, partsUsed | 0x400l); 18650: } 18651: if (!(puzzle & 0x9800l)) { 18652: if(!(puzzle & 0x1b800l)) 18653: altDoSolve32(12, 0x1000l, puzzle | 0x1b800l, partsUsed | 0x400l); 18654: if(!(puzzle & 0xf800l)) 18655: altDoSolve32(12, 0x1000l, puzzle | 0xf800l, partsUsed | 0x400l); 18656: if(!(puzzle & 0x2d800l)) 18657: altDoSolve32(12, 0x1000l, puzzle | 0x2d800l, partsUsed | 0x400l); 18658: if(!(puzzle & 0x4d800l)) 18659: altDoSolve32(12, 0x1000l, puzzle | 0x4d800l, partsUsed | 0x400l); 18660: if(!(puzzle & 0x1d800l)) 18661: altDoSolve32(12, 0x1000l, puzzle | 0x1d800l, partsUsed | 0x400l); 18662: } 18663: if (!(puzzle & 0x1001800l)) { 18664: if(!(puzzle & 0x3801800l)) 18665: altDoSolve32(12, 0x1000l, puzzle | 0x3801800l, partsUsed | 0x400l); 18666: if(!(puzzle & 0x1803800l)) 18667: altDoSolve32(12, 0x1000l, puzzle | 0x1803800l, partsUsed | 0x400l); 18668: if(!(puzzle & 0x3003800l)) 18669: altDoSolve32(12, 0x1000l, puzzle | 0x3003800l, partsUsed | 0x400l); 18670: } 18671: if(!(puzzle & 0x6c800l)) 18672: altDoSolve32(12, 0x1000l, puzzle | 0x6c800l, partsUsed | 0x400l); 18673: altpiece11at11at32: 18674: if (partsUsed & 0x800l) goto altpiece13at11at32; 18675: if (!(puzzle & 0x801800l)) { 18676: if(!(puzzle & 0x80d800l)) 18677: altDoSolve32(12, 0x1000l, puzzle | 0x80d800l, partsUsed | 0x800l); 18678: if(!(puzzle & 0x5801800l)) 18679: altDoSolve32(12, 0x1000l, puzzle | 0x5801800l, partsUsed | 0x800l); 18680: if(!(puzzle & 0x1805800l)) 18681: altDoSolve32(12, 0x1000l, puzzle | 0x1805800l, partsUsed | 0x800l); 18682: if(!(puzzle & 0x1809800l)) 18683: altDoSolve32(12, 0x1000l, puzzle | 0x1809800l, partsUsed | 0x800l); 18684: if(!(puzzle & 0x9801800l)) 18685: altDoSolve32(12, 0x1000l, puzzle | 0x9801800l, partsUsed | 0x800l); 18686: if(!(puzzle & 0x4805800l)) 18687: altDoSolve32(12, 0x1000l, puzzle | 0x4805800l, partsUsed | 0x800l); 18688: if(!(puzzle & 0x1a01800l)) 18689: altDoSolve32(12, 0x1000l, puzzle | 0x1a01800l, partsUsed | 0x800l); 18690: if(!(puzzle & 0x1901800l)) 18691: altDoSolve32(12, 0x1000l, puzzle | 0x1901800l, partsUsed | 0x800l); 18692: } 18693: if (!(puzzle & 0x8008800l)) { 18694: if(!(puzzle & 0xc00c800l)) 18695: altDoSolve32(12, 0x1000l, puzzle | 0xc00c800l, partsUsed | 0x800l); 18696: if(!(puzzle & 0x9009800l)) 18697: altDoSolve32(12, 0x1000l, puzzle | 0x9009800l, partsUsed | 0x800l); 18698: if(!(puzzle & 0x800d800l)) 18699: altDoSolve32(12, 0x1000l, puzzle | 0x800d800l, partsUsed | 0x800l); 18700: } 18701: if (!(puzzle & 0x4004800l)) { 18702: if(!(puzzle & 0x5804800l)) 18703: altDoSolve32(12, 0x1000l, puzzle | 0x5804800l, partsUsed | 0x800l); 18704: if(!(puzzle & 0x480c800l)) 18705: altDoSolve32(12, 0x1000l, puzzle | 0x480c800l, partsUsed | 0x800l); 18706: if(!(puzzle & 0x400d800l)) 18707: altDoSolve32(12, 0x1000l, puzzle | 0x400d800l, partsUsed | 0x800l); 18708: if(!(puzzle & 0xc804800l)) 18709: altDoSolve32(12, 0x1000l, puzzle | 0xc804800l, partsUsed | 0x800l); 18710: } 18711: if(!(puzzle & 0x100d800l)) 18712: altDoSolve32(12, 0x1000l, puzzle | 0x100d800l, partsUsed | 0x800l); 18713: if(!(puzzle & 0xd800800l)) 18714: altDoSolve32(12, 0x1000l, puzzle | 0xd800800l, partsUsed | 0x800l); 18715: if(!(puzzle & 0x1b00800l)) 18716: altDoSolve32(12, 0x1000l, puzzle | 0x1b00800l, partsUsed | 0x800l); 18717: altpiece13at11at32: 18718: break; 18719: case 12: 18720: if (partsUsed & 0x2l) goto altpiece2at12at32; 18721: if(!(puzzle & 0x2f000l)) 18722: altDoSolve32(13, 0x2000l, puzzle | 0x2f000l, partsUsed | 0x2l); 18723: altpiece2at12at32: 18724: if (partsUsed & 0x4l) goto altpiece3at12at32; 18725: if(!(puzzle & 0xe9000l)) 18726: altDoSolve32(13, 0x2000l, puzzle | 0xe9000l, partsUsed | 0x4l); 18727: altpiece3at12at32: 18728: if (partsUsed & 0x8l) goto altpiece4at12at32; 18729: if(!(puzzle & 0x6b000l)) 18730: altDoSolve32(13, 0x2000l, puzzle | 0x6b000l, partsUsed | 0x8l); 18731: altpiece4at12at32: 18732: if (partsUsed & 0x10l) goto altpiece5at12at32; 18733: if(!(puzzle & 0x49241000l)) 18734: altDoSolve32(13, 0x2000l, puzzle | 0x49241000l, partsUsed | 0x10l); 18735: altpiece5at12at32: 18736: if (partsUsed & 0x40l) goto altpiece7at12at32; 18737: if(!(puzzle & 0x49201000l)) 18738: altDoSolve32(13, 0x2000l, puzzle | 0x49201000l, partsUsed | 0x40l); 18739: altpiece7at12at32: 18740: if (partsUsed & 0x80l) goto altpiece8at12at32; 18741: if(!(puzzle & 0x49041000l)) 18742: altDoSolve32(13, 0x2000l, puzzle | 0x49041000l, partsUsed | 0x80l); 18743: if(!(puzzle & 0x41049000l)) 18744: altDoSolve32(13, 0x2000l, puzzle | 0x41049000l, partsUsed | 0x80l); 18745: if(!(puzzle & 0xcb000l)) 18746: altDoSolve32(13, 0x2000l, puzzle | 0xcb000l, partsUsed | 0x80l); 18747: if(!(puzzle & 0xd3000l)) 18748: altDoSolve32(13, 0x2000l, puzzle | 0xd3000l, partsUsed | 0x80l); 18749: altpiece8at12at32: 18750: if (partsUsed & 0x100l) goto altpiece9at12at32; 18751: if(!(puzzle & 0x1901000l)) 18752: altDoSolve32(13, 0x2000l, puzzle | 0x1901000l, partsUsed | 0x100l); 18753: if(!(puzzle & 0x1809000l)) 18754: altDoSolve32(13, 0x2000l, puzzle | 0x1809000l, partsUsed | 0x100l); 18755: if(!(puzzle & 0x2403000l)) 18756: altDoSolve32(13, 0x2000l, puzzle | 0x2403000l, partsUsed | 0x100l); 18757: if(!(puzzle & 0x200b000l)) 18758: altDoSolve32(13, 0x2000l, puzzle | 0x200b000l, partsUsed | 0x100l); 18759: if(!(puzzle & 0x1601000l)) 18760: altDoSolve32(13, 0x2000l, puzzle | 0x1601000l, partsUsed | 0x100l); 18761: if(!(puzzle & 0x400d000l)) 18762: altDoSolve32(13, 0x2000l, puzzle | 0x400d000l, partsUsed | 0x100l); 18763: if(!(puzzle & 0xd001000l)) 18764: altDoSolve32(13, 0x2000l, puzzle | 0xd001000l, partsUsed | 0x100l); 18765: if(!(puzzle & 0x9003000l)) 18766: altDoSolve32(13, 0x2000l, puzzle | 0x9003000l, partsUsed | 0x100l); 18767: if(!(puzzle & 0x13001000l)) 18768: altDoSolve32(13, 0x2000l, puzzle | 0x13001000l, partsUsed | 0x100l); 18769: if(!(puzzle & 0x18009000l)) 18770: altDoSolve32(13, 0x2000l, puzzle | 0x18009000l, partsUsed | 0x100l); 18771: if(!(puzzle & 0x1019000l)) 18772: altDoSolve32(13, 0x2000l, puzzle | 0x1019000l, partsUsed | 0x100l); 18773: if(!(puzzle & 0x10013000l)) 18774: altDoSolve32(13, 0x2000l, puzzle | 0x10013000l, partsUsed | 0x100l); 18775: altpiece9at12at32: 18776: if (partsUsed & 0x200l) goto altpiece10at12at32; 18777: if (!(puzzle & 0xd000l)) { 18778: if(!(puzzle & 0x9d000l)) 18779: altDoSolve32(13, 0x2000l, puzzle | 0x9d000l, partsUsed | 0x200l); 18780: if(!(puzzle & 0x3d000l)) 18781: altDoSolve32(13, 0x2000l, puzzle | 0x3d000l, partsUsed | 0x200l); 18782: if(!(puzzle & 0x4f000l)) 18783: altDoSolve32(13, 0x2000l, puzzle | 0x4f000l, partsUsed | 0x200l); 18784: if(!(puzzle & 0xcd000l)) 18785: altDoSolve32(13, 0x2000l, puzzle | 0xcd000l, partsUsed | 0x200l); 18786: } 18787: if(!(puzzle & 0x79000l)) 18788: altDoSolve32(13, 0x2000l, puzzle | 0x79000l, partsUsed | 0x200l); 18789: altpiece10at12at32: 18790: if (partsUsed & 0x400l) goto altpiece11at12at32; 18791: if (!(puzzle & 0x8009000l)) { 18792: if(!(puzzle & 0x9209000l)) 18793: altDoSolve32(13, 0x2000l, puzzle | 0x9209000l, partsUsed | 0x400l); 18794: if(!(puzzle & 0x49009000l)) 18795: altDoSolve32(13, 0x2000l, puzzle | 0x49009000l, partsUsed | 0x400l); 18796: if(!(puzzle & 0x48049000l)) 18797: altDoSolve32(13, 0x2000l, puzzle | 0x48049000l, partsUsed | 0x400l); 18798: if(!(puzzle & 0x9049000l)) 18799: altDoSolve32(13, 0x2000l, puzzle | 0x9049000l, partsUsed | 0x400l); 18800: } 18801: if (!(puzzle & 0x19000l)) { 18802: if(!(puzzle & 0x5b000l)) 18803: altDoSolve32(13, 0x2000l, puzzle | 0x5b000l, partsUsed | 0x400l); 18804: if(!(puzzle & 0x9b000l)) 18805: altDoSolve32(13, 0x2000l, puzzle | 0x9b000l, partsUsed | 0x400l); 18806: if(!(puzzle & 0xd9000l)) 18807: altDoSolve32(13, 0x2000l, puzzle | 0xd9000l, partsUsed | 0x400l); 18808: } 18809: if(!(puzzle & 0x1f000l)) 18810: altDoSolve32(13, 0x2000l, puzzle | 0x1f000l, partsUsed | 0x400l); 18811: if(!(puzzle & 0x6d000l)) 18812: altDoSolve32(13, 0x2000l, puzzle | 0x6d000l, partsUsed | 0x400l); 18813: if(!(puzzle & 0x3803000l)) 18814: altDoSolve32(13, 0x2000l, puzzle | 0x3803000l, partsUsed | 0x400l); 18815: altpiece11at12at32: 18816: if (partsUsed & 0x800l) goto altpiece13at12at32; 18817: if (!(puzzle & 0x1003000l)) { 18818: if(!(puzzle & 0x101b000l)) 18819: altDoSolve32(13, 0x2000l, puzzle | 0x101b000l, partsUsed | 0x800l); 18820: if(!(puzzle & 0xb003000l)) 18821: altDoSolve32(13, 0x2000l, puzzle | 0xb003000l, partsUsed | 0x800l); 18822: if(!(puzzle & 0x300b000l)) 18823: altDoSolve32(13, 0x2000l, puzzle | 0x300b000l, partsUsed | 0x800l); 18824: if(!(puzzle & 0x3013000l)) 18825: altDoSolve32(13, 0x2000l, puzzle | 0x3013000l, partsUsed | 0x800l); 18826: if(!(puzzle & 0x13003000l)) 18827: altDoSolve32(13, 0x2000l, puzzle | 0x13003000l, partsUsed | 0x800l); 18828: if(!(puzzle & 0x900b000l)) 18829: altDoSolve32(13, 0x2000l, puzzle | 0x900b000l, partsUsed | 0x800l); 18830: if(!(puzzle & 0x3403000l)) 18831: altDoSolve32(13, 0x2000l, puzzle | 0x3403000l, partsUsed | 0x800l); 18832: if(!(puzzle & 0x3203000l)) 18833: altDoSolve32(13, 0x2000l, puzzle | 0x3203000l, partsUsed | 0x800l); 18834: } 18835: if (!(puzzle & 0x10011000l)) { 18836: if(!(puzzle & 0x18019000l)) 18837: altDoSolve32(13, 0x2000l, puzzle | 0x18019000l, partsUsed | 0x800l); 18838: if(!(puzzle & 0x12013000l)) 18839: altDoSolve32(13, 0x2000l, puzzle | 0x12013000l, partsUsed | 0x800l); 18840: if(!(puzzle & 0x1001b000l)) 18841: altDoSolve32(13, 0x2000l, puzzle | 0x1001b000l, partsUsed | 0x800l); 18842: } 18843: if (!(puzzle & 0x8009000l)) { 18844: if(!(puzzle & 0xb009000l)) 18845: altDoSolve32(13, 0x2000l, puzzle | 0xb009000l, partsUsed | 0x800l); 18846: if(!(puzzle & 0x9019000l)) 18847: altDoSolve32(13, 0x2000l, puzzle | 0x9019000l, partsUsed | 0x800l); 18848: if(!(puzzle & 0x801b000l)) 18849: altDoSolve32(13, 0x2000l, puzzle | 0x801b000l, partsUsed | 0x800l); 18850: if(!(puzzle & 0x19009000l)) 18851: altDoSolve32(13, 0x2000l, puzzle | 0x19009000l, partsUsed | 0x800l); 18852: if(!(puzzle & 0xd009000l)) 18853: altDoSolve32(13, 0x2000l, puzzle | 0xd009000l, partsUsed | 0x800l); 18854: if(!(puzzle & 0xc00d000l)) 18855: altDoSolve32(13, 0x2000l, puzzle | 0xc00d000l, partsUsed | 0x800l); 18856: if(!(puzzle & 0x9809000l)) 18857: altDoSolve32(13, 0x2000l, puzzle | 0x9809000l, partsUsed | 0x800l); 18858: if(!(puzzle & 0x900d000l)) 18859: altDoSolve32(13, 0x2000l, puzzle | 0x900d000l, partsUsed | 0x800l); 18860: } 18861: if(!(puzzle & 0x201b000l)) 18862: altDoSolve32(13, 0x2000l, puzzle | 0x201b000l, partsUsed | 0x800l); 18863: if(!(puzzle & 0x1b001000l)) 18864: altDoSolve32(13, 0x2000l, puzzle | 0x1b001000l, partsUsed | 0x800l); 18865: if(!(puzzle & 0xd801000l)) 18866: altDoSolve32(13, 0x2000l, puzzle | 0xd801000l, partsUsed | 0x800l); 18867: if(!(puzzle & 0x3601000l)) 18868: altDoSolve32(13, 0x2000l, puzzle | 0x3601000l, partsUsed | 0x800l); 18869: if(!(puzzle & 0x1b01000l)) 18870: altDoSolve32(13, 0x2000l, puzzle | 0x1b01000l, partsUsed | 0x800l); 18871: altpiece13at12at32: 18872: break; 18873: case 13: 18874: if (partsUsed & 0x2l) goto altpiece2at13at32; 18875: if(!(puzzle & 0x7a000l)) 18876: altDoSolve32(14, 0x4000l, puzzle | 0x7a000l, partsUsed | 0x2l); 18877: altpiece2at13at32: 18878: if (partsUsed & 0x4l) goto altpiece3at13at32; 18879: if(!(puzzle & 0x9e000l)) 18880: altDoSolve32(14, 0x4000l, puzzle | 0x9e000l, partsUsed | 0x4l); 18881: altpiece3at13at32: 18882: if (partsUsed & 0x8l) goto altpiece4at13at32; 18883: if(!(puzzle & 0x3e000l)) 18884: altDoSolve32(14, 0x4000l, puzzle | 0x3e000l, partsUsed | 0x8l); 18885: altpiece4at13at32: 18886: if (partsUsed & 0x10l) goto altpiece5at13at32; 18887: if(!(puzzle & 0x92482000l)) 18888: altDoSolve32(14, 0x4000l, puzzle | 0x92482000l, partsUsed | 0x10l); 18889: altpiece5at13at32: 18890: if (partsUsed & 0x40l) goto altpiece7at13at32; 18891: if(!(puzzle & 0x92402000l)) 18892: altDoSolve32(14, 0x4000l, puzzle | 0x92402000l, partsUsed | 0x40l); 18893: altpiece7at13at32: 18894: if (partsUsed & 0x80l) goto altpiece8at13at32; 18895: if(!(puzzle & 0x92082000l)) 18896: altDoSolve32(14, 0x4000l, puzzle | 0x92082000l, partsUsed | 0x80l); 18897: if(!(puzzle & 0x82092000l)) 18898: altDoSolve32(14, 0x4000l, puzzle | 0x82092000l, partsUsed | 0x80l); 18899: altpiece8at13at32: 18900: if (partsUsed & 0x100l) goto altpiece9at13at32; 18901: if(!(puzzle & 0x3202000l)) 18902: altDoSolve32(14, 0x4000l, puzzle | 0x3202000l, partsUsed | 0x100l); 18903: if(!(puzzle & 0x3012000l)) 18904: altDoSolve32(14, 0x4000l, puzzle | 0x3012000l, partsUsed | 0x100l); 18905: if(!(puzzle & 0x801a000l)) 18906: altDoSolve32(14, 0x4000l, puzzle | 0x801a000l, partsUsed | 0x100l); 18907: if(!(puzzle & 0x1a002000l)) 18908: altDoSolve32(14, 0x4000l, puzzle | 0x1a002000l, partsUsed | 0x100l); 18909: altpiece9at13at32: 18910: if (partsUsed & 0x200l) goto altpiece10at13at32; 18911: if(!(puzzle & 0x5e000l)) 18912: altDoSolve32(14, 0x4000l, puzzle | 0x5e000l, partsUsed | 0x200l); 18913: altpiece10at13at32: 18914: if (partsUsed & 0x400l) goto altpiece11at13at32; 18915: if (!(puzzle & 0x10012000l)) { 18916: if(!(puzzle & 0x12412000l)) 18917: altDoSolve32(14, 0x4000l, puzzle | 0x12412000l, partsUsed | 0x400l); 18918: if(!(puzzle & 0x92012000l)) 18919: altDoSolve32(14, 0x4000l, puzzle | 0x92012000l, partsUsed | 0x400l); 18920: if(!(puzzle & 0x90092000l)) 18921: altDoSolve32(14, 0x4000l, puzzle | 0x90092000l, partsUsed | 0x400l); 18922: if(!(puzzle & 0x12092000l)) 18923: altDoSolve32(14, 0x4000l, puzzle | 0x12092000l, partsUsed | 0x400l); 18924: } 18925: if(!(puzzle & 0xda000l)) 18926: altDoSolve32(14, 0x4000l, puzzle | 0xda000l, partsUsed | 0x400l); 18927: altpiece11at13at32: 18928: if (partsUsed & 0x800l) goto altpiece13at13at32; 18929: if (!(puzzle & 0x18002000l)) { 18930: if(!(puzzle & 0x1b002000l)) 18931: altDoSolve32(14, 0x4000l, puzzle | 0x1b002000l, partsUsed | 0x800l); 18932: if(!(puzzle & 0x1a012000l)) 18933: altDoSolve32(14, 0x4000l, puzzle | 0x1a012000l, partsUsed | 0x800l); 18934: if(!(puzzle & 0x1801a000l)) 18935: altDoSolve32(14, 0x4000l, puzzle | 0x1801a000l, partsUsed | 0x800l); 18936: } 18937: if(!(puzzle & 0x13012000l)) 18938: altDoSolve32(14, 0x4000l, puzzle | 0x13012000l, partsUsed | 0x800l); 18939: if(!(puzzle & 0x1201a000l)) 18940: altDoSolve32(14, 0x4000l, puzzle | 0x1201a000l, partsUsed | 0x800l); 18941: if(!(puzzle & 0x3602000l)) 18942: altDoSolve32(14, 0x4000l, puzzle | 0x3602000l, partsUsed | 0x800l); 18943: altpiece13at13at32: 18944: break; 18945: case 14: 18946: if (partsUsed & 0x40l) goto altpiece7at14at32; 18947: if(!(puzzle & 0x24904000l)) 18948: altDoSolve32(15, 0x8000l, puzzle | 0x24904000l, partsUsed | 0x40l); 18949: altpiece7at14at32: 18950: if (partsUsed & 0x80l) goto altpiece8at14at32; 18951: if(!(puzzle & 0xbc000l)) 18952: altDoSolve32(15, 0x8000l, puzzle | 0xbc000l, partsUsed | 0x80l); 18953: if(!(puzzle & 0xf4000l)) 18954: altDoSolve32(15, 0x8000l, puzzle | 0xf4000l, partsUsed | 0x80l); 18955: if(!(puzzle & 0x1c014000l)) 18956: altDoSolve32(15, 0x8000l, puzzle | 0x1c014000l, partsUsed | 0x80l); 18957: if(!(puzzle & 0x1401c000l)) 18958: altDoSolve32(15, 0x8000l, puzzle | 0x1401c000l, partsUsed | 0x80l); 18959: altpiece8at14at32: 18960: if (partsUsed & 0x100l) goto altpiece9at14at32; 18961: if(!(puzzle & 0x900c000l)) 18962: altDoSolve32(15, 0x8000l, puzzle | 0x900c000l, partsUsed | 0x100l); 18963: if(!(puzzle & 0x802c000l)) 18964: altDoSolve32(15, 0x8000l, puzzle | 0x802c000l, partsUsed | 0x100l); 18965: if(!(puzzle & 0x5804000l)) 18966: altDoSolve32(15, 0x8000l, puzzle | 0x5804000l, partsUsed | 0x100l); 18967: if(!(puzzle & 0x4c004000l)) 18968: altDoSolve32(15, 0x8000l, puzzle | 0x4c004000l, partsUsed | 0x100l); 18969: if(!(puzzle & 0x2400c000l)) 18970: altDoSolve32(15, 0x8000l, puzzle | 0x2400c000l, partsUsed | 0x100l); 18971: if(!(puzzle & 0x60024000l)) 18972: altDoSolve32(15, 0x8000l, puzzle | 0x60024000l, partsUsed | 0x100l); 18973: if(!(puzzle & 0x4064000l)) 18974: altDoSolve32(15, 0x8000l, puzzle | 0x4064000l, partsUsed | 0x100l); 18975: if(!(puzzle & 0x4004c000l)) 18976: altDoSolve32(15, 0x8000l, puzzle | 0x4004c000l, partsUsed | 0x100l); 18977: altpiece9at14at32: 18978: if (partsUsed & 0x400l) goto altpiece11at14at32; 18979: if (!(puzzle & 0x4c000l)) { 18980: if(!(puzzle & 0xdc000l)) 18981: altDoSolve32(15, 0x8000l, puzzle | 0xdc000l, partsUsed | 0x400l); 18982: if(!(puzzle & 0x7c000l)) 18983: altDoSolve32(15, 0x8000l, puzzle | 0x7c000l, partsUsed | 0x400l); 18984: if(!(puzzle & 0xec000l)) 18985: altDoSolve32(15, 0x8000l, puzzle | 0xec000l, partsUsed | 0x400l); 18986: } 18987: if (!(puzzle & 0x800c000l)) { 18988: if(!(puzzle & 0x1c00c000l)) 18989: altDoSolve32(15, 0x8000l, puzzle | 0x1c00c000l, partsUsed | 0x400l); 18990: if(!(puzzle & 0xc01c000l)) 18991: altDoSolve32(15, 0x8000l, puzzle | 0xc01c000l, partsUsed | 0x400l); 18992: if(!(puzzle & 0x1801c000l)) 18993: altDoSolve32(15, 0x8000l, puzzle | 0x1801c000l, partsUsed | 0x400l); 18994: } 18995: if(!(puzzle & 0x24824000l)) 18996: altDoSolve32(15, 0x8000l, puzzle | 0x24824000l, partsUsed | 0x400l); 18997: altpiece11at14at32: 18998: if (partsUsed & 0x800l) goto altpiece13at14at32; 18999: if (!(puzzle & 0x400c000l)) { 19000: if(!(puzzle & 0x406c000l)) 19001: altDoSolve32(15, 0x8000l, puzzle | 0x406c000l, partsUsed | 0x800l); 19002: if(!(puzzle & 0x2c00c000l)) 19003: altDoSolve32(15, 0x8000l, puzzle | 0x2c00c000l, partsUsed | 0x800l); 19004: if(!(puzzle & 0xc02c000l)) 19005: altDoSolve32(15, 0x8000l, puzzle | 0xc02c000l, partsUsed | 0x800l); 19006: if(!(puzzle & 0xc04c000l)) 19007: altDoSolve32(15, 0x8000l, puzzle | 0xc04c000l, partsUsed | 0x800l); 19008: if(!(puzzle & 0x4c00c000l)) 19009: altDoSolve32(15, 0x8000l, puzzle | 0x4c00c000l, partsUsed | 0x800l); 19010: if(!(puzzle & 0x2402c000l)) 19011: altDoSolve32(15, 0x8000l, puzzle | 0x2402c000l, partsUsed | 0x800l); 19012: if(!(puzzle & 0xd00c000l)) 19013: altDoSolve32(15, 0x8000l, puzzle | 0xd00c000l, partsUsed | 0x800l); 19014: if(!(puzzle & 0xc80c000l)) 19015: altDoSolve32(15, 0x8000l, puzzle | 0xc80c000l, partsUsed | 0x800l); 19016: } 19017: if (!(puzzle & 0x40044000l)) { 19018: if(!(puzzle & 0x60064000l)) 19019: altDoSolve32(15, 0x8000l, puzzle | 0x60064000l, partsUsed | 0x800l); 19020: if(!(puzzle & 0x4804c000l)) 19021: altDoSolve32(15, 0x8000l, puzzle | 0x4804c000l, partsUsed | 0x800l); 19022: if(!(puzzle & 0x4006c000l)) 19023: altDoSolve32(15, 0x8000l, puzzle | 0x4006c000l, partsUsed | 0x800l); 19024: } 19025: if (!(puzzle & 0x20024000l)) { 19026: if(!(puzzle & 0x2c024000l)) 19027: altDoSolve32(15, 0x8000l, puzzle | 0x2c024000l, partsUsed | 0x800l); 19028: if(!(puzzle & 0x24064000l)) 19029: altDoSolve32(15, 0x8000l, puzzle | 0x24064000l, partsUsed | 0x800l); 19030: if(!(puzzle & 0x2006c000l)) 19031: altDoSolve32(15, 0x8000l, puzzle | 0x2006c000l, partsUsed | 0x800l); 19032: if(!(puzzle & 0x64024000l)) 19033: altDoSolve32(15, 0x8000l, puzzle | 0x64024000l, partsUsed | 0x800l); 19034: } 19035: if(!(puzzle & 0x806c000l)) 19036: altDoSolve32(15, 0x8000l, puzzle | 0x806c000l, partsUsed | 0x800l); 19037: if(!(puzzle & 0x6c004000l)) 19038: altDoSolve32(15, 0x8000l, puzzle | 0x6c004000l, partsUsed | 0x800l); 19039: if(!(puzzle & 0xd804000l)) 19040: altDoSolve32(15, 0x8000l, puzzle | 0xd804000l, partsUsed | 0x800l); 19041: altpiece13at14at32: 19042: break; 19043: case 15: 19044: if (partsUsed & 0x40l) goto altpiece7at15at32; 19045: if(!(puzzle & 0x49208000l)) 19046: altDoSolve32(16, 0x10000l, puzzle | 0x49208000l, partsUsed | 0x40l); 19047: altpiece7at15at32: 19048: if (partsUsed & 0x100l) goto altpiece9at15at32; 19049: if(!(puzzle & 0xc808000l)) 19050: altDoSolve32(16, 0x10000l, puzzle | 0xc808000l, partsUsed | 0x100l); 19051: if(!(puzzle & 0xc048000l)) 19052: altDoSolve32(16, 0x10000l, puzzle | 0xc048000l, partsUsed | 0x100l); 19053: if(!(puzzle & 0x12018000l)) 19054: altDoSolve32(16, 0x10000l, puzzle | 0x12018000l, partsUsed | 0x100l); 19055: if(!(puzzle & 0x10058000l)) 19056: altDoSolve32(16, 0x10000l, puzzle | 0x10058000l, partsUsed | 0x100l); 19057: if(!(puzzle & 0xb008000l)) 19058: altDoSolve32(16, 0x10000l, puzzle | 0xb008000l, partsUsed | 0x100l); 19059: if(!(puzzle & 0x20068000l)) 19060: altDoSolve32(16, 0x10000l, puzzle | 0x20068000l, partsUsed | 0x100l); 19061: if(!(puzzle & 0x68008000l)) 19062: altDoSolve32(16, 0x10000l, puzzle | 0x68008000l, partsUsed | 0x100l); 19063: if(!(puzzle & 0x48018000l)) 19064: altDoSolve32(16, 0x10000l, puzzle | 0x48018000l, partsUsed | 0x100l); 19065: if(!(puzzle & 0x98008000l)) 19066: altDoSolve32(16, 0x10000l, puzzle | 0x98008000l, partsUsed | 0x100l); 19067: if(!(puzzle & 0xc0048000l)) 19068: altDoSolve32(16, 0x10000l, puzzle | 0xc0048000l, partsUsed | 0x100l); 19069: if(!(puzzle & 0x80c8000l)) 19070: altDoSolve32(16, 0x10000l, puzzle | 0x80c8000l, partsUsed | 0x100l); 19071: if(!(puzzle & 0x80098000l)) 19072: altDoSolve32(16, 0x10000l, puzzle | 0x80098000l, partsUsed | 0x100l); 19073: altpiece9at15at32: 19074: if (partsUsed & 0x400l) goto altpiece11at15at32; 19075: if(!(puzzle & 0x1c018000l)) 19076: altDoSolve32(16, 0x10000l, puzzle | 0x1c018000l, partsUsed | 0x400l); 19077: if(!(puzzle & 0x49048000l)) 19078: altDoSolve32(16, 0x10000l, puzzle | 0x49048000l, partsUsed | 0x400l); 19079: if(!(puzzle & 0xf8000l)) 19080: altDoSolve32(16, 0x10000l, puzzle | 0xf8000l, partsUsed | 0x400l); 19081: altpiece11at15at32: 19082: if (partsUsed & 0x800l) goto altpiece13at15at32; 19083: if (!(puzzle & 0x8018000l)) { 19084: if(!(puzzle & 0x80d8000l)) 19085: altDoSolve32(16, 0x10000l, puzzle | 0x80d8000l, partsUsed | 0x800l); 19086: if(!(puzzle & 0x58018000l)) 19087: altDoSolve32(16, 0x10000l, puzzle | 0x58018000l, partsUsed | 0x800l); 19088: if(!(puzzle & 0x18058000l)) 19089: altDoSolve32(16, 0x10000l, puzzle | 0x18058000l, partsUsed | 0x800l); 19090: if(!(puzzle & 0x18098000l)) 19091: altDoSolve32(16, 0x10000l, puzzle | 0x18098000l, partsUsed | 0x800l); 19092: if(!(puzzle & 0x98018000l)) 19093: altDoSolve32(16, 0x10000l, puzzle | 0x98018000l, partsUsed | 0x800l); 19094: if(!(puzzle & 0x48058000l)) 19095: altDoSolve32(16, 0x10000l, puzzle | 0x48058000l, partsUsed | 0x800l); 19096: if(!(puzzle & 0x1a018000l)) 19097: altDoSolve32(16, 0x10000l, puzzle | 0x1a018000l, partsUsed | 0x800l); 19098: if(!(puzzle & 0x19018000l)) 19099: altDoSolve32(16, 0x10000l, puzzle | 0x19018000l, partsUsed | 0x800l); 19100: } 19101: if (!(puzzle & 0x80088000l)) { 19102: if(!(puzzle & 0xc00c8000l)) 19103: altDoSolve32(16, 0x10000l, puzzle | 0xc00c8000l, partsUsed | 0x800l); 19104: if(!(puzzle & 0x90098000l)) 19105: altDoSolve32(16, 0x10000l, puzzle | 0x90098000l, partsUsed | 0x800l); 19106: if(!(puzzle & 0x800d8000l)) 19107: altDoSolve32(16, 0x10000l, puzzle | 0x800d8000l, partsUsed | 0x800l); 19108: } 19109: if (!(puzzle & 0x40048000l)) { 19110: if(!(puzzle & 0x58048000l)) 19111: altDoSolve32(16, 0x10000l, puzzle | 0x58048000l, partsUsed | 0x800l); 19112: if(!(puzzle & 0x480c8000l)) 19113: altDoSolve32(16, 0x10000l, puzzle | 0x480c8000l, partsUsed | 0x800l); 19114: if(!(puzzle & 0x400d8000l)) 19115: altDoSolve32(16, 0x10000l, puzzle | 0x400d8000l, partsUsed | 0x800l); 19116: if(!(puzzle & 0xc8048000l)) 19117: altDoSolve32(16, 0x10000l, puzzle | 0xc8048000l, partsUsed | 0x800l); 19118: if(!(puzzle & 0x68048000l)) 19119: altDoSolve32(16, 0x10000l, puzzle | 0x68048000l, partsUsed | 0x800l); 19120: if(!(puzzle & 0x60068000l)) 19121: altDoSolve32(16, 0x10000l, puzzle | 0x60068000l, partsUsed | 0x800l); 19122: if(!(puzzle & 0x4c048000l)) 19123: altDoSolve32(16, 0x10000l, puzzle | 0x4c048000l, partsUsed | 0x800l); 19124: if(!(puzzle & 0x48068000l)) 19125: altDoSolve32(16, 0x10000l, puzzle | 0x48068000l, partsUsed | 0x800l); 19126: } 19127: if(!(puzzle & 0x100d8000l)) 19128: altDoSolve32(16, 0x10000l, puzzle | 0x100d8000l, partsUsed | 0x800l); 19129: if(!(puzzle & 0xd8008000l)) 19130: altDoSolve32(16, 0x10000l, puzzle | 0xd8008000l, partsUsed | 0x800l); 19131: if(!(puzzle & 0x6c008000l)) 19132: altDoSolve32(16, 0x10000l, puzzle | 0x6c008000l, partsUsed | 0x800l); 19133: if(!(puzzle & 0x1b008000l)) 19134: altDoSolve32(16, 0x10000l, puzzle | 0x1b008000l, partsUsed | 0x800l); 19135: if(!(puzzle & 0xd808000l)) 19136: altDoSolve32(16, 0x10000l, puzzle | 0xd808000l, partsUsed | 0x800l); 19137: altpiece13at15at32: 19138: break; 19139: case 16: 19140: if (partsUsed & 0x40l) goto altpiece7at16at32; 19141: if(!(puzzle & 0x92410000l)) 19142: altDoSolve32(17, 0x20000l, puzzle | 0x92410000l, partsUsed | 0x40l); 19143: altpiece7at16at32: 19144: if (partsUsed & 0x100l) goto altpiece9at16at32; 19145: if(!(puzzle & 0x19010000l)) 19146: altDoSolve32(17, 0x20000l, puzzle | 0x19010000l, partsUsed | 0x100l); 19147: if(!(puzzle & 0x18090000l)) 19148: altDoSolve32(17, 0x20000l, puzzle | 0x18090000l, partsUsed | 0x100l); 19149: if(!(puzzle & 0x400d0000l)) 19150: altDoSolve32(17, 0x20000l, puzzle | 0x400d0000l, partsUsed | 0x100l); 19151: if(!(puzzle & 0xd0010000l)) 19152: altDoSolve32(17, 0x20000l, puzzle | 0xd0010000l, partsUsed | 0x100l); 19153: altpiece9at16at32: 19154: if (partsUsed & 0x400l) goto altpiece11at16at32; 19155: if(!(puzzle & 0x92090000l)) 19156: altDoSolve32(17, 0x20000l, puzzle | 0x92090000l, partsUsed | 0x400l); 19157: altpiece11at16at32: 19158: if (partsUsed & 0x800l) goto altpiece13at16at32; 19159: if (!(puzzle & 0xc0010000l)) { 19160: if(!(puzzle & 0xd8010000l)) 19161: altDoSolve32(17, 0x20000l, puzzle | 0xd8010000l, partsUsed | 0x800l); 19162: if(!(puzzle & 0xd0090000l)) 19163: altDoSolve32(17, 0x20000l, puzzle | 0xd0090000l, partsUsed | 0x800l); 19164: if(!(puzzle & 0xc00d0000l)) 19165: altDoSolve32(17, 0x20000l, puzzle | 0xc00d0000l, partsUsed | 0x800l); 19166: } 19167: if(!(puzzle & 0x98090000l)) 19168: altDoSolve32(17, 0x20000l, puzzle | 0x98090000l, partsUsed | 0x800l); 19169: if(!(puzzle & 0x900d0000l)) 19170: altDoSolve32(17, 0x20000l, puzzle | 0x900d0000l, partsUsed | 0x800l); 19171: if(!(puzzle & 0x1b010000l)) 19172: altDoSolve32(17, 0x20000l, puzzle | 0x1b010000l, partsUsed | 0x800l); 19173: altpiece13at16at32: 19174: break; 19175: case 17: 19176: if (partsUsed & 0x20l) goto altpiece6at17at32; 19177: if(!(puzzle & 0x24920000l)) 19178: altDoSolve32(18, 0x40000l, puzzle | 0x24920000l, partsUsed | 0x20l); 19179: altpiece6at17at32: 19180: if (partsUsed & 0x80l) goto altpiece8at17at32; 19181: if(!(puzzle & 0xe00a0000l)) 19182: altDoSolve32(18, 0x40000l, puzzle | 0xe00a0000l, partsUsed | 0x80l); 19183: if(!(puzzle & 0xa00e0000l)) 19184: altDoSolve32(18, 0x40000l, puzzle | 0xa00e0000l, partsUsed | 0x80l); 19185: altpiece8at17at32: 19186: if (partsUsed & 0x100l) goto altpiece9at17at32; 19187: if(!(puzzle & 0x48060000l)) 19188: altDoSolve32(18, 0x40000l, puzzle | 0x48060000l, partsUsed | 0x100l); 19189: if(!(puzzle & 0x2c020000l)) 19190: altDoSolve32(18, 0x40000l, puzzle | 0x2c020000l, partsUsed | 0x100l); 19191: altpiece9at17at32: 19192: if (partsUsed & 0x400l) goto altpiece11at17at32; 19193: if (!(puzzle & 0x40060000l)) { 19194: if(!(puzzle & 0xe0060000l)) 19195: altDoSolve32(18, 0x40000l, puzzle | 0xe0060000l, partsUsed | 0x400l); 19196: if(!(puzzle & 0x600e0000l)) 19197: altDoSolve32(18, 0x40000l, puzzle | 0x600e0000l, partsUsed | 0x400l); 19198: if(!(puzzle & 0xc00e0000l)) 19199: altDoSolve32(18, 0x40000l, puzzle | 0xc00e0000l, partsUsed | 0x400l); 19200: } 19201: altpiece11at17at32: 19202: if (partsUsed & 0x800l) goto altpiece13at17at32; 19203: if (!(puzzle & 0x60020000l)) { 19204: if(!(puzzle & 0x6c020000l)) 19205: altDoSolve32(18, 0x40000l, puzzle | 0x6c020000l, partsUsed | 0x800l); 19206: if(!(puzzle & 0x68060000l)) 19207: altDoSolve32(18, 0x40000l, puzzle | 0x68060000l, partsUsed | 0x800l); 19208: if(!(puzzle & 0x64060000l)) 19209: altDoSolve32(18, 0x40000l, puzzle | 0x64060000l, partsUsed | 0x800l); 19210: } 19211: altpiece13at17at32: 19212: break; 19213: case 18: 19214: if (partsUsed & 0x20l) goto altpiece6at18at32; 19215: if(!(puzzle & 0x49240000l)) 19216: altDoSolve32(19, 0x80000l, puzzle | 0x49240000l, partsUsed | 0x20l); 19217: altpiece6at18at32: 19218: if (partsUsed & 0x100l) goto altpiece9at18at32; 19219: if(!(puzzle & 0x58040000l)) 19220: altDoSolve32(19, 0x80000l, puzzle | 0x58040000l, partsUsed | 0x100l); 19221: if(!(puzzle & 0x64040000l)) 19222: altDoSolve32(19, 0x80000l, puzzle | 0x64040000l, partsUsed | 0x100l); 19223: if(!(puzzle & 0x900c0000l)) 19224: altDoSolve32(19, 0x80000l, puzzle | 0x900c0000l, partsUsed | 0x100l); 19225: altpiece9at18at32: 19226: if (partsUsed & 0x400l) goto altpiece11at18at32; 19227: if(!(puzzle & 0xe00c0000l)) 19228: altDoSolve32(19, 0x80000l, puzzle | 0xe00c0000l, partsUsed | 0x400l); 19229: altpiece11at18at32: 19230: if (partsUsed & 0x800l) goto altpiece13at18at32; 19231: if (!(puzzle & 0xc0040000l)) { 19232: if(!(puzzle & 0xd8040000l)) 19233: altDoSolve32(19, 0x80000l, puzzle | 0xd8040000l, partsUsed | 0x800l); 19234: if(!(puzzle & 0xd00c0000l)) 19235: altDoSolve32(19, 0x80000l, puzzle | 0xd00c0000l, partsUsed | 0x800l); 19236: if(!(puzzle & 0xc80c0000l)) 19237: altDoSolve32(19, 0x80000l, puzzle | 0xc80c0000l, partsUsed | 0x800l); 19238: } 19239: if(!(puzzle & 0x6c040000l)) 19240: altDoSolve32(19, 0x80000l, puzzle | 0x6c040000l, partsUsed | 0x800l); 19241: altpiece13at18at32: 19242: break; 19243: case 19: 19244: if (partsUsed & 0x20l) goto altpiece6at19at32; 19245: if(!(puzzle & 0x92480000l)) 19246: altDoSolve32(20, 0x100000l, puzzle | 0x92480000l, partsUsed | 0x20l); 19247: altpiece6at19at32: 19248: if (partsUsed & 0x100l) goto altpiece9at19at32; 19249: if(!(puzzle & 0xc8080000l)) 19250: altDoSolve32(20, 0x100000l, puzzle | 0xc8080000l, partsUsed | 0x100l); 19251: altpiece9at19at32: 19252: if (partsUsed & 0x800l) goto altpiece13at19at32; 19253: if(!(puzzle & 0xd8080000l)) 19254: altDoSolve32(20, 0x100000l, puzzle | 0xd8080000l, partsUsed | 0x800l); 19255: altpiece13at19at32: 19256: break; 19257: case 20: 19258: if (partsUsed & 0x2l) goto altpiece2at20at32; 19259: if(!(puzzle & 0x13300000l)) 19260: altDoSolve32(21, 0x200000l, puzzle | 0x13300000l, partsUsed | 0x2l); 19261: if(!(puzzle & 0x19900000l)) 19262: altDoSolve32(21, 0x200000l, puzzle | 0x19900000l, partsUsed | 0x2l); 19263: altpiece2at20at32: 19264: if (partsUsed & 0x4l) goto altpiece3at20at32; 19265: if(!(puzzle & 0x9700000l)) 19266: altDoSolve32(21, 0x200000l, puzzle | 0x9700000l, partsUsed | 0x4l); 19267: if(!(puzzle & 0x7900000l)) 19268: altDoSolve32(21, 0x200000l, puzzle | 0x7900000l, partsUsed | 0x4l); 19269: altpiece3at20at32: 19270: if (partsUsed & 0x8l) goto altpiece4at20at32; 19271: if(!(puzzle & 0x19300000l)) 19272: altDoSolve32(21, 0x200000l, puzzle | 0x19300000l, partsUsed | 0x8l); 19273: if(!(puzzle & 0x13900000l)) 19274: altDoSolve32(21, 0x200000l, puzzle | 0x13900000l, partsUsed | 0x8l); 19275: altpiece4at20at32: 19276: if (partsUsed & 0x10l) goto altpiece5at20at32; 19277: if(!(puzzle & 0x2cb00000l)) 19278: altDoSolve32(21, 0x200000l, puzzle | 0x2cb00000l, partsUsed | 0x10l); 19279: if(!(puzzle & 0x65900000l)) 19280: altDoSolve32(21, 0x200000l, puzzle | 0x65900000l, partsUsed | 0x10l); 19281: if(!(puzzle & 0x4d300000l)) 19282: altDoSolve32(21, 0x200000l, puzzle | 0x4d300000l, partsUsed | 0x10l); 19283: altpiece5at20at32: 19284: if (partsUsed & 0x20l) goto altpiece6at20at32; 19285: if(!(puzzle & 0x24b00000l)) 19286: altDoSolve32(21, 0x200000l, puzzle | 0x24b00000l, partsUsed | 0x20l); 19287: if(!(puzzle & 0x64900000l)) 19288: altDoSolve32(21, 0x200000l, puzzle | 0x64900000l, partsUsed | 0x20l); 19289: if(!(puzzle & 0x49300000l)) 19290: altDoSolve32(21, 0x200000l, puzzle | 0x49300000l, partsUsed | 0x20l); 19291: altpiece6at20at32: 19292: if (partsUsed & 0x40l) goto altpiece7at20at32; 19293: if(!(puzzle & 0x25900000l)) 19294: altDoSolve32(21, 0x200000l, puzzle | 0x25900000l, partsUsed | 0x40l); 19295: if(!(puzzle & 0x2c900000l)) 19296: altDoSolve32(21, 0x200000l, puzzle | 0x2c900000l, partsUsed | 0x40l); 19297: altpiece7at20at32: 19298: if (partsUsed & 0x80l) goto altpiece8at20at32; 19299: if(!(puzzle & 0x3d00000l)) 19300: altDoSolve32(21, 0x200000l, puzzle | 0x3d00000l, partsUsed | 0x80l); 19301: if(!(puzzle & 0x2f00000l)) 19302: altDoSolve32(21, 0x200000l, puzzle | 0x2f00000l, partsUsed | 0x80l); 19303: if(!(puzzle & 0xcb00000l)) 19304: altDoSolve32(21, 0x200000l, puzzle | 0xcb00000l, partsUsed | 0x80l); 19305: if(!(puzzle & 0xd300000l)) 19306: altDoSolve32(21, 0x200000l, puzzle | 0xd300000l, partsUsed | 0x80l); 19307: altpiece8at20at32: 19308: if (partsUsed & 0x200l) goto altpiece10at20at32; 19309: if(!(puzzle & 0xb300000l)) 19310: altDoSolve32(21, 0x200000l, puzzle | 0xb300000l, partsUsed | 0x200l); 19311: if(!(puzzle & 0xb900000l)) 19312: altDoSolve32(21, 0x200000l, puzzle | 0xb900000l, partsUsed | 0x200l); 19313: altpiece10at20at32: 19314: if (partsUsed & 0x400l) goto altpiece11at20at32; 19315: if (!(puzzle & 0x1300000l)) { 19316: if(!(puzzle & 0x3700000l)) 19317: altDoSolve32(21, 0x200000l, puzzle | 0x3700000l, partsUsed | 0x400l); 19318: if(!(puzzle & 0x1f00000l)) 19319: altDoSolve32(21, 0x200000l, puzzle | 0x1f00000l, partsUsed | 0x400l); 19320: if(!(puzzle & 0x5b00000l)) 19321: altDoSolve32(21, 0x200000l, puzzle | 0x5b00000l, partsUsed | 0x400l); 19322: if(!(puzzle & 0x9b00000l)) 19323: altDoSolve32(21, 0x200000l, puzzle | 0x9b00000l, partsUsed | 0x400l); 19324: if(!(puzzle & 0x3b00000l)) 19325: altDoSolve32(21, 0x200000l, puzzle | 0x3b00000l, partsUsed | 0x400l); 19326: } 19327: if(!(puzzle & 0xd900000l)) 19328: altDoSolve32(21, 0x200000l, puzzle | 0xd900000l, partsUsed | 0x400l); 19329: altpiece11at20at32: 19330: break; 19331: case 21: 19332: if (partsUsed & 0x2l) goto altpiece2at21at32; 19333: if(!(puzzle & 0x5e00000l)) 19334: altDoSolve32(22, 0x400000l, puzzle | 0x5e00000l, partsUsed | 0x2l); 19335: altpiece2at21at32: 19336: if (partsUsed & 0x4l) goto altpiece3at21at32; 19337: if(!(puzzle & 0x1d200000l)) 19338: altDoSolve32(22, 0x400000l, puzzle | 0x1d200000l, partsUsed | 0x4l); 19339: altpiece3at21at32: 19340: if (partsUsed & 0x8l) goto altpiece4at21at32; 19341: if(!(puzzle & 0xd600000l)) 19342: altDoSolve32(22, 0x400000l, puzzle | 0xd600000l, partsUsed | 0x8l); 19343: altpiece4at21at32: 19344: if (partsUsed & 0x10l) goto altpiece5at21at32; 19345: if (!(puzzle & 0x49200000l)) { 19346: if(!(puzzle & 0x69a00000l)) 19347: altDoSolve32(22, 0x400000l, puzzle | 0x69a00000l, partsUsed | 0x10l); 19348: if(!(puzzle & 0xcb200000l)) 19349: altDoSolve32(22, 0x400000l, puzzle | 0xcb200000l, partsUsed | 0x10l); 19350: if(!(puzzle & 0x59600000l)) 19351: altDoSolve32(22, 0x400000l, puzzle | 0x59600000l, partsUsed | 0x10l); 19352: } 19353: if(!(puzzle & 0x9a600000l)) 19354: altDoSolve32(22, 0x400000l, puzzle | 0x9a600000l, partsUsed | 0x10l); 19355: altpiece5at21at32: 19356: if (partsUsed & 0x20l) goto altpiece6at21at32; 19357: if (!(puzzle & 0x49200000l)) { 19358: if(!(puzzle & 0x69200000l)) 19359: altDoSolve32(22, 0x400000l, puzzle | 0x69200000l, partsUsed | 0x20l); 19360: if(!(puzzle & 0x49600000l)) 19361: altDoSolve32(22, 0x400000l, puzzle | 0x49600000l, partsUsed | 0x20l); 19362: if(!(puzzle & 0xc9200000l)) 19363: altDoSolve32(22, 0x400000l, puzzle | 0xc9200000l, partsUsed | 0x20l); 19364: } 19365: if(!(puzzle & 0x92600000l)) 19366: altDoSolve32(22, 0x400000l, puzzle | 0x92600000l, partsUsed | 0x20l); 19367: altpiece6at21at32: 19368: if (partsUsed & 0x40l) goto altpiece7at21at32; 19369: if (!(puzzle & 0x49200000l)) { 19370: if(!(puzzle & 0x49a00000l)) 19371: altDoSolve32(22, 0x400000l, puzzle | 0x49a00000l, partsUsed | 0x40l); 19372: if(!(puzzle & 0x4d200000l)) 19373: altDoSolve32(22, 0x400000l, puzzle | 0x4d200000l, partsUsed | 0x40l); 19374: if(!(puzzle & 0x4b200000l)) 19375: altDoSolve32(22, 0x400000l, puzzle | 0x4b200000l, partsUsed | 0x40l); 19376: if(!(puzzle & 0x59200000l)) 19377: altDoSolve32(22, 0x400000l, puzzle | 0x59200000l, partsUsed | 0x40l); 19378: } 19379: altpiece7at21at32: 19380: if (partsUsed & 0x80l) goto altpiece8at21at32; 19381: if(!(puzzle & 0x19600000l)) 19382: altDoSolve32(22, 0x400000l, puzzle | 0x19600000l, partsUsed | 0x80l); 19383: if(!(puzzle & 0x1a600000l)) 19384: altDoSolve32(22, 0x400000l, puzzle | 0x1a600000l, partsUsed | 0x80l); 19385: altpiece8at21at32: 19386: if (partsUsed & 0x200l) goto altpiece10at21at32; 19387: if (!(puzzle & 0x1a00000l)) { 19388: if(!(puzzle & 0x13a00000l)) 19389: altDoSolve32(22, 0x400000l, puzzle | 0x13a00000l, partsUsed | 0x200l); 19390: if(!(puzzle & 0x7a00000l)) 19391: altDoSolve32(22, 0x400000l, puzzle | 0x7a00000l, partsUsed | 0x200l); 19392: if(!(puzzle & 0x9e00000l)) 19393: altDoSolve32(22, 0x400000l, puzzle | 0x9e00000l, partsUsed | 0x200l); 19394: if(!(puzzle & 0x19a00000l)) 19395: altDoSolve32(22, 0x400000l, puzzle | 0x19a00000l, partsUsed | 0x200l); 19396: } 19397: if(!(puzzle & 0xf200000l)) 19398: altDoSolve32(22, 0x400000l, puzzle | 0xf200000l, partsUsed | 0x200l); 19399: altpiece10at21at32: 19400: if (partsUsed & 0x400l) goto altpiece11at21at32; 19401: if (!(puzzle & 0x3200000l)) { 19402: if(!(puzzle & 0xb600000l)) 19403: altDoSolve32(22, 0x400000l, puzzle | 0xb600000l, partsUsed | 0x400l); 19404: if(!(puzzle & 0x13600000l)) 19405: altDoSolve32(22, 0x400000l, puzzle | 0x13600000l, partsUsed | 0x400l); 19406: if(!(puzzle & 0x1b200000l)) 19407: altDoSolve32(22, 0x400000l, puzzle | 0x1b200000l, partsUsed | 0x400l); 19408: } 19409: if(!(puzzle & 0x3e00000l)) 19410: altDoSolve32(22, 0x400000l, puzzle | 0x3e00000l, partsUsed | 0x400l); 19411: if(!(puzzle & 0xda00000l)) 19412: altDoSolve32(22, 0x400000l, puzzle | 0xda00000l, partsUsed | 0x400l); 19413: altpiece11at21at32: 19414: break; 19415: case 22: 19416: if (partsUsed & 0x2l) goto altpiece2at22at32; 19417: if(!(puzzle & 0xf400000l)) 19418: altDoSolve32(23, 0x800000l, puzzle | 0xf400000l, partsUsed | 0x2l); 19419: altpiece2at22at32: 19420: if (partsUsed & 0x4l) goto altpiece3at22at32; 19421: if(!(puzzle & 0x13c00000l)) 19422: altDoSolve32(23, 0x800000l, puzzle | 0x13c00000l, partsUsed | 0x4l); 19423: altpiece3at22at32: 19424: if (partsUsed & 0x8l) goto altpiece4at22at32; 19425: if(!(puzzle & 0x7c00000l)) 19426: altDoSolve32(23, 0x800000l, puzzle | 0x7c00000l, partsUsed | 0x8l); 19427: altpiece4at22at32: 19428: if (partsUsed & 0x10l) goto altpiece5at22at32; 19429: if(!(puzzle & 0xd3400000l)) 19430: altDoSolve32(23, 0x800000l, puzzle | 0xd3400000l, partsUsed | 0x10l); 19431: altpiece5at22at32: 19432: if (partsUsed & 0x20l) goto altpiece6at22at32; 19433: if(!(puzzle & 0xd2400000l)) 19434: altDoSolve32(23, 0x800000l, puzzle | 0xd2400000l, partsUsed | 0x20l); 19435: altpiece6at22at32: 19436: if (partsUsed & 0x40l) goto altpiece7at22at32; 19437: if(!(puzzle & 0x93400000l)) 19438: altDoSolve32(23, 0x800000l, puzzle | 0x93400000l, partsUsed | 0x40l); 19439: if(!(puzzle & 0x9a400000l)) 19440: altDoSolve32(23, 0x800000l, puzzle | 0x9a400000l, partsUsed | 0x40l); 19441: altpiece7at22at32: 19442: if (partsUsed & 0x200l) goto altpiece10at22at32; 19443: if(!(puzzle & 0xbc00000l)) 19444: altDoSolve32(23, 0x800000l, puzzle | 0xbc00000l, partsUsed | 0x200l); 19445: altpiece10at22at32: 19446: if (partsUsed & 0x400l) goto altpiece11at22at32; 19447: if(!(puzzle & 0x1b400000l)) 19448: altDoSolve32(23, 0x800000l, puzzle | 0x1b400000l, partsUsed | 0x400l); 19449: altpiece11at22at32: 19450: break; 19451: case 23: 19452: if (partsUsed & 0x2l) goto altpiece2at23at32; 19453: if(!(puzzle & 0x99800000l)) 19454: altDoSolve32(24, 0x1000000l, puzzle | 0x99800000l, partsUsed | 0x2l); 19455: if(!(puzzle & 0xcc800000l)) 19456: altDoSolve32(24, 0x1000000l, puzzle | 0xcc800000l, partsUsed | 0x2l); 19457: altpiece2at23at32: 19458: if (partsUsed & 0x4l) goto altpiece3at23at32; 19459: if(!(puzzle & 0x4b800000l)) 19460: altDoSolve32(24, 0x1000000l, puzzle | 0x4b800000l, partsUsed | 0x4l); 19461: if(!(puzzle & 0x3c800000l)) 19462: altDoSolve32(24, 0x1000000l, puzzle | 0x3c800000l, partsUsed | 0x4l); 19463: altpiece3at23at32: 19464: if (partsUsed & 0x8l) goto altpiece4at23at32; 19465: if(!(puzzle & 0xc9800000l)) 19466: altDoSolve32(24, 0x1000000l, puzzle | 0xc9800000l, partsUsed | 0x8l); 19467: if(!(puzzle & 0x9c800000l)) 19468: altDoSolve32(24, 0x1000000l, puzzle | 0x9c800000l, partsUsed | 0x8l); 19469: altpiece4at23at32: 19470: if (partsUsed & 0x80l) goto altpiece8at23at32; 19471: if(!(puzzle & 0x1e800000l)) 19472: altDoSolve32(24, 0x1000000l, puzzle | 0x1e800000l, partsUsed | 0x80l); 19473: if(!(puzzle & 0x17800000l)) 19474: altDoSolve32(24, 0x1000000l, puzzle | 0x17800000l, partsUsed | 0x80l); 19475: if(!(puzzle & 0x65800000l)) 19476: altDoSolve32(24, 0x1000000l, puzzle | 0x65800000l, partsUsed | 0x80l); 19477: if(!(puzzle & 0x69800000l)) 19478: altDoSolve32(24, 0x1000000l, puzzle | 0x69800000l, partsUsed | 0x80l); 19479: altpiece8at23at32: 19480: if (partsUsed & 0x200l) goto altpiece10at23at32; 19481: if(!(puzzle & 0x59800000l)) 19482: altDoSolve32(24, 0x1000000l, puzzle | 0x59800000l, partsUsed | 0x200l); 19483: if(!(puzzle & 0x5c800000l)) 19484: altDoSolve32(24, 0x1000000l, puzzle | 0x5c800000l, partsUsed | 0x200l); 19485: altpiece10at23at32: 19486: if (partsUsed & 0x400l) goto altpiece11at23at32; 19487: if (!(puzzle & 0x9800000l)) { 19488: if(!(puzzle & 0x1b800000l)) 19489: altDoSolve32(24, 0x1000000l, puzzle | 0x1b800000l, partsUsed | 0x400l); 19490: if(!(puzzle & 0xf800000l)) 19491: altDoSolve32(24, 0x1000000l, puzzle | 0xf800000l, partsUsed | 0x400l); 19492: if(!(puzzle & 0x2d800000l)) 19493: altDoSolve32(24, 0x1000000l, puzzle | 0x2d800000l, partsUsed | 0x400l); 19494: if(!(puzzle & 0x4d800000l)) 19495: altDoSolve32(24, 0x1000000l, puzzle | 0x4d800000l, partsUsed | 0x400l); 19496: if(!(puzzle & 0x1d800000l)) 19497: altDoSolve32(24, 0x1000000l, puzzle | 0x1d800000l, partsUsed | 0x400l); 19498: } 19499: if(!(puzzle & 0x6c800000l)) 19500: altDoSolve32(24, 0x1000000l, puzzle | 0x6c800000l, partsUsed | 0x400l); 19501: altpiece11at23at32: 19502: break; 19503: case 24: 19504: if (partsUsed & 0x2l) goto altpiece2at24at32; 19505: if(!(puzzle & 0x2f000000l)) 19506: altDoSolve32(25, 0x2000000l, puzzle | 0x2f000000l, partsUsed | 0x2l); 19507: altpiece2at24at32: 19508: if (partsUsed & 0x4l) goto altpiece3at24at32; 19509: if(!(puzzle & 0xe9000000l)) 19510: altDoSolve32(25, 0x2000000l, puzzle | 0xe9000000l, partsUsed | 0x4l); 19511: altpiece3at24at32: 19512: if (partsUsed & 0x8l) goto altpiece4at24at32; 19513: if(!(puzzle & 0x6b000000l)) 19514: altDoSolve32(25, 0x2000000l, puzzle | 0x6b000000l, partsUsed | 0x8l); 19515: altpiece4at24at32: 19516: if (partsUsed & 0x80l) goto altpiece8at24at32; 19517: if(!(puzzle & 0xcb000000l)) 19518: altDoSolve32(25, 0x2000000l, puzzle | 0xcb000000l, partsUsed | 0x80l); 19519: if(!(puzzle & 0xd3000000l)) 19520: altDoSolve32(25, 0x2000000l, puzzle | 0xd3000000l, partsUsed | 0x80l); 19521: altpiece8at24at32: 19522: if (partsUsed & 0x200l) goto altpiece10at24at32; 19523: if (!(puzzle & 0xd000000l)) { 19524: if(!(puzzle & 0x9d000000l)) 19525: altDoSolve32(25, 0x2000000l, puzzle | 0x9d000000l, partsUsed | 0x200l); 19526: if(!(puzzle & 0x3d000000l)) 19527: altDoSolve32(25, 0x2000000l, puzzle | 0x3d000000l, partsUsed | 0x200l); 19528: if(!(puzzle & 0x4f000000l)) 19529: altDoSolve32(25, 0x2000000l, puzzle | 0x4f000000l, partsUsed | 0x200l); 19530: if(!(puzzle & 0xcd000000l)) 19531: altDoSolve32(25, 0x2000000l, puzzle | 0xcd000000l, partsUsed | 0x200l); 19532: } 19533: if(!(puzzle & 0x79000000l)) 19534: altDoSolve32(25, 0x2000000l, puzzle | 0x79000000l, partsUsed | 0x200l); 19535: altpiece10at24at32: 19536: if (partsUsed & 0x400l) goto altpiece11at24at32; 19537: if (!(puzzle & 0x19000000l)) { 19538: if(!(puzzle & 0x5b000000l)) 19539: altDoSolve32(25, 0x2000000l, puzzle | 0x5b000000l, partsUsed | 0x400l); 19540: if(!(puzzle & 0x9b000000l)) 19541: altDoSolve32(25, 0x2000000l, puzzle | 0x9b000000l, partsUsed | 0x400l); 19542: if(!(puzzle & 0xd9000000l)) 19543: altDoSolve32(25, 0x2000000l, puzzle | 0xd9000000l, partsUsed | 0x400l); 19544: } 19545: if(!(puzzle & 0x1f000000l)) 19546: altDoSolve32(25, 0x2000000l, puzzle | 0x1f000000l, partsUsed | 0x400l); 19547: if(!(puzzle & 0x6d000000l)) 19548: altDoSolve32(25, 0x2000000l, puzzle | 0x6d000000l, partsUsed | 0x400l); 19549: altpiece11at24at32: 19550: break; 19551: case 25: 19552: if (partsUsed & 0x2l) goto altpiece2at25at32; 19553: if(!(puzzle & 0x7a000000l)) 19554: altDoSolve32(26, 0x4000000l, puzzle | 0x7a000000l, partsUsed | 0x2l); 19555: altpiece2at25at32: 19556: if (partsUsed & 0x4l) goto altpiece3at25at32; 19557: if(!(puzzle & 0x9e000000l)) 19558: altDoSolve32(26, 0x4000000l, puzzle | 0x9e000000l, partsUsed | 0x4l); 19559: altpiece3at25at32: 19560: if (partsUsed & 0x8l) goto altpiece4at25at32; 19561: if(!(puzzle & 0x3e000000l)) 19562: altDoSolve32(26, 0x4000000l, puzzle | 0x3e000000l, partsUsed | 0x8l); 19563: altpiece4at25at32: 19564: if (partsUsed & 0x200l) goto altpiece10at25at32; 19565: if(!(puzzle & 0x5e000000l)) 19566: altDoSolve32(26, 0x4000000l, puzzle | 0x5e000000l, partsUsed | 0x200l); 19567: altpiece10at25at32: 19568: if (partsUsed & 0x400l) goto altpiece11at25at32; 19569: if(!(puzzle & 0xda000000l)) 19570: altDoSolve32(26, 0x4000000l, puzzle | 0xda000000l, partsUsed | 0x400l); 19571: altpiece11at25at32: 19572: break; 19573: case 26: 19574: if (partsUsed & 0x80l) goto altpiece8at26at32; 19575: if(!(puzzle & 0xbc000000l)) 19576: altDoSolve32(27, 0x8000000l, puzzle | 0xbc000000l, partsUsed | 0x80l); 19577: if(!(puzzle & 0xf4000000l)) 19578: altDoSolve32(27, 0x8000000l, puzzle | 0xf4000000l, partsUsed | 0x80l); 19579: altpiece8at26at32: 19580: if (partsUsed & 0x400l) goto altpiece11at26at32; 19581: if (!(puzzle & 0x4c000000l)) { 19582: if(!(puzzle & 0xdc000000l)) 19583: altDoSolve32(27, 0x8000000l, puzzle | 0xdc000000l, partsUsed | 0x400l); 19584: if(!(puzzle & 0x7c000000l)) 19585: altDoSolve32(27, 0x8000000l, puzzle | 0x7c000000l, partsUsed | 0x400l); 19586: if(!(puzzle & 0xec000000l)) 19587: altDoSolve32(27, 0x8000000l, puzzle | 0xec000000l, partsUsed | 0x400l); 19588: } 19589: altpiece11at26at32: 19590: break; 19591: case 27: 19592: if (partsUsed & 0x400l) goto altpiece11at27at32; 19593: if(!(puzzle & 0xf8000000l)) 19594: altDoSolve32(28, 0x10000000l, puzzle | 0xf8000000l, partsUsed | 0x400l); 19595: altpiece11at27at32: 19596: break; 19597: } 19598: } 19599: 19600: