Guest User

711+ Model Header for 317 [PI]

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