Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 77.86 KB | None | 0 0
  1.  
  2.  
  3. public class Model extends Animable {
  4.  
  5. public static void nullLoader() {
  6. aClass21Array1661 = null;
  7. aBooleanArray1663 = null;
  8. aBooleanArray1664 = null;
  9. anIntArray1666 = null;
  10. anIntArray1667 = null;
  11. anIntArray1668 = null;
  12. anIntArray1669 = null;
  13. anIntArray1670 = null;
  14. anIntArray1671 = null;
  15. anIntArrayArray1672 = null;
  16. anIntArray1673 = null;
  17. anIntArrayArray1674 = null;
  18. anIntArray1675 = null;
  19. anIntArray1676 = null;
  20. anIntArray1677 = null;
  21. modelIntArray1 = null;
  22. modelIntArray2 = null;
  23. modelIntArray3 = null;
  24. modelIntArray4 = null;
  25. }
  26.  
  27. public void read525Model(byte abyte0[], int modelID) {
  28. Stream nc1 = new Stream(abyte0);
  29. Stream nc2 = new Stream(abyte0);
  30. Stream nc3 = new Stream(abyte0);
  31. Stream nc4 = new Stream(abyte0);
  32. Stream nc5 = new Stream(abyte0);
  33. Stream nc6 = new Stream(abyte0);
  34. Stream nc7 = new Stream(abyte0);
  35. nc1.currentOffset = abyte0.length - 23;
  36. int numVertices = nc1.readUnsignedWord();
  37. int numTriangles = nc1.readUnsignedWord();
  38. int numTexTriangles = nc1.readUnsignedByte();
  39. Class21 ModelDef_1 = aClass21Array1661[modelID] = new Class21();
  40. ModelDef_1.aByteArray368 = abyte0;
  41. ModelDef_1.anInt369 = numVertices;
  42. ModelDef_1.anInt370 = numTriangles;
  43. ModelDef_1.anInt371 = numTexTriangles;
  44. int l1 = nc1.readUnsignedByte();
  45. boolean bool = (0x1 & l1 ^ 0xffffffff) == -2;
  46. int i2 = nc1.readUnsignedByte();
  47. int j2 = nc1.readUnsignedByte();
  48. int k2 = nc1.readUnsignedByte();
  49. int l2 = nc1.readUnsignedByte();
  50. int i3 = nc1.readUnsignedByte();
  51. int j3 = nc1.readUnsignedWord();
  52. int k3 = nc1.readUnsignedWord();
  53. int l3 = nc1.readUnsignedWord();
  54. int i4 = nc1.readUnsignedWord();
  55. int j4 = nc1.readUnsignedWord();
  56. int k4 = 0;
  57. int l4 = 0;
  58. int i5 = 0;
  59. byte[] x = null;
  60. byte[] O = null;
  61. byte[] J = null;
  62. byte[] F = null;
  63. byte[] cb = null;
  64. byte[] gb = null;
  65. byte[] lb = null;
  66. int[] kb = null;
  67. int[] y = null;
  68. int[] N = null;
  69. short[] D = null;
  70. int[] triangleColours2 = new int[numTriangles];
  71. if (numTexTriangles > 0) {
  72. O = new byte[numTexTriangles];
  73. nc1.currentOffset = 0;
  74. for (int j5 = 0; j5 < numTexTriangles; j5++) {
  75. byte byte0 = O[j5] = nc1.readSignedByte();
  76. if (byte0 == 0)
  77. k4++;
  78. if (byte0 >= 1 && byte0 <= 3)
  79. l4++;
  80. if (byte0 == 2)
  81. i5++;
  82. }
  83. }
  84. int k5 = numTexTriangles;
  85. int l5 = k5;
  86. k5 += numVertices;
  87. int i6 = k5;
  88. if (l1 == 1)
  89. k5 += numTriangles;
  90. int j6 = k5;
  91. k5 += numTriangles;
  92. int k6 = k5;
  93. if (i2 == 255)
  94. k5 += numTriangles;
  95. int l6 = k5;
  96. if (k2 == 1)
  97. k5 += numTriangles;
  98. int i7 = k5;
  99. if (i3 == 1)
  100. k5 += numVertices;
  101. int j7 = k5;
  102. if (j2 == 1)
  103. k5 += numTriangles;
  104. int k7 = k5;
  105. k5 += i4;
  106. int l7 = k5;
  107. if (l2 == 1)
  108. k5 += numTriangles * 2;
  109. int i8 = k5;
  110. k5 += j4;
  111. int j8 = k5;
  112. k5 += numTriangles * 2;
  113. int k8 = k5;
  114. k5 += j3;
  115. int l8 = k5;
  116. k5 += k3;
  117. int i9 = k5;
  118. k5 += l3;
  119. int j9 = k5;
  120. k5 += k4 * 6;
  121. int k9 = k5;
  122. k5 += l4 * 6;
  123. int l9 = k5;
  124. k5 += l4 * 6;
  125. int i10 = k5;
  126. k5 += l4;
  127. int j10 = k5;
  128. k5 += l4;
  129. int k10 = k5;
  130. k5 += l4 + i5 * 2;
  131. int[] vertexX = new int[numVertices];
  132. int[] vertexY = new int[numVertices];
  133. int[] vertexZ = new int[numVertices];
  134. int[] facePoint1 = new int[numTriangles];
  135. int[] facePoint2 = new int[numTriangles];
  136. int[] facePoint3 = new int[numTriangles];
  137. anIntArray1655 = new int[numVertices];
  138. anIntArray1637 = new int[numTriangles];
  139. anIntArray1638 = new int[numTriangles];
  140. anIntArray1639 = new int[numTriangles];
  141. anIntArray1656 = new int[numTriangles];
  142. if (i3 == 1)
  143. anIntArray1655 = new int[numVertices];
  144. if (bool)
  145. anIntArray1637 = new int[numTriangles];
  146. if (i2 == 255)
  147. anIntArray1638 = new int[numTriangles];
  148. else {
  149. }
  150. if (j2 == 1)
  151. anIntArray1639 = new int[numTriangles];
  152. if (k2 == 1)
  153. anIntArray1656 = new int[numTriangles];
  154. if (l2 == 1)
  155. D = new short[numTriangles];
  156. if (l2 == 1 && numTexTriangles > 0)
  157. x = new byte[numTriangles];
  158. triangleColours2 = new int[numTriangles];
  159. int[] texTrianglesPoint1 = null;
  160. int[] texTrianglesPoint2 = null;
  161. int[] texTrianglesPoint3 = null;
  162. if (numTexTriangles > 0) {
  163. texTrianglesPoint1 = new int[numTexTriangles];
  164. texTrianglesPoint2 = new int[numTexTriangles];
  165. texTrianglesPoint3 = new int[numTexTriangles];
  166. if (l4 > 0) {
  167. kb = new int[l4];
  168. N = new int[l4];
  169. y = new int[l4];
  170. gb = new byte[l4];
  171. lb = new byte[l4];
  172. F = new byte[l4];
  173. }
  174. if (i5 > 0) {
  175. cb = new byte[i5];
  176. J = new byte[i5];
  177. }
  178. }
  179. nc1.currentOffset = l5;
  180. nc2.currentOffset = k8;
  181. nc3.currentOffset = l8;
  182. nc4.currentOffset = i9;
  183. nc5.currentOffset = i7;
  184. int l10 = 0;
  185. int i11 = 0;
  186. int j11 = 0;
  187. for (int k11 = 0; k11 < numVertices; k11++) {
  188. int l11 = nc1.readUnsignedByte();
  189. int j12 = 0;
  190. if ((l11 & 1) != 0)
  191. j12 = nc2.method421();
  192. int l12 = 0;
  193. if ((l11 & 2) != 0)
  194. l12 = nc3.method421();
  195. int j13 = 0;
  196. if ((l11 & 4) != 0)
  197. j13 = nc4.method421();
  198. vertexX[k11] = l10 + j12;
  199. vertexY[k11] = i11 + l12;
  200. vertexZ[k11] = j11 + j13;
  201. l10 = vertexX[k11];
  202. i11 = vertexY[k11];
  203. j11 = vertexZ[k11];
  204. if (anIntArray1655 != null)
  205. anIntArray1655[k11] = nc5.readUnsignedByte();
  206. }
  207. nc1.currentOffset = j8;
  208. nc2.currentOffset = i6;
  209. nc3.currentOffset = k6;
  210. nc4.currentOffset = j7;
  211. nc5.currentOffset = l6;
  212. nc6.currentOffset = l7;
  213. nc7.currentOffset = i8;
  214. for (int i12 = 0; i12 < numTriangles; i12++) {
  215. triangleColours2[i12] = nc1.readUnsignedWord();
  216. if (l1 == 1) {
  217. anIntArray1637[i12] = nc2.readSignedByte();
  218. if (anIntArray1637[i12] == 2)
  219. triangleColours2[i12] = 65535;
  220. anIntArray1637[i12] = 0;
  221. }
  222. if (i2 == 255) {
  223. anIntArray1638[i12] = nc3.readSignedByte();
  224. }
  225. if (j2 == 1) {
  226. anIntArray1639[i12] = nc4.readSignedByte();
  227. if (anIntArray1639[i12] < 0)
  228. anIntArray1639[i12] = (256 + anIntArray1639[i12]);
  229. }
  230. if (k2 == 1)
  231. anIntArray1656[i12] = nc5.readUnsignedByte();
  232. if (l2 == 1)
  233. D[i12] = (short) (nc6.readUnsignedWord() - 1);
  234. if (x != null)
  235. if (D[i12] != -1)
  236. x[i12] = (byte) (nc7.readUnsignedByte() - 1);
  237. else
  238. x[i12] = -1;
  239. }
  240. ///fix's triangle issue, but fucked up - no need, loading all 474- models
  241. /*try {
  242. for(int i12 = 0; i12 < numTriangles; i12++) {
  243. triangleColours2[i12] = nc1.readUnsignedWord();
  244. if(l1 == 1){
  245. anIntArray1637[i12] = nc2.readSignedByte();
  246. }
  247. if(i2 == 255){
  248. anIntArray1638[i12] = nc3.readSignedByte();
  249. }
  250. if(j2 == 1){
  251. anIntArray1639[i12] = nc4.readSignedByte();
  252. if(anIntArray1639[i12] < 0)
  253. anIntArray1639[i12] = (256+anIntArray1639[i12]);
  254. }
  255. if(k2 == 1)
  256. anIntArray1656[i12] = nc5.readUnsignedByte();
  257. if(l2 == 1)
  258. D[i12] = (short)(nc6.readUnsignedWord() - 1);
  259. if(x != null)
  260. if(D[i12] != -1)
  261. x[i12] = (byte)(nc7.readUnsignedByte() -1);
  262. else
  263. x[i12] = -1;
  264. }
  265. } catch (Exception ex) {
  266. }*/
  267. nc1.currentOffset = k7;
  268. nc2.currentOffset = j6;
  269. int k12 = 0;
  270. int i13 = 0;
  271. int k13 = 0;
  272. int l13 = 0;
  273. for (int i14 = 0; i14 < numTriangles; i14++) {
  274. int j14 = nc2.readUnsignedByte();
  275. if (j14 == 1) {
  276. k12 = nc1.method421() + l13;
  277. l13 = k12;
  278. i13 = nc1.method421() + l13;
  279. l13 = i13;
  280. k13 = nc1.method421() + l13;
  281. l13 = k13;
  282. facePoint1[i14] = k12;
  283. facePoint2[i14] = i13;
  284. facePoint3[i14] = k13;
  285. }
  286. if (j14 == 2) {
  287. i13 = k13;
  288. k13 = nc1.method421() + l13;
  289. l13 = k13;
  290. facePoint1[i14] = k12;
  291. facePoint2[i14] = i13;
  292. facePoint3[i14] = k13;
  293. }
  294. if (j14 == 3) {
  295. k12 = k13;
  296. k13 = nc1.method421() + l13;
  297. l13 = k13;
  298. facePoint1[i14] = k12;
  299. facePoint2[i14] = i13;
  300. facePoint3[i14] = k13;
  301. }
  302. if (j14 == 4) {
  303. int l14 = k12;
  304. k12 = i13;
  305. i13 = l14;
  306. k13 = nc1.method421() + l13;
  307. l13 = k13;
  308. facePoint1[i14] = k12;
  309. facePoint2[i14] = i13;
  310. facePoint3[i14] = k13;
  311. }
  312. }
  313. nc1.currentOffset = j9;
  314. nc2.currentOffset = k9;
  315. nc3.currentOffset = l9;
  316. nc4.currentOffset = i10;
  317. nc5.currentOffset = j10;
  318. nc6.currentOffset = k10;
  319. for (int k14 = 0; k14 < numTexTriangles; k14++) {
  320. int i15 = O[k14] & 0xff;
  321. if (i15 == 0) {
  322. texTrianglesPoint1[k14] = nc1.readUnsignedWord();
  323. texTrianglesPoint2[k14] = nc1.readUnsignedWord();
  324. texTrianglesPoint3[k14] = nc1.readUnsignedWord();
  325. }
  326. if (i15 == 1) {
  327. texTrianglesPoint1[k14] = nc2.readUnsignedWord();
  328. texTrianglesPoint2[k14] = nc2.readUnsignedWord();
  329. texTrianglesPoint3[k14] = nc2.readUnsignedWord();
  330. kb[k14] = nc3.readUnsignedWord();
  331. N[k14] = nc3.readUnsignedWord();
  332. y[k14] = nc3.readUnsignedWord();
  333. gb[k14] = nc4.readSignedByte();
  334. lb[k14] = nc5.readSignedByte();
  335. F[k14] = nc6.readSignedByte();
  336. }
  337. if (i15 == 2) {
  338. texTrianglesPoint1[k14] = nc2.readUnsignedWord();
  339. texTrianglesPoint2[k14] = nc2.readUnsignedWord();
  340. texTrianglesPoint3[k14] = nc2.readUnsignedWord();
  341. kb[k14] = nc3.readUnsignedWord();
  342. N[k14] = nc3.readUnsignedWord();
  343. y[k14] = nc3.readUnsignedWord();
  344. gb[k14] = nc4.readSignedByte();
  345. lb[k14] = nc5.readSignedByte();
  346. F[k14] = nc6.readSignedByte();
  347. cb[k14] = nc6.readSignedByte();
  348. J[k14] = nc6.readSignedByte();
  349. }
  350. if (i15 == 3) {
  351. texTrianglesPoint1[k14] = nc2.readUnsignedWord();
  352. texTrianglesPoint2[k14] = nc2.readUnsignedWord();
  353. texTrianglesPoint3[k14] = nc2.readUnsignedWord();
  354. kb[k14] = nc3.readUnsignedWord();
  355. N[k14] = nc3.readUnsignedWord();
  356. y[k14] = nc3.readUnsignedWord();
  357. gb[k14] = nc4.readSignedByte();
  358. lb[k14] = nc5.readSignedByte();
  359. F[k14] = nc6.readSignedByte();
  360. }
  361. }
  362. if (i2 != 255) {
  363. for (int i12 = 0; i12 < numTriangles; i12++)
  364. anIntArray1638[i12] = i2;
  365. }
  366. anIntArray1640 = triangleColours2;
  367. anInt1626 = numVertices;
  368. anInt1630 = numTriangles;
  369. anIntArray1627 = vertexX;
  370. anIntArray1628 = vertexY;
  371. anIntArray1629 = vertexZ;
  372. anIntArray1631 = facePoint1;
  373. anIntArray1632 = facePoint2;
  374. anIntArray1633 = facePoint3;
  375. }
  376.  
  377. public Model(int modelId) {
  378. byte[] is = aClass21Array1661[modelId].aByteArray368;
  379. if (is[is.length - 1] == -1 && is[is.length - 2] == -1)
  380. read622Model(is, modelId);
  381. else
  382. readOldModel(modelId);
  383. if (newmodel[modelId]) {
  384. scale2(4);// 2 is too big -- 3 is almost right
  385. if(anIntArray1638 != null) {
  386. for(int j = 0; j < anIntArray1638.length; j++)
  387. anIntArray1638[j] = 10;
  388. }
  389. }
  390. }
  391.  
  392. public void scale2(int i) {
  393. for (int i1 = 0; i1 < anInt1626; i1++) {
  394. anIntArray1627[i1] = anIntArray1627[i1] / i;
  395. anIntArray1628[i1] = anIntArray1628[i1] / i;
  396. anIntArray1629[i1] = anIntArray1629[i1] / i;
  397. }
  398. }
  399.  
  400. public void read622Model(byte abyte0[], int modelID) {
  401. Stream nc1 = new Stream(abyte0);
  402. Stream nc2 = new Stream(abyte0);
  403. Stream nc3 = new Stream(abyte0);
  404. Stream nc4 = new Stream(abyte0);
  405. Stream nc5 = new Stream(abyte0);
  406. Stream nc6 = new Stream(abyte0);
  407. Stream nc7 = new Stream(abyte0);
  408. nc1.currentOffset = abyte0.length - 23;
  409. int numVertices = nc1.readUnsignedWord();
  410. int numTriangles = nc1.readUnsignedWord();
  411. int numTexTriangles = nc1.readUnsignedByte();
  412. Class21 ModelDef_1 = aClass21Array1661[modelID] = new Class21();
  413. ModelDef_1.aByteArray368 = abyte0;
  414. ModelDef_1.anInt369 = numVertices;
  415. ModelDef_1.anInt370 = numTriangles;
  416. ModelDef_1.anInt371 = numTexTriangles;
  417. int l1 = nc1.readUnsignedByte();
  418. boolean bool = (0x1 & l1 ^ 0xffffffff) == -2;
  419. boolean bool_26_ = (0x8 & l1) == 8;
  420. if (!bool_26_) {
  421. read525Model(abyte0, modelID);
  422. return;
  423. }
  424. int newformat = 0;
  425. if (bool_26_) {
  426. nc1.currentOffset -= 7;
  427. newformat = nc1.readUnsignedByte();
  428. nc1.currentOffset += 6;
  429. }
  430. if (newformat == 15)
  431. newmodel[modelID] = true;
  432. int i2 = nc1.readUnsignedByte();
  433. int j2 = nc1.readUnsignedByte();
  434. int k2 = nc1.readUnsignedByte();
  435. int l2 = nc1.readUnsignedByte();
  436. int i3 = nc1.readUnsignedByte();
  437. int j3 = nc1.readUnsignedWord();
  438. int k3 = nc1.readUnsignedWord();
  439. int l3 = nc1.readUnsignedWord();
  440. int i4 = nc1.readUnsignedWord();
  441. int j4 = nc1.readUnsignedWord();
  442. int k4 = 0;
  443. int l4 = 0;
  444. int i5 = 0;
  445. byte[] x = null;
  446. byte[] O = null;
  447. byte[] J = null;
  448. byte[] F = null;
  449. byte[] cb = null;
  450. byte[] gb = null;
  451. byte[] lb = null;
  452. int[] kb = null;
  453. int[] y = null;
  454. int[] N = null;
  455. short[] D = null;
  456. int[] triangleColours2 = new int[numTriangles];
  457. if (numTexTriangles > 0) {
  458. O = new byte[numTexTriangles];
  459. nc1.currentOffset = 0;
  460. for (int j5 = 0; j5 < numTexTriangles; j5++) {
  461. byte byte0 = O[j5] = nc1.readSignedByte();
  462. if (byte0 == 0)
  463. k4++;
  464. if (byte0 >= 1 && byte0 <= 3)
  465. l4++;
  466. if (byte0 == 2)
  467. i5++;
  468. }
  469. }
  470. int k5 = numTexTriangles;
  471. int l5 = k5;
  472. k5 += numVertices;
  473. int i6 = k5;
  474. if (bool)
  475. k5 += numTriangles;
  476. if (l1 == 1)
  477. k5 += numTriangles;
  478. int j6 = k5;
  479. k5 += numTriangles;
  480. int k6 = k5;
  481. if (i2 == 255)
  482. k5 += numTriangles;
  483. int l6 = k5;
  484. if (k2 == 1)
  485. k5 += numTriangles;
  486. int i7 = k5;
  487. if (i3 == 1)
  488. k5 += numVertices;
  489. int j7 = k5;
  490. if (j2 == 1)
  491. k5 += numTriangles;
  492. int k7 = k5;
  493. k5 += i4;
  494. int l7 = k5;
  495. if (l2 == 1)
  496. k5 += numTriangles * 2;
  497. int i8 = k5;
  498. k5 += j4;
  499. int j8 = k5;
  500. k5 += numTriangles * 2;
  501. int k8 = k5;
  502. k5 += j3;
  503. int l8 = k5;
  504. k5 += k3;
  505. int i9 = k5;
  506. k5 += l3;
  507. int j9 = k5;
  508. k5 += k4 * 6;
  509. int k9 = k5;
  510. k5 += l4 * 6;
  511. int i_59_ = 6;
  512. if (newformat != 14) {
  513. if (newformat >= 15)
  514. i_59_ = 9;
  515. } else
  516. i_59_ = 7;
  517. int l9 = k5;
  518. k5 += i_59_ * l4;
  519. int i10 = k5;
  520. k5 += l4;
  521. int j10 = k5;
  522. k5 += l4;
  523. int k10 = k5;
  524. k5 += l4 + i5 * 2;
  525. int[] vertexX = new int[numVertices];
  526. int[] vertexY = new int[numVertices];
  527. int[] vertexZ = new int[numVertices];
  528. int[] facePoint1 = new int[numTriangles];
  529. int[] facePoint2 = new int[numTriangles];
  530. int[] facePoint3 = new int[numTriangles];
  531. anIntArray1655 = new int[numVertices];
  532. anIntArray1637 = new int[numTriangles];
  533. anIntArray1638 = new int[numTriangles];
  534. anIntArray1639 = new int[numTriangles];
  535. anIntArray1656 = new int[numTriangles];
  536. if (i3 == 1)
  537. anIntArray1655 = new int[numVertices];
  538. if (bool)
  539. anIntArray1637 = new int[numTriangles];
  540. if (i2 == 255)
  541. anIntArray1638 = new int[numTriangles];
  542. else {
  543. }
  544. if (j2 == 1)
  545. anIntArray1639 = new int[numTriangles];
  546. if (k2 == 1)
  547. anIntArray1656 = new int[numTriangles];
  548. if (l2 == 1)
  549. D = new short[numTriangles];
  550. if (l2 == 1 && numTexTriangles > 0)
  551. x = new byte[numTriangles];
  552. triangleColours2 = new int[numTriangles];
  553. int[] texTrianglesPoint1 = null;
  554. int[] texTrianglesPoint2 = null;
  555. int[] texTrianglesPoint3 = null;
  556. if (numTexTriangles > 0) {
  557. texTrianglesPoint1 = new int[numTexTriangles];
  558. texTrianglesPoint2 = new int[numTexTriangles];
  559. texTrianglesPoint3 = new int[numTexTriangles];
  560. if (l4 > 0) {
  561. kb = new int[l4];
  562. N = new int[l4];
  563. y = new int[l4];
  564. gb = new byte[l4];
  565. lb = new byte[l4];
  566. F = new byte[l4];
  567. }
  568. if (i5 > 0) {
  569. cb = new byte[i5];
  570. J = new byte[i5];
  571. }
  572. }
  573. nc1.currentOffset = l5;
  574. nc2.currentOffset = k8;
  575. nc3.currentOffset = l8;
  576. nc4.currentOffset = i9;
  577. nc5.currentOffset = i7;
  578. int l10 = 0;
  579. int i11 = 0;
  580. int j11 = 0;
  581. for (int k11 = 0; k11 < numVertices; k11++) {
  582. int l11 = nc1.readUnsignedByte();
  583. int j12 = 0;
  584. if ((l11 & 1) != 0)
  585. j12 = nc2.method421();
  586. int l12 = 0;
  587. if ((l11 & 2) != 0)
  588. l12 = nc3.method421();
  589. int j13 = 0;
  590. if ((l11 & 4) != 0)
  591. j13 = nc4.method421();
  592. vertexX[k11] = l10 + j12;
  593. vertexY[k11] = i11 + l12;
  594. vertexZ[k11] = j11 + j13;
  595. l10 = vertexX[k11];
  596. i11 = vertexY[k11];
  597. j11 = vertexZ[k11];
  598. if (anIntArray1655 != null)
  599. anIntArray1655[k11] = nc5.readUnsignedByte();
  600. }
  601. nc1.currentOffset = j8;
  602. nc2.currentOffset = i6;
  603. nc3.currentOffset = k6;
  604. nc4.currentOffset = j7;
  605. nc5.currentOffset = l6;
  606. nc6.currentOffset = l7;
  607. nc7.currentOffset = i8;
  608. for (int i12 = 0; i12 < numTriangles; i12++) {
  609. triangleColours2[i12] = nc1.readUnsignedWord();
  610. if (l1 == 1) {
  611. anIntArray1637[i12] = nc2.readSignedByte();
  612. if (anIntArray1637[i12] == 2)
  613. triangleColours2[i12] = 65535;
  614. anIntArray1637[i12] = 0;
  615. }
  616. if (i2 == 255) {
  617. anIntArray1638[i12] = nc3.readSignedByte();
  618. }
  619. if (j2 == 1) {
  620. anIntArray1639[i12] = nc4.readSignedByte();
  621. if (anIntArray1639[i12] < 0)
  622. anIntArray1639[i12] = (256 + anIntArray1639[i12]);
  623. }
  624. if (k2 == 1)
  625. anIntArray1656[i12] = nc5.readUnsignedByte();
  626. if (l2 == 1)
  627. D[i12] = (short) (nc6.readUnsignedWord() - 1);
  628. if (x != null)
  629. if (D[i12] != -1)
  630. x[i12] = (byte) (nc7.readUnsignedByte() - 1);
  631. else
  632. x[i12] = -1;
  633. }
  634. nc1.currentOffset = k7;
  635. nc2.currentOffset = j6;
  636. int k12 = 0;
  637. int i13 = 0;
  638. int k13 = 0;
  639. int l13 = 0;
  640. for (int i14 = 0; i14 < numTriangles; i14++) {
  641. int j14 = nc2.readUnsignedByte();
  642. if (j14 == 1) {
  643. k12 = nc1.method421() + l13;
  644. l13 = k12;
  645. i13 = nc1.method421() + l13;
  646. l13 = i13;
  647. k13 = nc1.method421() + l13;
  648. l13 = k13;
  649. facePoint1[i14] = k12;
  650. facePoint2[i14] = i13;
  651. facePoint3[i14] = k13;
  652. }
  653. if (j14 == 2) {
  654. i13 = k13;
  655. k13 = nc1.method421() + l13;
  656. l13 = k13;
  657. facePoint1[i14] = k12;
  658. facePoint2[i14] = i13;
  659. facePoint3[i14] = k13;
  660. }
  661. if (j14 == 3) {
  662. k12 = k13;
  663. k13 = nc1.method421() + l13;
  664. l13 = k13;
  665. facePoint1[i14] = k12;
  666. facePoint2[i14] = i13;
  667. facePoint3[i14] = k13;
  668. }
  669. if (j14 == 4) {
  670. int l14 = k12;
  671. k12 = i13;
  672. i13 = l14;
  673. k13 = nc1.method421() + l13;
  674. l13 = k13;
  675. facePoint1[i14] = k12;
  676. facePoint2[i14] = i13;
  677. facePoint3[i14] = k13;
  678. }
  679. }
  680. nc1.currentOffset = j9;
  681. nc2.currentOffset = k9;
  682. nc3.currentOffset = l9;
  683. nc4.currentOffset = i10;
  684. nc5.currentOffset = j10;
  685. nc6.currentOffset = k10;
  686. for (int k14 = 0; k14 < numTexTriangles; k14++) {
  687. int i15 = O[k14] & 0xff;
  688. if (i15 == 0) {
  689. texTrianglesPoint1[k14] = nc1.readUnsignedWord();
  690. texTrianglesPoint2[k14] = nc1.readUnsignedWord();
  691. texTrianglesPoint3[k14] = nc1.readUnsignedWord();
  692. }
  693. if (i15 == 1) {
  694. texTrianglesPoint1[k14] = nc2.readUnsignedWord();
  695. texTrianglesPoint2[k14] = nc2.readUnsignedWord();
  696. texTrianglesPoint3[k14] = nc2.readUnsignedWord();
  697. if (newformat < 15) {
  698. kb[k14] = nc3.readUnsignedWord();
  699. if (newformat >= 14)
  700. N[k14] = nc3.v(-1);
  701. else
  702. N[k14] = nc3.readUnsignedWord();
  703. y[k14] = nc3.readUnsignedWord();
  704. } else {
  705. kb[k14] = nc3.v(-1);
  706. N[k14] = nc3.v(-1);
  707. y[k14] = nc3.v(-1);
  708. }
  709. gb[k14] = nc4.readSignedByte();
  710. lb[k14] = nc5.readSignedByte();
  711. F[k14] = nc6.readSignedByte();
  712. }
  713. if (i15 == 2) {
  714. texTrianglesPoint1[k14] = nc2.readUnsignedWord();
  715. texTrianglesPoint2[k14] = nc2.readUnsignedWord();
  716. texTrianglesPoint3[k14] = nc2.readUnsignedWord();
  717. if (newformat >= 15) {
  718. kb[k14] = nc3.v(-1);
  719. N[k14] = nc3.v(-1);
  720. y[k14] = nc3.v(-1);
  721. } else {
  722. kb[k14] = nc3.readUnsignedWord();
  723. if (newformat < 14)
  724. N[k14] = nc3.readUnsignedWord();
  725. else
  726. N[k14] = nc3.v(-1);
  727. y[k14] = nc3.readUnsignedWord();
  728. }
  729. gb[k14] = nc4.readSignedByte();
  730. lb[k14] = nc5.readSignedByte();
  731. F[k14] = nc6.readSignedByte();
  732. cb[k14] = nc6.readSignedByte();
  733. J[k14] = nc6.readSignedByte();
  734. }
  735. if (i15 == 3) {
  736. texTrianglesPoint1[k14] = nc2.readUnsignedWord();
  737. texTrianglesPoint2[k14] = nc2.readUnsignedWord();
  738. texTrianglesPoint3[k14] = nc2.readUnsignedWord();
  739. if (newformat < 15) {
  740. kb[k14] = nc3.readUnsignedWord();
  741. if (newformat < 14)
  742. N[k14] = nc3.readUnsignedWord();
  743. else
  744. N[k14] = nc3.v(-1);
  745. y[k14] = nc3.readUnsignedWord();
  746. } else {
  747. kb[k14] = nc3.v(-1);
  748. N[k14] = nc3.v(-1);
  749. y[k14] = nc3.v(-1);
  750. }
  751. gb[k14] = nc4.readSignedByte();
  752. lb[k14] = nc5.readSignedByte();
  753. F[k14] = nc6.readSignedByte();
  754. }
  755. }
  756. if (i2 != 255) {
  757. for (int i12 = 0; i12 < numTriangles; i12++)
  758. anIntArray1638[i12] = i2;
  759. }
  760. anIntArray1640 = triangleColours2;
  761. anInt1626 = numVertices;
  762. anInt1630 = numTriangles;
  763. anIntArray1627 = vertexX;
  764. anIntArray1628 = vertexY;
  765. anIntArray1629 = vertexZ;
  766. anIntArray1631 = facePoint1;
  767. anIntArray1632 = facePoint2;
  768. anIntArray1633 = facePoint3;
  769. }
  770.  
  771. private void readOldModel(int i) {
  772. int j = -870;
  773. aBoolean1618 = true;
  774. aBoolean1659 = false;
  775. anInt1620++;
  776. Class21 class21 = aClass21Array1661[i];
  777. anInt1626 = class21.anInt369;
  778. anInt1630 = class21.anInt370;
  779. anInt1642 = class21.anInt371;
  780. anIntArray1627 = new int[anInt1626];
  781. anIntArray1628 = new int[anInt1626];
  782. anIntArray1629 = new int[anInt1626];
  783. anIntArray1631 = new int[anInt1630];
  784. anIntArray1632 = new int[anInt1630];
  785. while (j >= 0)
  786. aBoolean1618 = !aBoolean1618;
  787. anIntArray1633 = new int[anInt1630];
  788. anIntArray1643 = new int[anInt1642];
  789. anIntArray1644 = new int[anInt1642];
  790. anIntArray1645 = new int[anInt1642];
  791. if (class21.anInt376 >= 0)
  792. anIntArray1655 = new int[anInt1626];
  793. if (class21.anInt380 >= 0)
  794. anIntArray1637 = new int[anInt1630];
  795. if (class21.anInt381 >= 0)
  796. anIntArray1638 = new int[anInt1630];
  797. else
  798. anInt1641 = -class21.anInt381 - 1;
  799. if (class21.anInt382 >= 0)
  800. anIntArray1639 = new int[anInt1630];
  801. if (class21.anInt383 >= 0)
  802. anIntArray1656 = new int[anInt1630];
  803. anIntArray1640 = new int[anInt1630];
  804. Stream stream = new Stream(class21.aByteArray368);
  805. stream.currentOffset = class21.anInt372;
  806. Stream stream_1 = new Stream(class21.aByteArray368);
  807. stream_1.currentOffset = class21.anInt373;
  808. Stream stream_2 = new Stream(class21.aByteArray368);
  809. stream_2.currentOffset = class21.anInt374;
  810. Stream stream_3 = new Stream(class21.aByteArray368);
  811. stream_3.currentOffset = class21.anInt375;
  812. Stream stream_4 = new Stream(class21.aByteArray368);
  813. stream_4.currentOffset = class21.anInt376;
  814. int k = 0;
  815. int l = 0;
  816. int i1 = 0;
  817. for (int j1 = 0; j1 < anInt1626; j1++) {
  818. int k1 = stream.readUnsignedByte();
  819. int i2 = 0;
  820. if ((k1 & 1) != 0)
  821. i2 = stream_1.method421();
  822. int k2 = 0;
  823. if ((k1 & 2) != 0)
  824. k2 = stream_2.method421();
  825. int i3 = 0;
  826. if ((k1 & 4) != 0)
  827. i3 = stream_3.method421();
  828. anIntArray1627[j1] = k + i2;
  829. anIntArray1628[j1] = l + k2;
  830. anIntArray1629[j1] = i1 + i3;
  831. k = anIntArray1627[j1];
  832. l = anIntArray1628[j1];
  833. i1 = anIntArray1629[j1];
  834. if (anIntArray1655 != null)
  835. anIntArray1655[j1] = stream_4.readUnsignedByte();
  836. }
  837. stream.currentOffset = class21.anInt379;
  838. stream_1.currentOffset = class21.anInt380;
  839. stream_2.currentOffset = class21.anInt381;
  840. stream_3.currentOffset = class21.anInt382;
  841. stream_4.currentOffset = class21.anInt383;
  842. for (int l1 = 0; l1 < anInt1630; l1++) {
  843. anIntArray1640[l1] = stream.readUnsignedWord();
  844. if (anIntArray1637 != null)
  845. anIntArray1637[l1] = stream_1.readUnsignedByte();
  846. if (anIntArray1638 != null)
  847. anIntArray1638[l1] = stream_2.readUnsignedByte();
  848. if (anIntArray1639 != null) {
  849. anIntArray1639[l1] = stream_3.readUnsignedByte();
  850. }
  851. if (anIntArray1656 != null)
  852. anIntArray1656[l1] = stream_4.readUnsignedByte();
  853. }
  854. stream.currentOffset = class21.anInt377;
  855. stream_1.currentOffset = class21.anInt378;
  856. int j2 = 0;
  857. int l2 = 0;
  858. int j3 = 0;
  859. int k3 = 0;
  860. for (int l3 = 0; l3 < anInt1630; l3++) {
  861. int i4 = stream_1.readUnsignedByte();
  862. if (i4 == 1) {
  863. j2 = stream.method421() + k3;
  864. k3 = j2;
  865. l2 = stream.method421() + k3;
  866. k3 = l2;
  867. j3 = stream.method421() + k3;
  868. k3 = j3;
  869. anIntArray1631[l3] = j2;
  870. anIntArray1632[l3] = l2;
  871. anIntArray1633[l3] = j3;
  872. }
  873. if (i4 == 2) {
  874.  
  875. l2 = j3;
  876. j3 = stream.method421() + k3;
  877. k3 = j3;
  878. anIntArray1631[l3] = j2;
  879. anIntArray1632[l3] = l2;
  880. anIntArray1633[l3] = j3;
  881. }
  882. if (i4 == 3) {
  883. j2 = j3;
  884.  
  885. j3 = stream.method421() + k3;
  886. k3 = j3;
  887. anIntArray1631[l3] = j2;
  888. anIntArray1632[l3] = l2;
  889. anIntArray1633[l3] = j3;
  890. }
  891. if (i4 == 4) {
  892. int k4 = j2;
  893. j2 = l2;
  894. l2 = k4;
  895. j3 = stream.method421() + k3;
  896. k3 = j3;
  897. anIntArray1631[l3] = j2;
  898. anIntArray1632[l3] = l2;
  899. anIntArray1633[l3] = j3;
  900. }
  901. }
  902. stream.currentOffset = class21.anInt384;
  903. for (int j4 = 0; j4 < anInt1642; j4++) {
  904. anIntArray1643[j4] = stream.readUnsignedWord();
  905. anIntArray1644[j4] = stream.readUnsignedWord();
  906. anIntArray1645[j4] = stream.readUnsignedWord();
  907. }
  908. }
  909.  
  910. public static void method460(byte abyte0[], int j) {
  911. try {
  912. if (abyte0 == null) {
  913. Class21 class21 = aClass21Array1661[j] = new Class21();
  914. class21.anInt369 = 0;
  915. class21.anInt370 = 0;
  916. class21.anInt371 = 0;
  917. return;
  918. }
  919. Stream stream = new Stream(abyte0);
  920. stream.currentOffset = abyte0.length - 18;
  921. Class21 class21_1 = aClass21Array1661[j] = new Class21();
  922. class21_1.aByteArray368 = abyte0;
  923. class21_1.anInt369 = stream.readUnsignedWord();
  924. class21_1.anInt370 = stream.readUnsignedWord();
  925. class21_1.anInt371 = stream.readUnsignedByte();
  926. int k = stream.readUnsignedByte();
  927. int l = stream.readUnsignedByte();
  928. int i1 = stream.readUnsignedByte();
  929. int j1 = stream.readUnsignedByte();
  930. int k1 = stream.readUnsignedByte();
  931. int l1 = stream.readUnsignedWord();
  932. int i2 = stream.readUnsignedWord();
  933. int j2 = stream.readUnsignedWord();
  934. int k2 = stream.readUnsignedWord();
  935. int l2 = 0;
  936. class21_1.anInt372 = l2;
  937. l2 += class21_1.anInt369;
  938. class21_1.anInt378 = l2;
  939. l2 += class21_1.anInt370;
  940. class21_1.anInt381 = l2;
  941. if (l == 255)
  942. l2 += class21_1.anInt370;
  943. else
  944. class21_1.anInt381 = -l - 1;
  945. class21_1.anInt383 = l2;
  946. if (j1 == 1)
  947. l2 += class21_1.anInt370;
  948. else
  949. class21_1.anInt383 = -1;
  950. class21_1.anInt380 = l2;
  951. if (k == 1)
  952. l2 += class21_1.anInt370;
  953. else
  954. class21_1.anInt380 = -1;
  955. class21_1.anInt376 = l2;
  956. if (k1 == 1)
  957. l2 += class21_1.anInt369;
  958. else
  959. class21_1.anInt376 = -1;
  960. class21_1.anInt382 = l2;
  961. if (i1 == 1)
  962. l2 += class21_1.anInt370;
  963. else
  964. class21_1.anInt382 = -1;
  965. class21_1.anInt377 = l2;
  966. l2 += k2;
  967. class21_1.anInt379 = l2;
  968. l2 += class21_1.anInt370 * 2;
  969. class21_1.anInt384 = l2;
  970. l2 += class21_1.anInt371 * 6;
  971. class21_1.anInt373 = l2;
  972. l2 += l1;
  973. class21_1.anInt374 = l2;
  974. l2 += i2;
  975. class21_1.anInt375 = l2;
  976. l2 += j2;
  977. } catch (Exception _ex) {
  978. }
  979. }
  980.  
  981. public static boolean newmodel[];
  982.  
  983. public static void method459(int i,
  984. OnDemandFetcherParent onDemandFetcherParent) {
  985. aClass21Array1661 = new Class21[80000];
  986. newmodel = new boolean[100000];
  987. aOnDemandFetcherParent_1662 = onDemandFetcherParent;
  988. }
  989.  
  990. public static void method461(int j) {
  991. aClass21Array1661[j] = null;
  992. }
  993.  
  994. public static Model method462(int j) {
  995. if (aClass21Array1661 == null)
  996. return null;
  997. Class21 class21 = aClass21Array1661[j];
  998. if (class21 == null) {
  999. aOnDemandFetcherParent_1662.method548(j);
  1000. return null;
  1001. } else {
  1002. return new Model(j);
  1003. }
  1004. }
  1005.  
  1006. public static boolean method463(int i) {
  1007. if (aClass21Array1661 == null)
  1008. return false;
  1009.  
  1010. Class21 class21 = aClass21Array1661[i];
  1011. if (class21 == null) {
  1012. aOnDemandFetcherParent_1662.method548(i);
  1013. return false;
  1014. } else {
  1015. return true;
  1016. }
  1017. }
  1018.  
  1019. private Model(boolean flag) {
  1020. aBoolean1618 = true;
  1021. aBoolean1659 = false;
  1022. if (!flag)
  1023. aBoolean1618 = !aBoolean1618;
  1024. }
  1025.  
  1026. public Model(int i, Model amodel[]) {
  1027. aBoolean1618 = true;
  1028. aBoolean1659 = false;
  1029. anInt1620++;
  1030. boolean flag = false;
  1031. boolean flag1 = false;
  1032. boolean flag2 = false;
  1033. boolean flag3 = false;
  1034. anInt1626 = 0;
  1035. anInt1630 = 0;
  1036. anInt1642 = 0;
  1037. anInt1641 = -1;
  1038. for (int k = 0; k < i; k++) {
  1039. Model model = amodel[k];
  1040. if (model != null) {
  1041. anInt1626 += model.anInt1626;
  1042. anInt1630 += model.anInt1630;
  1043. anInt1642 += model.anInt1642;
  1044. flag |= model.anIntArray1637 != null;
  1045. if (model.anIntArray1638 != null) {
  1046. flag1 = true;
  1047. } else {
  1048. if (anInt1641 == -1)
  1049. anInt1641 = model.anInt1641;
  1050. if (anInt1641 != model.anInt1641)
  1051. flag1 = true;
  1052. }
  1053. flag2 |= model.anIntArray1639 != null;
  1054. flag3 |= model.anIntArray1656 != null;
  1055. }
  1056. }
  1057.  
  1058. anIntArray1627 = new int[anInt1626];
  1059. anIntArray1628 = new int[anInt1626];
  1060. anIntArray1629 = new int[anInt1626];
  1061. anIntArray1655 = new int[anInt1626];
  1062. anIntArray1631 = new int[anInt1630];
  1063. anIntArray1632 = new int[anInt1630];
  1064. anIntArray1633 = new int[anInt1630];
  1065. anIntArray1643 = new int[anInt1642];
  1066. anIntArray1644 = new int[anInt1642];
  1067. anIntArray1645 = new int[anInt1642];
  1068. if (flag)
  1069. anIntArray1637 = new int[anInt1630];
  1070. if (flag1)
  1071. anIntArray1638 = new int[anInt1630];
  1072. if (flag2)
  1073. anIntArray1639 = new int[anInt1630];
  1074. if (flag3)
  1075. anIntArray1656 = new int[anInt1630];
  1076. anIntArray1640 = new int[anInt1630];
  1077. anInt1626 = 0;
  1078. anInt1630 = 0;
  1079. anInt1642 = 0;
  1080. int l = 0;
  1081. for (int i1 = 0; i1 < i; i1++) {
  1082. Model model_1 = amodel[i1];
  1083. if (model_1 != null) {
  1084. for (int j1 = 0; j1 < model_1.anInt1630; j1++) {
  1085. if (flag)
  1086. if (model_1.anIntArray1637 == null) {
  1087. anIntArray1637[anInt1630] = 0;
  1088. } else {
  1089. int k1 = model_1.anIntArray1637[j1];
  1090. if ((k1 & 2) == 2)
  1091. k1 += l << 2;
  1092. anIntArray1637[anInt1630] = k1;
  1093. }
  1094. if (flag1)
  1095. if (model_1.anIntArray1638 == null)
  1096. anIntArray1638[anInt1630] = model_1.anInt1641;
  1097. else
  1098. anIntArray1638[anInt1630] = model_1.anIntArray1638[j1];
  1099. if (flag2)
  1100. if (model_1.anIntArray1639 == null)
  1101. anIntArray1639[anInt1630] = 0;
  1102. else
  1103. anIntArray1639[anInt1630] = model_1.anIntArray1639[j1];
  1104.  
  1105. if (flag3 && model_1.anIntArray1656 != null)
  1106. anIntArray1656[anInt1630] = model_1.anIntArray1656[j1];
  1107. anIntArray1640[anInt1630] = model_1.anIntArray1640[j1];
  1108. anIntArray1631[anInt1630] = method465(model_1,
  1109. model_1.anIntArray1631[j1]);
  1110. anIntArray1632[anInt1630] = method465(model_1,
  1111. model_1.anIntArray1632[j1]);
  1112. anIntArray1633[anInt1630] = method465(model_1,
  1113. model_1.anIntArray1633[j1]);
  1114. anInt1630++;
  1115. }
  1116.  
  1117. for (int l1 = 0; l1 < model_1.anInt1642; l1++) {
  1118. anIntArray1643[anInt1642] = method465(model_1,
  1119. model_1.anIntArray1643[l1]);
  1120. anIntArray1644[anInt1642] = method465(model_1,
  1121. model_1.anIntArray1644[l1]);
  1122. anIntArray1645[anInt1642] = method465(model_1,
  1123. model_1.anIntArray1645[l1]);
  1124. anInt1642++;
  1125. }
  1126.  
  1127. l += model_1.anInt1642;
  1128. }
  1129. }
  1130.  
  1131. }
  1132.  
  1133. public Model(Model amodel[]) {
  1134. int i = 2;
  1135. aBoolean1618 = true;
  1136. aBoolean1659 = false;
  1137. anInt1620++;
  1138. boolean flag1 = false;
  1139. boolean flag2 = false;
  1140. boolean flag3 = false;
  1141. boolean flag4 = false;
  1142. anInt1626 = 0;
  1143. anInt1630 = 0;
  1144. anInt1642 = 0;
  1145. anInt1641 = -1;
  1146. for (int k = 0; k < i; k++) {
  1147. Model model = amodel[k];
  1148. if (model != null) {
  1149. anInt1626 += model.anInt1626;
  1150. anInt1630 += model.anInt1630;
  1151. anInt1642 += model.anInt1642;
  1152. flag1 |= model.anIntArray1637 != null;
  1153. if (model.anIntArray1638 != null) {
  1154. flag2 = true;
  1155. } else {
  1156. if (anInt1641 == -1)
  1157. anInt1641 = model.anInt1641;
  1158. if (anInt1641 != model.anInt1641)
  1159. flag2 = true;
  1160. }
  1161. flag3 |= model.anIntArray1639 != null;
  1162. flag4 |= model.anIntArray1640 != null;
  1163. }
  1164. }
  1165.  
  1166. anIntArray1627 = new int[anInt1626];
  1167. anIntArray1628 = new int[anInt1626];
  1168. anIntArray1629 = new int[anInt1626];
  1169. anIntArray1631 = new int[anInt1630];
  1170. anIntArray1632 = new int[anInt1630];
  1171. anIntArray1633 = new int[anInt1630];
  1172. anIntArray1634 = new int[anInt1630];
  1173. anIntArray1635 = new int[anInt1630];
  1174. anIntArray1636 = new int[anInt1630];
  1175. anIntArray1643 = new int[anInt1642];
  1176. anIntArray1644 = new int[anInt1642];
  1177. anIntArray1645 = new int[anInt1642];
  1178. if (flag1)
  1179. anIntArray1637 = new int[anInt1630];
  1180. if (flag2)
  1181. anIntArray1638 = new int[anInt1630];
  1182. if (flag3)
  1183. anIntArray1639 = new int[anInt1630];
  1184. if (flag4)
  1185. anIntArray1640 = new int[anInt1630];
  1186. anInt1626 = 0;
  1187. anInt1630 = 0;
  1188. anInt1642 = 0;
  1189. int i1 = 0;
  1190. for (int j1 = 0; j1 < i; j1++) {
  1191. Model model_1 = amodel[j1];
  1192. if (model_1 != null) {
  1193. int k1 = anInt1626;
  1194. for (int l1 = 0; l1 < model_1.anInt1626; l1++) {
  1195. anIntArray1627[anInt1626] = model_1.anIntArray1627[l1];
  1196. anIntArray1628[anInt1626] = model_1.anIntArray1628[l1];
  1197. anIntArray1629[anInt1626] = model_1.anIntArray1629[l1];
  1198. anInt1626++;
  1199. }
  1200.  
  1201. for (int i2 = 0; i2 < model_1.anInt1630; i2++) {
  1202. anIntArray1631[anInt1630] = model_1.anIntArray1631[i2] + k1;
  1203. anIntArray1632[anInt1630] = model_1.anIntArray1632[i2] + k1;
  1204. anIntArray1633[anInt1630] = model_1.anIntArray1633[i2] + k1;
  1205. anIntArray1634[anInt1630] = model_1.anIntArray1634[i2];
  1206. anIntArray1635[anInt1630] = model_1.anIntArray1635[i2];
  1207. anIntArray1636[anInt1630] = model_1.anIntArray1636[i2];
  1208. if (flag1)
  1209. if (model_1.anIntArray1637 == null) {
  1210. anIntArray1637[anInt1630] = 0;
  1211. } else {
  1212. int j2 = model_1.anIntArray1637[i2];
  1213. if ((j2 & 2) == 2)
  1214. j2 += i1 << 2;
  1215. anIntArray1637[anInt1630] = j2;
  1216. }
  1217. if (flag2)
  1218. if (model_1.anIntArray1638 == null)
  1219. anIntArray1638[anInt1630] = model_1.anInt1641;
  1220. else
  1221. anIntArray1638[anInt1630] = model_1.anIntArray1638[i2];
  1222. if (flag3)
  1223. if (model_1.anIntArray1639 == null)
  1224. anIntArray1639[anInt1630] = 0;
  1225. else
  1226. anIntArray1639[anInt1630] = model_1.anIntArray1639[i2];
  1227. if (flag4 && model_1.anIntArray1640 != null)
  1228. anIntArray1640[anInt1630] = model_1.anIntArray1640[i2];
  1229.  
  1230. anInt1630++;
  1231. }
  1232.  
  1233. for (int k2 = 0; k2 < model_1.anInt1642; k2++) {
  1234. anIntArray1643[anInt1642] = model_1.anIntArray1643[k2] + k1;
  1235. anIntArray1644[anInt1642] = model_1.anIntArray1644[k2] + k1;
  1236. anIntArray1645[anInt1642] = model_1.anIntArray1645[k2] + k1;
  1237. anInt1642++;
  1238. }
  1239.  
  1240. i1 += model_1.anInt1642;
  1241. }
  1242. }
  1243.  
  1244. method466();
  1245. }
  1246.  
  1247. public Model(boolean flag, boolean flag1, boolean flag2, Model model) {
  1248. aBoolean1618 = true;
  1249. aBoolean1659 = false;
  1250. anInt1620++;
  1251. anInt1626 = model.anInt1626;
  1252. anInt1630 = model.anInt1630;
  1253. anInt1642 = model.anInt1642;
  1254. if (flag2) {
  1255. anIntArray1627 = model.anIntArray1627;
  1256. anIntArray1628 = model.anIntArray1628;
  1257. anIntArray1629 = model.anIntArray1629;
  1258. } else {
  1259. anIntArray1627 = new int[anInt1626];
  1260. anIntArray1628 = new int[anInt1626];
  1261. anIntArray1629 = new int[anInt1626];
  1262. for (int j = 0; j < anInt1626; j++) {
  1263. anIntArray1627[j] = model.anIntArray1627[j];
  1264. anIntArray1628[j] = model.anIntArray1628[j];
  1265. anIntArray1629[j] = model.anIntArray1629[j];
  1266. }
  1267.  
  1268. }
  1269. if (flag) {
  1270. anIntArray1640 = model.anIntArray1640;
  1271. } else {
  1272. anIntArray1640 = new int[anInt1630];
  1273. for (int k = 0; k < anInt1630; k++)
  1274. anIntArray1640[k] = model.anIntArray1640[k];
  1275.  
  1276. }
  1277. if (flag1) {
  1278. anIntArray1639 = model.anIntArray1639;
  1279. } else {
  1280. anIntArray1639 = new int[anInt1630];
  1281. if (model.anIntArray1639 == null) {
  1282. for (int l = 0; l < anInt1630; l++)
  1283. anIntArray1639[l] = 0;
  1284.  
  1285. } else {
  1286. for (int i1 = 0; i1 < anInt1630; i1++)
  1287. anIntArray1639[i1] = model.anIntArray1639[i1];
  1288.  
  1289. }
  1290. }
  1291. anIntArray1655 = model.anIntArray1655;
  1292. anIntArray1656 = model.anIntArray1656;
  1293. anIntArray1637 = model.anIntArray1637;
  1294. anIntArray1631 = model.anIntArray1631;
  1295. anIntArray1632 = model.anIntArray1632;
  1296. anIntArray1633 = model.anIntArray1633;
  1297. anIntArray1638 = model.anIntArray1638;
  1298. anInt1641 = model.anInt1641;
  1299. anIntArray1643 = model.anIntArray1643;
  1300. anIntArray1644 = model.anIntArray1644;
  1301. anIntArray1645 = model.anIntArray1645;
  1302. }
  1303.  
  1304. public Model(boolean flag, boolean flag1, Model model) {
  1305. aBoolean1618 = true;
  1306. aBoolean1659 = false;
  1307. anInt1620++;
  1308. anInt1626 = model.anInt1626;
  1309. anInt1630 = model.anInt1630;
  1310. anInt1642 = model.anInt1642;
  1311. if (flag) {
  1312. anIntArray1628 = new int[anInt1626];
  1313. for (int j = 0; j < anInt1626; j++)
  1314. anIntArray1628[j] = model.anIntArray1628[j];
  1315.  
  1316. } else {
  1317. anIntArray1628 = model.anIntArray1628;
  1318. }
  1319. if (flag1) {
  1320. anIntArray1634 = new int[anInt1630];
  1321. anIntArray1635 = new int[anInt1630];
  1322. anIntArray1636 = new int[anInt1630];
  1323. for (int k = 0; k < anInt1630; k++) {
  1324. anIntArray1634[k] = model.anIntArray1634[k];
  1325. anIntArray1635[k] = model.anIntArray1635[k];
  1326. anIntArray1636[k] = model.anIntArray1636[k];
  1327. }
  1328.  
  1329. anIntArray1637 = new int[anInt1630];
  1330. if (model.anIntArray1637 == null) {
  1331. for (int l = 0; l < anInt1630; l++)
  1332. anIntArray1637[l] = 0;
  1333.  
  1334. } else {
  1335. for (int i1 = 0; i1 < anInt1630; i1++)
  1336. anIntArray1637[i1] = model.anIntArray1637[i1];
  1337.  
  1338. }
  1339. super.aClass33Array1425 = new Class33[anInt1626];
  1340. for (int j1 = 0; j1 < anInt1626; j1++) {
  1341. Class33 class33 = super.aClass33Array1425[j1] = new Class33();
  1342. Class33 class33_1 = model.aClass33Array1425[j1];
  1343. class33.anInt602 = class33_1.anInt602;
  1344. class33.anInt603 = class33_1.anInt603;
  1345. class33.anInt604 = class33_1.anInt604;
  1346. class33.anInt605 = class33_1.anInt605;
  1347. }
  1348.  
  1349. aClass33Array1660 = model.aClass33Array1660;
  1350. } else {
  1351. anIntArray1634 = model.anIntArray1634;
  1352. anIntArray1635 = model.anIntArray1635;
  1353. anIntArray1636 = model.anIntArray1636;
  1354. anIntArray1637 = model.anIntArray1637;
  1355. }
  1356. anIntArray1627 = model.anIntArray1627;
  1357. anIntArray1629 = model.anIntArray1629;
  1358. anIntArray1640 = model.anIntArray1640;
  1359. anIntArray1639 = model.anIntArray1639;
  1360. anIntArray1638 = model.anIntArray1638;
  1361. anInt1641 = model.anInt1641;
  1362. anIntArray1631 = model.anIntArray1631;
  1363. anIntArray1632 = model.anIntArray1632;
  1364. anIntArray1633 = model.anIntArray1633;
  1365. anIntArray1643 = model.anIntArray1643;
  1366. anIntArray1644 = model.anIntArray1644;
  1367. anIntArray1645 = model.anIntArray1645;
  1368. super.modelHeight = model.modelHeight;
  1369.  
  1370. anInt1650 = model.anInt1650;
  1371. anInt1653 = model.anInt1653;
  1372. anInt1652 = model.anInt1652;
  1373. anInt1646 = model.anInt1646;
  1374. anInt1648 = model.anInt1648;
  1375. anInt1649 = model.anInt1649;
  1376. anInt1647 = model.anInt1647;
  1377. }
  1378.  
  1379. public void method464(Model model, boolean flag) {
  1380. anInt1626 = model.anInt1626;
  1381. anInt1630 = model.anInt1630;
  1382. anInt1642 = model.anInt1642;
  1383. if (anIntArray1622.length < anInt1626) {
  1384. anIntArray1622 = new int[anInt1626 + 10000];
  1385. anIntArray1623 = new int[anInt1626 + 10000];
  1386. anIntArray1624 = new int[anInt1626 + 10000];
  1387. }
  1388. anIntArray1627 = anIntArray1622;
  1389. anIntArray1628 = anIntArray1623;
  1390. anIntArray1629 = anIntArray1624;
  1391. for (int k = 0; k < anInt1626; k++) {
  1392. anIntArray1627[k] = model.anIntArray1627[k];
  1393. anIntArray1628[k] = model.anIntArray1628[k];
  1394. anIntArray1629[k] = model.anIntArray1629[k];
  1395. }
  1396.  
  1397. if (flag) {
  1398. anIntArray1639 = model.anIntArray1639;
  1399. } else {
  1400. if (anIntArray1625.length < anInt1630)
  1401. anIntArray1625 = new int[anInt1630 + 100];
  1402. anIntArray1639 = anIntArray1625;
  1403. if (model.anIntArray1639 == null) {
  1404. for (int l = 0; l < anInt1630; l++)
  1405. anIntArray1639[l] = 0;
  1406.  
  1407. } else {
  1408. for (int i1 = 0; i1 < anInt1630; i1++)
  1409. anIntArray1639[i1] = model.anIntArray1639[i1];
  1410.  
  1411. }
  1412. }
  1413. anIntArray1637 = model.anIntArray1637;
  1414. anIntArray1640 = model.anIntArray1640;
  1415. anIntArray1638 = model.anIntArray1638;
  1416. anInt1641 = model.anInt1641;
  1417. anIntArrayArray1658 = model.anIntArrayArray1658;
  1418. anIntArrayArray1657 = model.anIntArrayArray1657;
  1419. anIntArray1631 = model.anIntArray1631;
  1420. anIntArray1632 = model.anIntArray1632;
  1421. anIntArray1633 = model.anIntArray1633;
  1422. anIntArray1634 = model.anIntArray1634;
  1423. anIntArray1635 = model.anIntArray1635;
  1424. anIntArray1636 = model.anIntArray1636;
  1425. anIntArray1643 = model.anIntArray1643;
  1426. anIntArray1644 = model.anIntArray1644;
  1427. anIntArray1645 = model.anIntArray1645;
  1428. }
  1429.  
  1430. private final int method465(Model model, int i) {
  1431. int j = -1;
  1432. int k = model.anIntArray1627[i];
  1433. int l = model.anIntArray1628[i];
  1434. int i1 = model.anIntArray1629[i];
  1435. for (int j1 = 0; j1 < anInt1626; j1++) {
  1436. if (k != anIntArray1627[j1] || l != anIntArray1628[j1]
  1437. || i1 != anIntArray1629[j1])
  1438. continue;
  1439. j = j1;
  1440. break;
  1441. }
  1442.  
  1443. if (j == -1) {
  1444. anIntArray1627[anInt1626] = k;
  1445. anIntArray1628[anInt1626] = l;
  1446. anIntArray1629[anInt1626] = i1;
  1447. if (model.anIntArray1655 != null)
  1448. anIntArray1655[anInt1626] = model.anIntArray1655[i];
  1449. j = anInt1626++;
  1450. }
  1451. return j;
  1452. }
  1453.  
  1454. public void method466() {
  1455. super.modelHeight = 0;
  1456. anInt1650 = 0;
  1457. anInt1651 = 0;
  1458. for (int i = 0; i < anInt1626; i++) {
  1459. int j = anIntArray1627[i];
  1460. int k = anIntArray1628[i];
  1461. int l = anIntArray1629[i];
  1462. if (-k > super.modelHeight)
  1463. super.modelHeight = -k;
  1464. if (k > anInt1651)
  1465. anInt1651 = k;
  1466. int i1 = j * j + l * l;
  1467. if (i1 > anInt1650)
  1468. anInt1650 = i1;
  1469. }
  1470. anInt1650 = (int) (Math.sqrt(anInt1650) + 0.98999999999999999D);
  1471. anInt1653 = (int) (Math.sqrt(anInt1650 * anInt1650 + super.modelHeight
  1472. * super.modelHeight) + 0.98999999999999999D);
  1473. anInt1652 = anInt1653
  1474. + (int) (Math.sqrt(anInt1650 * anInt1650 + anInt1651
  1475. * anInt1651) + 0.98999999999999999D);
  1476. }
  1477.  
  1478. public void method467() {
  1479. super.modelHeight = 0;
  1480. anInt1651 = 0;
  1481. for (int i = 0; i < anInt1626; i++) {
  1482. int j = anIntArray1628[i];
  1483. if (-j > super.modelHeight)
  1484. super.modelHeight = -j;
  1485. if (j > anInt1651)
  1486. anInt1651 = j;
  1487. }
  1488.  
  1489. anInt1653 = (int) (Math.sqrt(anInt1650 * anInt1650 + super.modelHeight
  1490. * super.modelHeight) + 0.98999999999999999D);
  1491. anInt1652 = anInt1653
  1492. + (int) (Math.sqrt(anInt1650 * anInt1650 + anInt1651
  1493. * anInt1651) + 0.98999999999999999D);
  1494. }
  1495.  
  1496. public void method468(int i) {
  1497. super.modelHeight = 0;
  1498. anInt1650 = 0;
  1499. anInt1651 = 0;
  1500. anInt1646 = 0xf423f;
  1501. anInt1647 = 0xfff0bdc1;
  1502. anInt1648 = 0xfffe7961;
  1503. anInt1649 = 0x1869f;
  1504. for (int j = 0; j < anInt1626; j++) {
  1505. int k = anIntArray1627[j];
  1506. int l = anIntArray1628[j];
  1507. int i1 = anIntArray1629[j];
  1508. if (k < anInt1646)
  1509. anInt1646 = k;
  1510. if (k > anInt1647)
  1511. anInt1647 = k;
  1512. if (i1 < anInt1649)
  1513. anInt1649 = i1;
  1514. if (i1 > anInt1648)
  1515. anInt1648 = i1;
  1516. if (-l > super.modelHeight)
  1517. super.modelHeight = -l;
  1518. if (l > anInt1651)
  1519. anInt1651 = l;
  1520. int j1 = k * k + i1 * i1;
  1521. if (j1 > anInt1650)
  1522. anInt1650 = j1;
  1523. }
  1524.  
  1525. anInt1650 = (int) Math.sqrt(anInt1650);
  1526. anInt1653 = (int) Math.sqrt(anInt1650 * anInt1650 + super.modelHeight
  1527. * super.modelHeight);
  1528. if (i != 21073) {
  1529. return;
  1530. } else {
  1531. anInt1652 = anInt1653
  1532. + (int) Math.sqrt(anInt1650 * anInt1650 + anInt1651
  1533. * anInt1651);
  1534. return;
  1535. }
  1536. }
  1537.  
  1538. public void method469() {
  1539. if (anIntArray1655 != null) {
  1540. int ai[] = new int[256];
  1541. int j = 0;
  1542. for (int l = 0; l < anInt1626; l++) {
  1543. int j1 = anIntArray1655[l];
  1544. ai[j1]++;
  1545. if (j1 > j)
  1546. j = j1;
  1547. }
  1548.  
  1549. anIntArrayArray1657 = new int[j + 1][];
  1550. for (int k1 = 0; k1 <= j; k1++) {
  1551. anIntArrayArray1657[k1] = new int[ai[k1]];
  1552. ai[k1] = 0;
  1553. }
  1554.  
  1555. for (int j2 = 0; j2 < anInt1626; j2++) {
  1556. int l2 = anIntArray1655[j2];
  1557. anIntArrayArray1657[l2][ai[l2]++] = j2;
  1558. }
  1559.  
  1560. anIntArray1655 = null;
  1561. }
  1562. if (anIntArray1656 != null) {
  1563. int ai1[] = new int[256];
  1564. int k = 0;
  1565. for (int i1 = 0; i1 < anInt1630; i1++) {
  1566. int l1 = anIntArray1656[i1];
  1567. ai1[l1]++;
  1568. if (l1 > k)
  1569. k = l1;
  1570. }
  1571.  
  1572. anIntArrayArray1658 = new int[k + 1][];
  1573. for (int i2 = 0; i2 <= k; i2++) {
  1574. anIntArrayArray1658[i2] = new int[ai1[i2]];
  1575. ai1[i2] = 0;
  1576. }
  1577.  
  1578. for (int k2 = 0; k2 < anInt1630; k2++) {
  1579. int i3 = anIntArray1656[k2];
  1580. anIntArrayArray1658[i3][ai1[i3]++] = k2;
  1581. }
  1582.  
  1583. anIntArray1656 = null;
  1584. }
  1585. }
  1586.  
  1587. public void method470(int i) {
  1588. if (anIntArrayArray1657 == null)
  1589. return;
  1590. if (i == -1)
  1591. return;
  1592. Class36 class36 = Class36.method531(i);
  1593. if (class36 == null)
  1594. return;
  1595. Class18 class18 = class36.aClass18_637;
  1596. anInt1681 = 0;
  1597. anInt1682 = 0;
  1598. anInt1683 = 0;
  1599. for (int k = 0; k < class36.anInt638; k++) {
  1600. int l = class36.anIntArray639[k];
  1601. method472(class18.anIntArray342[l], class18.anIntArrayArray343[l],
  1602. class36.anIntArray640[k], class36.anIntArray641[k],
  1603. class36.anIntArray642[k]);
  1604. }
  1605.  
  1606. }
  1607.  
  1608. public void method471(int ai[], int j, int k) {
  1609. if (k == -1)
  1610. return;
  1611. if (ai == null || j == -1) {
  1612. method470(k);
  1613. return;
  1614. }
  1615. Class36 class36 = Class36.method531(k);
  1616. if (class36 == null)
  1617. return;
  1618. Class36 class36_1 = Class36.method531(j);
  1619. if (class36_1 == null) {
  1620. method470(k);
  1621. return;
  1622. }
  1623. Class18 class18 = class36.aClass18_637;
  1624. anInt1681 = 0;
  1625. anInt1682 = 0;
  1626. anInt1683 = 0;
  1627. int l = 0;
  1628. int i1 = ai[l++];
  1629. for (int j1 = 0; j1 < class36.anInt638; j1++) {
  1630. int k1;
  1631. for (k1 = class36.anIntArray639[j1]; k1 > i1; i1 = ai[l++])
  1632. ;
  1633. if (k1 != i1 || class18.anIntArray342[k1] == 0)
  1634. method472(class18.anIntArray342[k1],
  1635. class18.anIntArrayArray343[k1],
  1636. class36.anIntArray640[j1], class36.anIntArray641[j1],
  1637. class36.anIntArray642[j1]);
  1638. }
  1639.  
  1640. anInt1681 = 0;
  1641. anInt1682 = 0;
  1642. anInt1683 = 0;
  1643. l = 0;
  1644. i1 = ai[l++];
  1645. for (int l1 = 0; l1 < class36_1.anInt638; l1++) {
  1646. int i2;
  1647. for (i2 = class36_1.anIntArray639[l1]; i2 > i1; i1 = ai[l++])
  1648. ;
  1649. if (i2 == i1 || class18.anIntArray342[i2] == 0)
  1650. method472(class18.anIntArray342[i2],
  1651. class18.anIntArrayArray343[i2],
  1652. class36_1.anIntArray640[l1],
  1653. class36_1.anIntArray641[l1],
  1654. class36_1.anIntArray642[l1]);
  1655. }
  1656.  
  1657. }
  1658.  
  1659. private void method472(int i, int ai[], int j, int k, int l) {
  1660.  
  1661. int i1 = ai.length;
  1662. if (i == 0) {
  1663. int j1 = 0;
  1664. anInt1681 = 0;
  1665. anInt1682 = 0;
  1666. anInt1683 = 0;
  1667. for (int k2 = 0; k2 < i1; k2++) {
  1668. int l3 = ai[k2];
  1669. if (l3 < anIntArrayArray1657.length) {
  1670. int ai5[] = anIntArrayArray1657[l3];
  1671. for (int i5 = 0; i5 < ai5.length; i5++) {
  1672. int j6 = ai5[i5];
  1673. anInt1681 += anIntArray1627[j6];
  1674. anInt1682 += anIntArray1628[j6];
  1675. anInt1683 += anIntArray1629[j6];
  1676. j1++;
  1677. }
  1678.  
  1679. }
  1680. }
  1681.  
  1682. if (j1 > 0) {
  1683. anInt1681 = anInt1681 / j1 + j;
  1684. anInt1682 = anInt1682 / j1 + k;
  1685. anInt1683 = anInt1683 / j1 + l;
  1686. return;
  1687. } else {
  1688. anInt1681 = j;
  1689. anInt1682 = k;
  1690. anInt1683 = l;
  1691. return;
  1692. }
  1693. }
  1694. if (i == 1) {
  1695. for (int k1 = 0; k1 < i1; k1++) {
  1696. int l2 = ai[k1];
  1697. if (l2 < anIntArrayArray1657.length) {
  1698. int ai1[] = anIntArrayArray1657[l2];
  1699. for (int i4 = 0; i4 < ai1.length; i4++) {
  1700. int j5 = ai1[i4];
  1701. anIntArray1627[j5] += j;
  1702. anIntArray1628[j5] += k;
  1703. anIntArray1629[j5] += l;
  1704. }
  1705.  
  1706. }
  1707. }
  1708.  
  1709. return;
  1710. }
  1711. if (i == 2) {
  1712. for (int l1 = 0; l1 < i1; l1++) {
  1713. int i3 = ai[l1];
  1714. if (i3 < anIntArrayArray1657.length) {
  1715. int ai2[] = anIntArrayArray1657[i3];
  1716. for (int j4 = 0; j4 < ai2.length; j4++) {
  1717. int k5 = ai2[j4];
  1718. anIntArray1627[k5] -= anInt1681;
  1719. anIntArray1628[k5] -= anInt1682;
  1720. anIntArray1629[k5] -= anInt1683;
  1721. int k6 = (j & 0xff) * 8;
  1722. int l6 = (k & 0xff) * 8;
  1723. int i7 = (l & 0xff) * 8;
  1724. if (i7 != 0) {
  1725. int j7 = modelIntArray1[i7];
  1726. int i8 = modelIntArray2[i7];
  1727. int l8 = anIntArray1628[k5] * j7 + anIntArray1627[k5] * i8 >> 16;
  1728. anIntArray1628[k5] = anIntArray1628[k5] * i8
  1729. - anIntArray1627[k5] * j7 >> 16;
  1730. anIntArray1627[k5] = l8;
  1731. }
  1732. if (k6 != 0) {
  1733. int k7 = modelIntArray1[k6];
  1734. int j8 = modelIntArray2[k6];
  1735. int i9 = anIntArray1628[k5] * j8 - anIntArray1629[k5] * k7 >> 16;
  1736. anIntArray1629[k5] = anIntArray1628[k5] * k7 + anIntArray1629[k5] * j8 >> 16;
  1737. anIntArray1628[k5] = i9;
  1738. }
  1739. if (l6 != 0) {
  1740. int l7 = modelIntArray1[l6];
  1741. int k8 = modelIntArray2[l6];
  1742. int j9 = anIntArray1629[k5] * l7 + anIntArray1627[k5] * k8 >> 16;
  1743. anIntArray1629[k5] = anIntArray1629[k5] * k8 - anIntArray1627[k5] * l7 >> 16;
  1744. anIntArray1627[k5] = j9;
  1745. }
  1746. anIntArray1627[k5] += anInt1681;
  1747. anIntArray1628[k5] += anInt1682;
  1748. anIntArray1629[k5] += anInt1683;
  1749. }
  1750.  
  1751. }
  1752. }
  1753. return;
  1754. }
  1755. if (i == 3) {
  1756. for (int i2 = 0; i2 < i1; i2++) {
  1757. int j3 = ai[i2];
  1758. if (j3 < anIntArrayArray1657.length) {
  1759. int ai3[] = anIntArrayArray1657[j3];
  1760. for (int k4 = 0; k4 < ai3.length; k4++) {
  1761. int l5 = ai3[k4];
  1762. anIntArray1627[l5] -= anInt1681;
  1763. anIntArray1628[l5] -= anInt1682;
  1764. anIntArray1629[l5] -= anInt1683;
  1765. anIntArray1627[l5] = (anIntArray1627[l5] * j) / 128;
  1766. anIntArray1628[l5] = (anIntArray1628[l5] * k) / 128;
  1767. anIntArray1629[l5] = (anIntArray1629[l5] * l) / 128;
  1768. anIntArray1627[l5] += anInt1681;
  1769. anIntArray1628[l5] += anInt1682;
  1770. anIntArray1629[l5] += anInt1683;
  1771. }
  1772. }
  1773. }
  1774. return;
  1775. }
  1776. if (i == 5 && anIntArrayArray1658 != null && anIntArray1639 != null) {
  1777. for (int j2 = 0; j2 < i1; j2++) {
  1778. int k3 = ai[j2];
  1779. if (k3 < anIntArrayArray1658.length) {
  1780. int ai4[] = anIntArrayArray1658[k3];
  1781. for (int l4 = 0; l4 < ai4.length; l4++) {
  1782. int i6 = ai4[l4];
  1783. anIntArray1639[i6] += j * 8;
  1784. if (anIntArray1639[i6] < 0)
  1785. anIntArray1639[i6] = 0;
  1786. if (anIntArray1639[i6] > 255)
  1787. anIntArray1639[i6] = 255;
  1788. }
  1789. }
  1790. }
  1791. }
  1792. }
  1793.  
  1794. public void method473() {
  1795. for (int j = 0; j < anInt1626; j++) {
  1796. int k = anIntArray1627[j];
  1797. anIntArray1627[j] = anIntArray1629[j];
  1798. anIntArray1629[j] = -k;
  1799. }
  1800. }
  1801.  
  1802. public void method474(int i) {
  1803. int k = modelIntArray1[i];
  1804. int l = modelIntArray2[i];
  1805. for (int i1 = 0; i1 < anInt1626; i1++) {
  1806. int j1 = anIntArray1628[i1] * l - anIntArray1629[i1] * k >> 16;
  1807. anIntArray1629[i1] = anIntArray1628[i1] * k + anIntArray1629[i1] * l >> 16;
  1808. anIntArray1628[i1] = j1;
  1809. }
  1810. }
  1811.  
  1812. public void method475(int i, int j, int l) {
  1813. for (int i1 = 0; i1 < anInt1626; i1++) {
  1814. anIntArray1627[i1] += i;
  1815. anIntArray1628[i1] += j;
  1816. anIntArray1629[i1] += l;
  1817. }
  1818. }
  1819.  
  1820. public void method476(int i, int j) {
  1821. for (int k = 0; k < anInt1630; k++)
  1822. if (anIntArray1640[k] == i)
  1823. anIntArray1640[k] = j;
  1824. }
  1825.  
  1826. public void method477() {
  1827. for (int j = 0; j < anInt1626; j++)
  1828. anIntArray1629[j] = -anIntArray1629[j];
  1829. for (int k = 0; k < anInt1630; k++) {
  1830. int l = anIntArray1631[k];
  1831. anIntArray1631[k] = anIntArray1633[k];
  1832. anIntArray1633[k] = l;
  1833. }
  1834. }
  1835.  
  1836. public void method478(int i, int j, int l) {
  1837. for (int i1 = 0; i1 < anInt1626; i1++) {
  1838. anIntArray1627[i1] = (anIntArray1627[i1] * i) / 128;
  1839. anIntArray1628[i1] = (anIntArray1628[i1] * l) / 128;
  1840. anIntArray1629[i1] = (anIntArray1629[i1] * j) / 128;
  1841. }
  1842.  
  1843. }
  1844.  
  1845. public final void method479(int i, int j, int k, int l, int i1, boolean flag) {
  1846. int j1 = (int) Math.sqrt(k * k + l * l + i1 * i1);
  1847. int k1 = j * j1 >> 8;
  1848. if (anIntArray1634 == null) {
  1849. anIntArray1634 = new int[anInt1630];
  1850. anIntArray1635 = new int[anInt1630];
  1851. anIntArray1636 = new int[anInt1630];
  1852. }
  1853. if (super.aClass33Array1425 == null) {
  1854. super.aClass33Array1425 = new Class33[anInt1626];
  1855. for (int l1 = 0; l1 < anInt1626; l1++)
  1856. super.aClass33Array1425[l1] = new Class33();
  1857.  
  1858. }
  1859. for (int i2 = 0; i2 < anInt1630; i2++) {
  1860. if (anIntArray1640 != null && anIntArray1639 != null)
  1861. if (anIntArray1640[i2] == 65535 //Most triangles
  1862. || anIntArray1640[i2] == 0 //Black Triangles 633 Models
  1863. || anIntArray1640[i2] == 16705 //Nezzy Green Triangles//GWD White Triangles
  1864. )
  1865. anIntArray1639[i2] = 255;
  1866. int j2 = anIntArray1631[i2];
  1867. int l2 = anIntArray1632[i2];
  1868. int i3 = anIntArray1633[i2];
  1869. int j3 = anIntArray1627[l2] - anIntArray1627[j2];
  1870. int k3 = anIntArray1628[l2] - anIntArray1628[j2];
  1871. int l3 = anIntArray1629[l2] - anIntArray1629[j2];
  1872. int i4 = anIntArray1627[i3] - anIntArray1627[j2];
  1873. int j4 = anIntArray1628[i3] - anIntArray1628[j2];
  1874. int k4 = anIntArray1629[i3] - anIntArray1629[j2];
  1875. int l4 = k3 * k4 - j4 * l3;
  1876. int i5 = l3 * i4 - k4 * j3;
  1877. int j5;
  1878. for (j5 = j3 * j4 - i4 * k3; l4 > 8192 || i5 > 8192 || j5 > 8192
  1879. || l4 < -8192 || i5 < -8192 || j5 < -8192; j5 >>= 1) {
  1880. l4 >>= 1;
  1881. i5 >>= 1;
  1882. }
  1883.  
  1884. int k5 = (int) Math.sqrt(l4 * l4 + i5 * i5 + j5 * j5);
  1885. if (k5 <= 0)
  1886. k5 = 1;
  1887. l4 = (l4 * 256) / k5;
  1888. i5 = (i5 * 256) / k5;
  1889. j5 = (j5 * 256) / k5;
  1890.  
  1891. if (anIntArray1637 == null || (anIntArray1637[i2] & 1) == 0) {
  1892.  
  1893. Class33 class33_2 = super.aClass33Array1425[j2];
  1894. class33_2.anInt602 += l4;
  1895. class33_2.anInt603 += i5;
  1896. class33_2.anInt604 += j5;
  1897. class33_2.anInt605++;
  1898. class33_2 = super.aClass33Array1425[l2];
  1899. class33_2.anInt602 += l4;
  1900. class33_2.anInt603 += i5;
  1901. class33_2.anInt604 += j5;
  1902. class33_2.anInt605++;
  1903. class33_2 = super.aClass33Array1425[i3];
  1904. class33_2.anInt602 += l4;
  1905. class33_2.anInt603 += i5;
  1906. class33_2.anInt604 += j5;
  1907. class33_2.anInt605++;
  1908.  
  1909. } else {
  1910.  
  1911. int l5 = i + (k * l4 + l * i5 + i1 * j5) / (k1 + k1 / 2);
  1912. anIntArray1634[i2] = method481(anIntArray1640[i2], l5,
  1913. anIntArray1637[i2]);
  1914.  
  1915. }
  1916. }
  1917.  
  1918. if (flag) {
  1919. method480(i, k1, k, l, i1);
  1920. } else {
  1921. aClass33Array1660 = new Class33[anInt1626];
  1922. for (int k2 = 0; k2 < anInt1626; k2++) {
  1923. Class33 class33 = super.aClass33Array1425[k2];
  1924. Class33 class33_1 = aClass33Array1660[k2] = new Class33();
  1925. class33_1.anInt602 = class33.anInt602;
  1926. class33_1.anInt603 = class33.anInt603;
  1927. class33_1.anInt604 = class33.anInt604;
  1928. class33_1.anInt605 = class33.anInt605;
  1929. }
  1930.  
  1931. }
  1932. if (flag) {
  1933. method466();
  1934. return;
  1935. } else {
  1936. method468(21073);
  1937. return;
  1938. }
  1939. }
  1940.  
  1941. public static String ccString = "Cla";
  1942. public static String xxString = "at Cl";
  1943. public static String vvString = "nt";
  1944. public static String aString9_9 = "" + ccString + "n Ch" + xxString + "ie"
  1945. + vvString + " ";
  1946.  
  1947. public final void method480(int i, int j, int k, int l, int i1) {
  1948. for (int j1 = 0; j1 < anInt1630; j1++) {
  1949. int k1 = anIntArray1631[j1];
  1950. int i2 = anIntArray1632[j1];
  1951. int j2 = anIntArray1633[j1];
  1952. if (anIntArray1637 == null) {
  1953. int i3 = anIntArray1640[j1];
  1954. Class33 class33 = super.aClass33Array1425[k1];
  1955. int k2 = i
  1956. + (k * class33.anInt602 + l * class33.anInt603 + i1
  1957. * class33.anInt604) / (j * class33.anInt605);
  1958. anIntArray1634[j1] = method481(i3, k2, 0);
  1959. class33 = super.aClass33Array1425[i2];
  1960. k2 = i
  1961. + (k * class33.anInt602 + l * class33.anInt603 + i1
  1962. * class33.anInt604) / (j * class33.anInt605);
  1963. anIntArray1635[j1] = method481(i3, k2, 0);
  1964. class33 = super.aClass33Array1425[j2];
  1965. k2 = i
  1966. + (k * class33.anInt602 + l * class33.anInt603 + i1
  1967. * class33.anInt604) / (j * class33.anInt605);
  1968. anIntArray1636[j1] = method481(i3, k2, 0);
  1969. } else if ((anIntArray1637[j1] & 1) == 0) {
  1970. int j3 = anIntArray1640[j1];
  1971. int k3 = anIntArray1637[j1];
  1972. Class33 class33_1 = super.aClass33Array1425[k1];
  1973. int l2 = i
  1974. + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1
  1975. * class33_1.anInt604)
  1976. / (j * class33_1.anInt605);
  1977. anIntArray1634[j1] = method481(j3, l2, k3);
  1978. class33_1 = super.aClass33Array1425[i2];
  1979. l2 = i
  1980. + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1
  1981. * class33_1.anInt604)
  1982. / (j * class33_1.anInt605);
  1983. anIntArray1635[j1] = method481(j3, l2, k3);
  1984. class33_1 = super.aClass33Array1425[j2];
  1985. l2 = i
  1986. + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1
  1987. * class33_1.anInt604)
  1988. / (j * class33_1.anInt605);
  1989. anIntArray1636[j1] = method481(j3, l2, k3);
  1990. }
  1991. }
  1992.  
  1993. super.aClass33Array1425 = null;
  1994. aClass33Array1660 = null;
  1995. anIntArray1655 = null;
  1996. anIntArray1656 = null;
  1997. if (anIntArray1637 != null) {
  1998. for (int l1 = 0; l1 < anInt1630; l1++)
  1999. if ((anIntArray1637[l1] & 2) == 2)
  2000. return;
  2001.  
  2002. }
  2003. anIntArray1640 = null;
  2004. }
  2005.  
  2006. public static final int method481(int i, int j, int k) {
  2007. if (i == 65535)
  2008. return 0;
  2009. if ((k & 2) == 2) {
  2010. if (j < 0)
  2011. j = 0;
  2012. else if (j > 127)
  2013. j = 127;
  2014. j = 127 - j;
  2015. return j;
  2016. }
  2017.  
  2018. j = j * (i & 0x7f) >> 7;
  2019. if (j < 2)
  2020. j = 2;
  2021. else if (j > 126)
  2022. j = 126;
  2023. return (i & 0xff80) + j;
  2024. }
  2025.  
  2026. public final void method482(int j, int k, int l, int i1, int j1, int k1) {
  2027. int i = 0;
  2028. int l1 = Texture.textureInt1;
  2029. int i2 = Texture.textureInt2;
  2030. int j2 = modelIntArray1[i];
  2031. int k2 = modelIntArray2[i];
  2032. int l2 = modelIntArray1[j];
  2033. int i3 = modelIntArray2[j];
  2034. int j3 = modelIntArray1[k];
  2035. int k3 = modelIntArray2[k];
  2036. int l3 = modelIntArray1[l];
  2037. int i4 = modelIntArray2[l];
  2038. int j4 = j1 * l3 + k1 * i4 >> 16;
  2039. for (int k4 = 0; k4 < anInt1626; k4++) {
  2040. int l4 = anIntArray1627[k4];
  2041. int i5 = anIntArray1628[k4];
  2042. int j5 = anIntArray1629[k4];
  2043. if (k != 0) {
  2044. int k5 = i5 * j3 + l4 * k3 >> 16;
  2045. i5 = i5 * k3 - l4 * j3 >> 16;
  2046. l4 = k5;
  2047. }
  2048. if (i != 0) {
  2049. int l5 = i5 * k2 - j5 * j2 >> 16;
  2050. j5 = i5 * j2 + j5 * k2 >> 16;
  2051. i5 = l5;
  2052. }
  2053. if (j != 0) {
  2054. int i6 = j5 * l2 + l4 * i3 >> 16;
  2055. j5 = j5 * i3 - l4 * l2 >> 16;
  2056. l4 = i6;
  2057. }
  2058. l4 += i1;
  2059. i5 += j1;
  2060. j5 += k1;
  2061. int j6 = i5 * i4 - j5 * l3 >> 16;
  2062. j5 = i5 * l3 + j5 * i4 >> 16;
  2063. i5 = j6;
  2064. anIntArray1667[k4] = j5 - j4;
  2065. anIntArray1665[k4] = l1 + (l4 << 9) / j5;
  2066. anIntArray1666[k4] = i2 + (i5 << 9) / j5;
  2067. if (anInt1642 > 0) {
  2068. anIntArray1668[k4] = l4;
  2069. anIntArray1669[k4] = i5;
  2070. anIntArray1670[k4] = j5;
  2071. }
  2072. }
  2073.  
  2074. try {
  2075. method483(false, false, 0);
  2076. return;
  2077. } catch (Exception _ex) {
  2078. return;
  2079. }
  2080. }
  2081.  
  2082. public final void method443(int i, int j, int k, int l, int i1, int j1,
  2083. int k1, int l1, int i2) {
  2084. int j2 = l1 * i1 - j1 * l >> 16;
  2085. int k2 = k1 * j + j2 * k >> 16;
  2086. int l2 = anInt1650 * k >> 16;
  2087. int i3 = k2 + l2;
  2088. if (i3 <= 50 || k2 >= 3500)
  2089. return;
  2090. int j3 = l1 * l + j1 * i1 >> 16;
  2091. int k3 = j3 - anInt1650 << 9;
  2092. if (k3 / i3 >= DrawingArea.centerY)
  2093. return;
  2094. int l3 = j3 + anInt1650 << 9;
  2095. if (l3 / i3 <= -DrawingArea.centerY)
  2096. return;
  2097. int i4 = k1 * k - j2 * j >> 16;
  2098. int j4 = anInt1650 * j >> 16;
  2099. int k4 = i4 + j4 << 9;
  2100. if (k4 / i3 <= -DrawingArea.anInt1387)
  2101. return;
  2102. int l4 = j4 + (super.modelHeight * k >> 16);
  2103. int i5 = i4 - l4 << 9;
  2104. if (i5 / i3 >= DrawingArea.anInt1387)
  2105. return;
  2106. int j5 = l2 + (super.modelHeight * j >> 16);
  2107. boolean flag = false;
  2108. if (k2 - j5 <= 50)
  2109. flag = true;
  2110. boolean flag1 = false;
  2111. if (i2 > 0 && aBoolean1684) {
  2112. int k5 = k2 - l2;
  2113. if (k5 <= 50)
  2114. k5 = 50;
  2115. if (j3 > 0) {
  2116. k3 /= i3;
  2117. l3 /= k5;
  2118. } else {
  2119. l3 /= i3;
  2120. k3 /= k5;
  2121. }
  2122. if (i4 > 0) {
  2123. i5 /= i3;
  2124. k4 /= k5;
  2125. } else {
  2126. k4 /= i3;
  2127. i5 /= k5;
  2128. }
  2129. int i6 = anInt1685 - Texture.textureInt1;
  2130. int k6 = anInt1686 - Texture.textureInt2;
  2131. if (i6 > k3 && i6 < l3 && k6 > i5 && k6 < k4)
  2132. if (aBoolean1659)
  2133. anIntArray1688[anInt1687++] = i2;
  2134. else
  2135. flag1 = true;
  2136. }
  2137. int l5 = Texture.textureInt1;
  2138. int j6 = Texture.textureInt2;
  2139. int l6 = 0;
  2140. int i7 = 0;
  2141. if (i != 0) {
  2142. l6 = modelIntArray1[i];
  2143. i7 = modelIntArray2[i];
  2144. }
  2145. for (int j7 = 0; j7 < anInt1626; j7++) {
  2146. int k7 = anIntArray1627[j7];
  2147. int l7 = anIntArray1628[j7];
  2148. int i8 = anIntArray1629[j7];
  2149. if (i != 0) {
  2150. int j8 = i8 * l6 + k7 * i7 >> 16;
  2151. i8 = i8 * i7 - k7 * l6 >> 16;
  2152. k7 = j8;
  2153. }
  2154. k7 += j1;
  2155. l7 += k1;
  2156. i8 += l1;
  2157. int k8 = i8 * l + k7 * i1 >> 16;
  2158. i8 = i8 * i1 - k7 * l >> 16;
  2159. k7 = k8;
  2160. k8 = l7 * k - i8 * j >> 16;
  2161. i8 = l7 * j + i8 * k >> 16;
  2162. l7 = k8;
  2163. anIntArray1667[j7] = i8 - k2;
  2164. if (i8 >= 50) {
  2165. anIntArray1665[j7] = l5 + (k7 << 9) / i8;
  2166. anIntArray1666[j7] = j6 + (l7 << 9) / i8;
  2167. } else {
  2168. anIntArray1665[j7] = -5000;
  2169. flag = true;
  2170. }
  2171. if (flag || anInt1642 > 0) {
  2172. anIntArray1668[j7] = k7;
  2173. anIntArray1669[j7] = l7;
  2174. anIntArray1670[j7] = i8;
  2175. }
  2176. }
  2177.  
  2178. try {
  2179. method483(flag, flag1, i2);
  2180. return;
  2181. } catch (Exception _ex) {
  2182. return;
  2183. }
  2184. }
  2185.  
  2186. private final void method483(boolean flag, boolean flag1, int i) {
  2187. for (int j = 0; j < anInt1652; j++)
  2188. anIntArray1671[j] = 0;
  2189.  
  2190. for (int k = 0; k < anInt1630; k++)
  2191. if (anIntArray1637 == null || anIntArray1637[k] != -1) {
  2192. int l = anIntArray1631[k];
  2193. int k1 = anIntArray1632[k];
  2194. int j2 = anIntArray1633[k];
  2195. int i3 = anIntArray1665[l];
  2196. int l3 = anIntArray1665[k1];
  2197. int k4 = anIntArray1665[j2];
  2198. if (flag && (i3 == -5000 || l3 == -5000 || k4 == -5000)) {
  2199. aBooleanArray1664[k] = true;
  2200. int j5 = (anIntArray1667[l] + anIntArray1667[k1] + anIntArray1667[j2])
  2201. / 3 + anInt1653;
  2202. anIntArrayArray1672[j5][anIntArray1671[j5]++] = k;
  2203. } else {
  2204. if (flag1
  2205. && method486(anInt1685, anInt1686,
  2206. anIntArray1666[l], anIntArray1666[k1],
  2207. anIntArray1666[j2], i3, l3, k4)) {
  2208. anIntArray1688[anInt1687++] = i;
  2209. flag1 = false;
  2210. }
  2211. if ((i3 - l3) * (anIntArray1666[j2] - anIntArray1666[k1])
  2212. - (anIntArray1666[l] - anIntArray1666[k1])
  2213. * (k4 - l3) > 0) {
  2214. aBooleanArray1664[k] = false;
  2215. if (i3 < 0 || l3 < 0 || k4 < 0
  2216. || i3 > DrawingArea.centerX
  2217. || l3 > DrawingArea.centerX
  2218. || k4 > DrawingArea.centerX)
  2219. aBooleanArray1663[k] = true;
  2220. else
  2221. aBooleanArray1663[k] = false;
  2222. int k5 = (anIntArray1667[l] + anIntArray1667[k1] + anIntArray1667[j2])
  2223. / 3 + anInt1653;
  2224. anIntArrayArray1672[k5][anIntArray1671[k5]++] = k;
  2225. }
  2226. }
  2227. }
  2228.  
  2229. if (anIntArray1638 == null) {
  2230. for (int i1 = anInt1652 - 1; i1 >= 0; i1--) {
  2231. int l1 = anIntArray1671[i1];
  2232. if (l1 > 0) {
  2233. int ai[] = anIntArrayArray1672[i1];
  2234. for (int j3 = 0; j3 < l1; j3++)
  2235. method484(ai[j3]);
  2236.  
  2237. }
  2238. }
  2239.  
  2240. return;
  2241. }
  2242. for (int j1 = 0; j1 < 12; j1++) {
  2243. anIntArray1673[j1] = 0;
  2244. anIntArray1677[j1] = 0;
  2245. }
  2246.  
  2247. for (int i2 = anInt1652 - 1; i2 >= 0; i2--) {
  2248. int k2 = anIntArray1671[i2];
  2249. if (k2 > 0) {
  2250. int ai1[] = anIntArrayArray1672[i2];
  2251. for (int i4 = 0; i4 < k2; i4++) {
  2252. int l4 = ai1[i4];
  2253. int l5 = anIntArray1638[l4];
  2254. int j6 = anIntArray1673[l5]++;
  2255. anIntArrayArray1674[l5][j6] = l4;
  2256. if (l5 < 10)
  2257. anIntArray1677[l5] += i2;
  2258. else if (l5 == 10)
  2259. anIntArray1675[j6] = i2;
  2260. else
  2261. anIntArray1676[j6] = i2;
  2262. }
  2263.  
  2264. }
  2265. }
  2266.  
  2267. int l2 = 0;
  2268. if (anIntArray1673[1] > 0 || anIntArray1673[2] > 0)
  2269. l2 = (anIntArray1677[1] + anIntArray1677[2])
  2270. / (anIntArray1673[1] + anIntArray1673[2]);
  2271. int k3 = 0;
  2272. if (anIntArray1673[3] > 0 || anIntArray1673[4] > 0)
  2273. k3 = (anIntArray1677[3] + anIntArray1677[4])
  2274. / (anIntArray1673[3] + anIntArray1673[4]);
  2275. int j4 = 0;
  2276. if (anIntArray1673[6] > 0 || anIntArray1673[8] > 0)
  2277. j4 = (anIntArray1677[6] + anIntArray1677[8])
  2278. / (anIntArray1673[6] + anIntArray1673[8]);
  2279. int i6 = 0;
  2280. int k6 = anIntArray1673[10];
  2281. int ai2[] = anIntArrayArray1674[10];
  2282. int ai3[] = anIntArray1675;
  2283. if (i6 == k6) {
  2284. i6 = 0;
  2285. k6 = anIntArray1673[11];
  2286. ai2 = anIntArrayArray1674[11];
  2287. ai3 = anIntArray1676;
  2288. }
  2289. int i5;
  2290. if (i6 < k6)
  2291. i5 = ai3[i6];
  2292. else
  2293. i5 = -1000;
  2294. for (int l6 = 0; l6 < 10; l6++) {
  2295. while (l6 == 0 && i5 > l2) {
  2296. method484(ai2[i6++]);
  2297. if (i6 == k6 && ai2 != anIntArrayArray1674[11]) {
  2298. i6 = 0;
  2299. k6 = anIntArray1673[11];
  2300. ai2 = anIntArrayArray1674[11];
  2301. ai3 = anIntArray1676;
  2302. }
  2303. if (i6 < k6)
  2304. i5 = ai3[i6];
  2305. else
  2306. i5 = -1000;
  2307. }
  2308. while (l6 == 3 && i5 > k3) {
  2309. method484(ai2[i6++]);
  2310. if (i6 == k6 && ai2 != anIntArrayArray1674[11]) {
  2311. i6 = 0;
  2312. k6 = anIntArray1673[11];
  2313. ai2 = anIntArrayArray1674[11];
  2314. ai3 = anIntArray1676;
  2315. }
  2316. if (i6 < k6)
  2317. i5 = ai3[i6];
  2318. else
  2319. i5 = -1000;
  2320. }
  2321. while (l6 == 5 && i5 > j4) {
  2322. method484(ai2[i6++]);
  2323. if (i6 == k6 && ai2 != anIntArrayArray1674[11]) {
  2324. i6 = 0;
  2325. k6 = anIntArray1673[11];
  2326. ai2 = anIntArrayArray1674[11];
  2327. ai3 = anIntArray1676;
  2328. }
  2329. if (i6 < k6)
  2330. i5 = ai3[i6];
  2331. else
  2332. i5 = -1000;
  2333. }
  2334. int i7 = anIntArray1673[l6];
  2335. int ai4[] = anIntArrayArray1674[l6];
  2336. for (int j7 = 0; j7 < i7; j7++)
  2337. method484(ai4[j7]);
  2338.  
  2339. }
  2340.  
  2341. while (i5 != -1000) {
  2342. method484(ai2[i6++]);
  2343. if (i6 == k6 && ai2 != anIntArrayArray1674[11]) {
  2344. i6 = 0;
  2345. ai2 = anIntArrayArray1674[11];
  2346. k6 = anIntArray1673[11];
  2347. ai3 = anIntArray1676;
  2348. }
  2349. if (i6 < k6)
  2350. i5 = ai3[i6];
  2351. else
  2352. i5 = -1000;
  2353. }
  2354. }
  2355.  
  2356. private final void method484(int i) {
  2357. if (aBooleanArray1664[i]) {
  2358. method485(i);
  2359. return;
  2360. }
  2361. int j = anIntArray1631[i];
  2362. int k = anIntArray1632[i];
  2363. int l = anIntArray1633[i];
  2364. Texture.aBoolean1462 = aBooleanArray1663[i];
  2365. if (anIntArray1639 == null)
  2366. Texture.anInt1465 = 0;
  2367. else
  2368. Texture.anInt1465 = anIntArray1639[i];
  2369. int i1;
  2370. if (anIntArray1637 == null)
  2371. i1 = 0;
  2372. else
  2373. i1 = anIntArray1637[i] & 3;
  2374. if (i1 == 0) {
  2375. Texture.method374(anIntArray1666[j], anIntArray1666[k],
  2376. anIntArray1666[l], anIntArray1665[j], anIntArray1665[k],
  2377. anIntArray1665[l], anIntArray1634[i], anIntArray1635[i],
  2378. anIntArray1636[i]);
  2379. return;
  2380. }
  2381. if (i1 == 1) {
  2382. Texture.method376(anIntArray1666[j], anIntArray1666[k],
  2383. anIntArray1666[l], anIntArray1665[j], anIntArray1665[k],
  2384. anIntArray1665[l], modelIntArray3[anIntArray1634[i]]);
  2385. return;
  2386. }
  2387. if (i1 == 2) {
  2388. int j1 = anIntArray1637[i] >> 2;
  2389. int l1 = anIntArray1643[j1];
  2390. int j2 = anIntArray1644[j1];
  2391. int l2 = anIntArray1645[j1];
  2392. Texture.method378(anIntArray1666[j], anIntArray1666[k],
  2393. anIntArray1666[l], anIntArray1665[j], anIntArray1665[k],
  2394. anIntArray1665[l], anIntArray1634[i], anIntArray1635[i],
  2395. anIntArray1636[i], anIntArray1668[l1], anIntArray1668[j2],
  2396. anIntArray1668[l2], anIntArray1669[l1], anIntArray1669[j2],
  2397. anIntArray1669[l2], anIntArray1670[l1], anIntArray1670[j2],
  2398. anIntArray1670[l2], anIntArray1640[i]);
  2399. return;
  2400. }
  2401. if (i1 == 3) {
  2402. int k1 = anIntArray1637[i] >> 2;
  2403. int i2 = anIntArray1643[k1];
  2404. int k2 = anIntArray1644[k1];
  2405. int i3 = anIntArray1645[k1];
  2406. Texture.method378(anIntArray1666[j], anIntArray1666[k],
  2407. anIntArray1666[l], anIntArray1665[j], anIntArray1665[k],
  2408. anIntArray1665[l], anIntArray1634[i], anIntArray1634[i],
  2409. anIntArray1634[i], anIntArray1668[i2], anIntArray1668[k2],
  2410. anIntArray1668[i3], anIntArray1669[i2], anIntArray1669[k2],
  2411. anIntArray1669[i3], anIntArray1670[i2], anIntArray1670[k2],
  2412. anIntArray1670[i3], anIntArray1640[i]);
  2413. }
  2414. }
  2415.  
  2416. private final void method485(int i) {
  2417. if (anIntArray1640 != null)
  2418. if (anIntArray1640[i] == 65535)
  2419. return;
  2420. int j = Texture.textureInt1;
  2421. int k = Texture.textureInt2;
  2422. int l = 0;
  2423. int i1 = anIntArray1631[i];
  2424. int j1 = anIntArray1632[i];
  2425. int k1 = anIntArray1633[i];
  2426. int l1 = anIntArray1670[i1];
  2427. int i2 = anIntArray1670[j1];
  2428. int j2 = anIntArray1670[k1];
  2429.  
  2430. if (l1 >= 50) {
  2431. anIntArray1678[l] = anIntArray1665[i1];
  2432. anIntArray1679[l] = anIntArray1666[i1];
  2433. anIntArray1680[l++] = anIntArray1634[i];
  2434. } else {
  2435. int k2 = anIntArray1668[i1];
  2436. int k3 = anIntArray1669[i1];
  2437. int k4 = anIntArray1634[i];
  2438. if (j2 >= 50) {
  2439. int k5 = (50 - l1) * modelIntArray4[j2 - l1];
  2440. anIntArray1678[l] = j
  2441. + (k2 + ((anIntArray1668[k1] - k2) * k5 >> 16) << 9)
  2442. / 50;
  2443. anIntArray1679[l] = k
  2444. + (k3 + ((anIntArray1669[k1] - k3) * k5 >> 16) << 9)
  2445. / 50;
  2446. anIntArray1680[l++] = k4
  2447. + ((anIntArray1636[i] - k4) * k5 >> 16);
  2448. }
  2449. if (i2 >= 50) {
  2450. int l5 = (50 - l1) * modelIntArray4[i2 - l1];
  2451. anIntArray1678[l] = j
  2452. + (k2 + ((anIntArray1668[j1] - k2) * l5 >> 16) << 9)
  2453. / 50;
  2454. anIntArray1679[l] = k
  2455. + (k3 + ((anIntArray1669[j1] - k3) * l5 >> 16) << 9)
  2456. / 50;
  2457. anIntArray1680[l++] = k4
  2458. + ((anIntArray1635[i] - k4) * l5 >> 16);
  2459. }
  2460. }
  2461. if (i2 >= 50) {
  2462. anIntArray1678[l] = anIntArray1665[j1];
  2463. anIntArray1679[l] = anIntArray1666[j1];
  2464. anIntArray1680[l++] = anIntArray1635[i];
  2465. } else {
  2466. int l2 = anIntArray1668[j1];
  2467. int l3 = anIntArray1669[j1];
  2468. int l4 = anIntArray1635[i];
  2469. if (l1 >= 50) {
  2470. int i6 = (50 - i2) * modelIntArray4[l1 - i2];
  2471. anIntArray1678[l] = j
  2472. + (l2 + ((anIntArray1668[i1] - l2) * i6 >> 16) << 9)
  2473. / 50;
  2474. anIntArray1679[l] = k
  2475. + (l3 + ((anIntArray1669[i1] - l3) * i6 >> 16) << 9)
  2476. / 50;
  2477. anIntArray1680[l++] = l4
  2478. + ((anIntArray1634[i] - l4) * i6 >> 16);
  2479. }
  2480. if (j2 >= 50) {
  2481. int j6 = (50 - i2) * modelIntArray4[j2 - i2];
  2482. anIntArray1678[l] = j
  2483. + (l2 + ((anIntArray1668[k1] - l2) * j6 >> 16) << 9)
  2484. / 50;
  2485. anIntArray1679[l] = k
  2486. + (l3 + ((anIntArray1669[k1] - l3) * j6 >> 16) << 9)
  2487. / 50;
  2488. anIntArray1680[l++] = l4
  2489. + ((anIntArray1636[i] - l4) * j6 >> 16);
  2490. }
  2491. }
  2492. if (j2 >= 50) {
  2493. anIntArray1678[l] = anIntArray1665[k1];
  2494. anIntArray1679[l] = anIntArray1666[k1];
  2495. anIntArray1680[l++] = anIntArray1636[i];
  2496. } else {
  2497. int i3 = anIntArray1668[k1];
  2498. int i4 = anIntArray1669[k1];
  2499. int i5 = anIntArray1636[i];
  2500. if (i2 >= 50) {
  2501. int k6 = (50 - j2) * modelIntArray4[i2 - j2];
  2502. anIntArray1678[l] = j
  2503. + (i3 + ((anIntArray1668[j1] - i3) * k6 >> 16) << 9)
  2504. / 50;
  2505. anIntArray1679[l] = k
  2506. + (i4 + ((anIntArray1669[j1] - i4) * k6 >> 16) << 9)
  2507. / 50;
  2508. anIntArray1680[l++] = i5
  2509. + ((anIntArray1635[i] - i5) * k6 >> 16);
  2510. }
  2511. if (l1 >= 50) {
  2512. int l6 = (50 - j2) * modelIntArray4[l1 - j2];
  2513. anIntArray1678[l] = j
  2514. + (i3 + ((anIntArray1668[i1] - i3) * l6 >> 16) << 9)
  2515. / 50;
  2516. anIntArray1679[l] = k
  2517. + (i4 + ((anIntArray1669[i1] - i4) * l6 >> 16) << 9)
  2518. / 50;
  2519. anIntArray1680[l++] = i5
  2520. + ((anIntArray1634[i] - i5) * l6 >> 16);
  2521. }
  2522. }
  2523. int j3 = anIntArray1678[0];
  2524. int j4 = anIntArray1678[1];
  2525. int j5 = anIntArray1678[2];
  2526. int i7 = anIntArray1679[0];
  2527. int j7 = anIntArray1679[1];
  2528. int k7 = anIntArray1679[2];
  2529. if ((j3 - j4) * (k7 - j7) - (i7 - j7) * (j5 - j4) > 0) {
  2530. Texture.aBoolean1462 = false;
  2531. if (l == 3) {
  2532. if (j3 < 0 || j4 < 0 || j5 < 0 || j3 > DrawingArea.centerX
  2533. || j4 > DrawingArea.centerX || j5 > DrawingArea.centerX)
  2534. Texture.aBoolean1462 = true;
  2535. int l7;
  2536. if (anIntArray1637 == null)
  2537. l7 = 0;
  2538. else
  2539. l7 = anIntArray1637[i] & 3;
  2540. if (l7 == 0)
  2541. Texture.method374(i7, j7, k7, j3, j4, j5,
  2542. anIntArray1680[0], anIntArray1680[1],
  2543. anIntArray1680[2]);
  2544. else if (l7 == 1)
  2545. Texture.method376(i7, j7, k7, j3, j4, j5,
  2546. modelIntArray3[anIntArray1634[i]]);
  2547. else if (l7 == 2) {
  2548. int j8 = anIntArray1637[i] >> 2;
  2549. int k9 = anIntArray1643[j8];
  2550. int k10 = anIntArray1644[j8];
  2551. int k11 = anIntArray1645[j8];
  2552. Texture.method378(i7, j7, k7, j3, j4, j5,
  2553. anIntArray1680[0], anIntArray1680[1],
  2554. anIntArray1680[2], anIntArray1668[k9],
  2555. anIntArray1668[k10], anIntArray1668[k11],
  2556. anIntArray1669[k9], anIntArray1669[k10],
  2557. anIntArray1669[k11], anIntArray1670[k9],
  2558. anIntArray1670[k10], anIntArray1670[k11],
  2559. anIntArray1640[i]);
  2560. } else if (l7 == 3) {
  2561. int k8 = anIntArray1637[i] >> 2;
  2562. int l9 = anIntArray1643[k8];
  2563. int l10 = anIntArray1644[k8];
  2564. int l11 = anIntArray1645[k8];
  2565. Texture.method378(i7, j7, k7, j3, j4, j5,
  2566. anIntArray1634[i], anIntArray1634[i],
  2567. anIntArray1634[i], anIntArray1668[l9],
  2568. anIntArray1668[l10], anIntArray1668[l11],
  2569. anIntArray1669[l9], anIntArray1669[l10],
  2570. anIntArray1669[l11], anIntArray1670[l9],
  2571. anIntArray1670[l10], anIntArray1670[l11],
  2572. anIntArray1640[i]);
  2573. }
  2574. }
  2575. if (l == 4) {
  2576. if (j3 < 0 || j4 < 0 || j5 < 0 || j3 > DrawingArea.centerX
  2577. || j4 > DrawingArea.centerX || j5 > DrawingArea.centerX
  2578. || anIntArray1678[3] < 0
  2579. || anIntArray1678[3] > DrawingArea.centerX)
  2580. Texture.aBoolean1462 = true;
  2581. int i8;
  2582. if (anIntArray1637 == null)
  2583. i8 = 0;
  2584. else
  2585. i8 = anIntArray1637[i] & 3;
  2586. if (i8 == 0) {
  2587. Texture.method374(i7, j7, k7, j3, j4, j5,
  2588. anIntArray1680[0], anIntArray1680[1],
  2589. anIntArray1680[2]);
  2590. Texture.method374(i7, k7, anIntArray1679[3], j3, j5,
  2591. anIntArray1678[3], anIntArray1680[0],
  2592. anIntArray1680[2], anIntArray1680[3]);
  2593. return;
  2594. }
  2595. if (i8 == 1) {
  2596. int l8 = modelIntArray3[anIntArray1634[i]];
  2597. Texture.method376(i7, j7, k7, j3, j4, j5, l8);
  2598. Texture.method376(i7, k7, anIntArray1679[3], j3, j5,
  2599. anIntArray1678[3], l8);
  2600. return;
  2601. }
  2602. if (i8 == 2) {
  2603. int i9 = anIntArray1637[i] >> 2;
  2604. int i10 = anIntArray1643[i9];
  2605. int i11 = anIntArray1644[i9];
  2606. int i12 = anIntArray1645[i9];
  2607. Texture.method378(i7, j7, k7, j3, j4, j5,
  2608. anIntArray1680[0], anIntArray1680[1],
  2609. anIntArray1680[2], anIntArray1668[i10],
  2610. anIntArray1668[i11], anIntArray1668[i12],
  2611. anIntArray1669[i10], anIntArray1669[i11],
  2612. anIntArray1669[i12], anIntArray1670[i10],
  2613. anIntArray1670[i11], anIntArray1670[i12],
  2614. anIntArray1640[i]);
  2615. Texture.method378(i7, k7, anIntArray1679[3], j3, j5,
  2616. anIntArray1678[3], anIntArray1680[0],
  2617. anIntArray1680[2], anIntArray1680[3],
  2618. anIntArray1668[i10], anIntArray1668[i11],
  2619. anIntArray1668[i12], anIntArray1669[i10],
  2620. anIntArray1669[i11], anIntArray1669[i12],
  2621. anIntArray1670[i10], anIntArray1670[i11],
  2622. anIntArray1670[i12], anIntArray1640[i]);
  2623. return;
  2624. }
  2625. if (i8 == 3) {
  2626. int j9 = anIntArray1637[i] >> 2;
  2627. int j10 = anIntArray1643[j9];
  2628. int j11 = anIntArray1644[j9];
  2629. int j12 = anIntArray1645[j9];
  2630. Texture.method378(i7, j7, k7, j3, j4, j5,
  2631. anIntArray1634[i], anIntArray1634[i],
  2632. anIntArray1634[i], anIntArray1668[j10],
  2633. anIntArray1668[j11], anIntArray1668[j12],
  2634. anIntArray1669[j10], anIntArray1669[j11],
  2635. anIntArray1669[j12], anIntArray1670[j10],
  2636. anIntArray1670[j11], anIntArray1670[j12],
  2637. anIntArray1640[i]);
  2638. Texture.method378(i7, k7, anIntArray1679[3], j3, j5,
  2639. anIntArray1678[3], anIntArray1634[i],
  2640. anIntArray1634[i], anIntArray1634[i],
  2641. anIntArray1668[j10], anIntArray1668[j11],
  2642. anIntArray1668[j12], anIntArray1669[j10],
  2643. anIntArray1669[j11], anIntArray1669[j12],
  2644. anIntArray1670[j10], anIntArray1670[j11],
  2645. anIntArray1670[j12], anIntArray1640[i]);
  2646. }
  2647. }
  2648. }
  2649. }
  2650.  
  2651. private final boolean method486(int i, int j, int k, int l, int i1, int j1,
  2652. int k1, int l1) {
  2653. if (j < k && j < l && j < i1)
  2654. return false;
  2655. if (j > k && j > l && j > i1)
  2656. return false;
  2657. if (i < j1 && i < k1 && i < l1)
  2658. return false;
  2659. return i <= j1 || i <= k1 || i <= l1;
  2660. }
  2661.  
  2662. private boolean aBoolean1618;
  2663. public static int anInt1620;
  2664. public static Model aModel_1621 = new Model(true);
  2665. private static int anIntArray1622[] = new int[2000];
  2666. private static int anIntArray1623[] = new int[2000];
  2667. private static int anIntArray1624[] = new int[2000];
  2668. private static int anIntArray1625[] = new int[2000];
  2669. public int anInt1626;
  2670. public int anIntArray1627[];
  2671. public int anIntArray1628[];
  2672. public int anIntArray1629[];
  2673. public int anInt1630;
  2674. public int anIntArray1631[];
  2675. public int anIntArray1632[];
  2676. public int anIntArray1633[];
  2677. public int anIntArray1634[];
  2678. public int anIntArray1635[];
  2679. public int anIntArray1636[];
  2680. public int anIntArray1637[];
  2681. public int anIntArray1638[];
  2682. public int anIntArray1639[];
  2683. public int anIntArray1640[];
  2684. public int anInt1641;
  2685. public int anInt1642;
  2686. public int anIntArray1643[];
  2687. public int anIntArray1644[];
  2688. public int anIntArray1645[];
  2689. public int anInt1646;
  2690. public int anInt1647;
  2691. public int anInt1648;
  2692. public int anInt1649;
  2693. public int anInt1650;
  2694. public int anInt1651;
  2695. public int anInt1652;
  2696. public int anInt1653;
  2697. public int anInt1654;
  2698. public int anIntArray1655[];
  2699. public int anIntArray1656[];
  2700. public int anIntArrayArray1657[][];
  2701. public int anIntArrayArray1658[][];
  2702. public boolean aBoolean1659;
  2703. Class33 aClass33Array1660[];
  2704. static Class21 aClass21Array1661[];
  2705. static OnDemandFetcherParent aOnDemandFetcherParent_1662;
  2706. static boolean aBooleanArray1663[] = new boolean[8000];
  2707. static boolean aBooleanArray1664[] = new boolean[8000];
  2708. static int anIntArray1665[] = new int[8000];
  2709. static int anIntArray1666[] = new int[8000];
  2710. static int anIntArray1667[] = new int[8000];
  2711. static int anIntArray1668[] = new int[8000];
  2712. static int anIntArray1669[] = new int[8000];
  2713. static int anIntArray1670[] = new int[8000];
  2714. static int anIntArray1671[] = new int[1500];
  2715. static int anIntArrayArray1672[][] = new int[1500][512];
  2716. static int anIntArray1673[] = new int[12];
  2717. static int anIntArrayArray1674[][] = new int[12][2000];
  2718. static int anIntArray1675[] = new int[2000];
  2719. static int anIntArray1676[] = new int[2000];
  2720. static int anIntArray1677[] = new int[12];
  2721. static int anIntArray1678[] = new int[10];
  2722. static int anIntArray1679[] = new int[10];
  2723. static int anIntArray1680[] = new int[10];
  2724. static int anInt1681;
  2725. static int anInt1682;
  2726. static int anInt1683;
  2727. public static boolean aBoolean1684;
  2728. public static int anInt1685;
  2729. public static int anInt1686;
  2730. public static int anInt1687;
  2731. public static int anIntArray1688[] = new int[1000];
  2732. public static int modelIntArray1[];
  2733. public static int modelIntArray2[];
  2734. static int modelIntArray3[];
  2735. static int modelIntArray4[];
  2736.  
  2737. static {
  2738. modelIntArray1 = Texture.anIntArray1470;
  2739. modelIntArray2 = Texture.anIntArray1471;
  2740. modelIntArray3 = Texture.anIntArray1482;
  2741. modelIntArray4 = Texture.anIntArray1469;
  2742. }
  2743. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement