Advertisement
Guest User

Untitled

a guest
Feb 20th, 2018
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.77 KB | None | 0 0
  1. void __thiscall ReadUpdateObjectMovement(bool *this, int a2, int a3)
  2. {
  3. int v3; // ebx
  4. bool *v4; // esi
  5. int v5; // eax
  6. int v6; // eax
  7. bool v7; // zf
  8. int v8; // ebx
  9. int v9; // eax
  10. char v10; // al
  11. int v11; // edi
  12. int v12; // edi
  13. _BYTE *v13; // edi
  14. int v14; // edi
  15. int v15; // ST04_4
  16. int v16; // eax
  17. int v17; // edi
  18. int v18; // edi
  19. int v19; // edi
  20. int v20; // eax
  21. int v21; // edi
  22. int v22; // ST04_4
  23. int v23; // eax
  24. int v24; // eax
  25. int v25; // eax
  26. int v26; // ecx
  27. int v27; // eax
  28. int v28; // eax
  29. int v29; // eax
  30. int v30; // edi
  31. int v31; // edi
  32. int v32; // ST04_4
  33. int v33; // eax
  34. int v34; // edi
  35. int v35; // eax
  36. int v36; // edx
  37. int v37; // ecx
  38. unsigned int *v38; // ebx
  39. int v39; // eax
  40. int v40; // eax
  41. int v41; // edi
  42. int v42; // edi
  43. int v43; // edi
  44. int v44; // eax
  45. int v45; // eax
  46. bool v46; // al
  47. signed int v47; // xmm0_4
  48. int v48; // eax
  49. int v49; // eax
  50. char v50; // al
  51. unsigned int v51; // edx
  52. int v52; // ecx
  53. signed int v53; // xmm0_4
  54. signed int v54; // xmm0_4
  55. char v55; // al
  56. int v56; // eax
  57. int v57; // eax
  58. char v58; // al
  59. bool v59; // al
  60. int v60; // eax
  61. bool v61; // al
  62. int v62; // eax
  63. bool v63; // al
  64. int v64; // eax
  65. int v65; // eax
  66. bool v66; // al
  67. int v67; // eax
  68. unsigned int v68; // eax
  69. unsigned int v69; // edi
  70. unsigned int v70; // edi
  71. int v71; // edi
  72. int v72; // eax
  73. int v73; // xmm0_4
  74. int v74; // edi
  75. int v75; // eax
  76. unsigned int v76; // edi
  77. int v77; // edi
  78. int v78; // eax
  79. int v79; // eax
  80. unsigned int v80; // edi
  81. int v81; // eax
  82. int v82; // edi
  83. int v83; // ebx
  84. char v84; // al
  85. int v85; // eax
  86. int v86; // eax
  87. int v87; // eax
  88. int v88; // eax
  89. int v89; // eax
  90. char v90; // al
  91. int v91; // eax
  92. char v92; // al
  93. int v93; // eax
  94. int v94; // eax
  95. int v95; // eax
  96. int v96; // eax
  97. int v97; // eax
  98. int v98; // eax
  99. char v99; // al
  100. char v100; // al
  101. __int16 v101; // ax
  102. int v102; // eax
  103. __int16 v103; // ax
  104. int v104; // eax
  105. __int16 v105; // ax
  106. __int16 v106; // ax
  107. int *v107; // eax
  108. char v108; // al
  109. int v109; // eax
  110. int v110; // eax
  111. char v111; // al
  112. char v112; // al
  113. char v113; // al
  114. char v114; // al
  115. char v115; // al
  116. __int16 v116; // ax
  117. int v117; // eax
  118. char v118; // al
  119. __int16 v119; // ax
  120. char v120; // al
  121. unsigned int *v121; // edi
  122. int v122; // ebx
  123. _DWORD *v123; // ebx
  124. int v124; // ebx
  125. int v125; // ebx
  126. int v126; // ebx
  127. int v127; // eax
  128. int v128; // ebx
  129. int *v129; // ebx
  130. int v130; // eax
  131. int v131; // ebx
  132. int v132; // edi
  133. int v133; // edx
  134. unsigned int v134; // edi
  135. int v135; // [esp+Ch] [ebp-38h]
  136. __int16 v136; // [esp+10h] [ebp-34h]
  137. int v137; // [esp+14h] [ebp-30h]
  138. int v138; // [esp+18h] [ebp-2Ch]
  139. unsigned int v139; // [esp+1Ch] [ebp-28h]
  140. int v140; // [esp+20h] [ebp-24h]
  141. int v141; // [esp+24h] [ebp-20h]
  142. int v142; // [esp+28h] [ebp-1Ch]
  143. int v143; // [esp+2Ch] [ebp-18h]
  144. unsigned int v144; // [esp+30h] [ebp-14h]
  145. unsigned int v145; // [esp+34h] [ebp-10h]
  146. unsigned int v146; // [esp+38h] [ebp-Ch]
  147. int v147; // [esp+3Ch] [ebp-8h]
  148. bool v148; // [esp+43h] [ebp-1h]
  149. _DWORD *v149; // [esp+4Ch] [ebp+8h]
  150.  
  151. v3 = a2;
  152. v4 = this;
  153. v135 = a2;
  154. v136 = 2048;
  155. this[676] = ReadBit(&v135) != 0;
  156. v4[488] = ReadBit(&v135) != 0; // hasVehicleData
  157. v4[1044] = ReadBit(&v135) != 0;
  158. v4[512] = ReadBit(&v135) != 0; // if ((p_Flags & UPDATEFLAG_ROTATION) && l_GameObject)
  159. *v4 = ReadBit(&v135) != 0;
  160. v4[368] = ReadBit(&v135) != 0; // isAlive
  161. v4[1032] = ReadBit(&v135) != 0; // hasSceneObjectData
  162. v4[2] = ReadBit(&v135) != 0;
  163. v4[668] = ReadBit(&v135) != 0; // has Area Trigger
  164. v4[680] = ReadBit(&v135) != 0; // has Update Self
  165. v4[681] = ReadBit(&v135) != 0;
  166. v4[1] = ReadBit(&v135) != 0;
  167. v4[424] = ReadBit(&v135) != 0; // hasGameObjectData
  168. v4[476] = ReadBit(&v135) != 0; // has Transport
  169. v4[498] = ReadBit(&v135) != 0; // hasAnimKits
  170. v4[448] = ReadBit(&v135) != 0; // hasStationaryPosition
  171. v4[464] = ReadBit(&v135) != 0; // hasTarget
  172. v4[3] = ReadBit(&v135) != 0;
  173. LOBYTE(v142) = 0;
  174. v5 = sub_6968CF(v142);
  175. ReadBits((unsigned int *)v4 + 267, v5);
  176. v4[810] = ReadBit(&v135) != 0;
  177. v6 = ReadBit(&v135);
  178. v7 = v4[1032] == 0;
  179. v4[1064] = v6 != 0;
  180. if ( !v7 )
  181. {
  182. v4[833] = ReadBit(&v135) == 0;
  183. *((_DWORD *)v4 + 207) = ReadBit(&v135) == 0;
  184. v8 = (int)(v4 + 863);
  185. v143 = 2;
  186. do
  187. {
  188. *(_BYTE *)(v8 - 2) = ReadBit(&v135);
  189. *(_BYTE *)v8 = ReadBit(&v135);
  190. *(_BYTE *)(v8 + 29) = -(ReadBit(&v135) != 0);
  191. *(_BYTE *)(v8 - 5) = ReadBit(&v135);
  192. *(_BYTE *)(v8 - 6) = ReadBit(&v135);
  193. *(_BYTE *)(v8 - 4) = ReadBit(&v135);
  194. *(_BYTE *)(v8 - 1) = ReadBit(&v135);
  195. *(_DWORD *)(v8 + 5) = ReadBit(&v135) == 0;
  196. *(_WORD *)(v8 + 9) = ReadBit(&v135) == 0;
  197. *(_BYTE *)(v8 - 3) = ReadBit(&v135);
  198. LOBYTE(v142) = 0;
  199. v9 = sub_6920B5(v142);
  200. sub_7386CC(v9);
  201. v10 = ReadBit(&v135);
  202. v144 = 0;
  203. v7 = *(_DWORD *)(v8 + 13) == 0;
  204. *(_BYTE *)(v8 - 7) = v10;
  205. if ( !v7 )
  206. {
  207. v147 = 0;
  208. do
  209. {
  210. v11 = v147 + *(_DWORD *)(v8 + 17);
  211. *(_BYTE *)(v11 + 2) = ReadBit(&v135);
  212. v12 = v147 + *(_DWORD *)(v8 + 17);
  213. *(_WORD *)(v12 + 46) = ReadBit(&v135) == 0;
  214. v13 = (_BYTE *)(v147 + *(_DWORD *)(v8 + 17));
  215. *v13 = ReadBit(&v135);
  216. v14 = v147 + *(_DWORD *)(v8 + 17);
  217. *(_BYTE *)(v14 + 3) = ReadBit(&v135);
  218. LOBYTE(v141) = 0;
  219. v15 = sub_696884(v141);
  220. v16 = *(_DWORD *)(v8 + 17);
  221. sub_70FE52(v15);
  222. v17 = v147 + *(_DWORD *)(v8 + 17);
  223. *(_BYTE *)(v17 + 1) = ReadBit(&v135);
  224. v18 = v147 + *(_DWORD *)(v8 + 17);
  225. *(_BYTE *)(v18 + 7) = ReadBit(&v135);
  226. v19 = v147 + *(_DWORD *)(v8 + 17);
  227. *(_BYTE *)(v19 + 4) = ReadBit(&v135);
  228. LOBYTE(v140) = 0;
  229. v20 = sub_6A396B(v140);
  230. v21 = v147;
  231. v22 = v20;
  232. v23 = *(_DWORD *)(v8 + 17);
  233. sub_70FEBF(v22);
  234. v24 = *(_DWORD *)(v8 + 17);
  235. v145 = 0;
  236. if ( *(_DWORD *)(v21 + v24 + 116) )
  237. {
  238. v146 = 0;
  239. do
  240. {
  241. v139 = v146 + *(_DWORD *)(v21 + *(_DWORD *)(v8 + 17) + 120);
  242. v25 = ReadBit(&v135);
  243. v146 += 12;
  244. ++v145;
  245. *(_BYTE *)(v139 + 9) = 10 - (v25 != 0);
  246. }
  247. while ( v145 < *(_DWORD *)(v21 + *(_DWORD *)(v8 + 17) + 116) );
  248. }
  249. v26 = *(_DWORD *)(v8 + 17);
  250. v145 = 0;
  251. if ( *(_DWORD *)(v21 + v26 + 132) )
  252. {
  253. v146 = 0;
  254. do
  255. {
  256. v139 = v146 + *(_DWORD *)(v21 + *(_DWORD *)(v8 + 17) + 136);
  257. v27 = ReadBit(&v135);
  258. *(_DWORD *)(v139 + 12) = v27 == 0;
  259. v139 = v146 + *(_DWORD *)(v21 + *(_DWORD *)(v8 + 17) + 136);
  260. v28 = ReadBit(&v135);
  261. *(_BYTE *)(v139 + 16) = 10 - (v28 != 0);
  262. v139 = v146 + *(_DWORD *)(v21 + *(_DWORD *)(v8 + 17) + 136);
  263. v29 = ReadBit(&v135);
  264. v146 += 20;
  265. ++v145;
  266. *(_DWORD *)(v139 + 8) = v29 == 0;
  267. }
  268. while ( v145 < *(_DWORD *)(v21 + *(_DWORD *)(v8 + 17) + 132) );
  269. }
  270. v30 = v147 + *(_DWORD *)(v8 + 17);
  271. *(_BYTE *)(v30 + 6) = ReadBit(&v135);
  272. v31 = v147 + *(_DWORD *)(v8 + 17);
  273. *(_BYTE *)(v31 + 5) = ReadBit(&v135);
  274. LOBYTE(v138) = 0;
  275. v32 = sub_6A396B(v138);
  276. v33 = *(_DWORD *)(v8 + 17);
  277. sub_70FF2C(v32);
  278. v34 = v147 + *(_DWORD *)(v8 + 17);
  279. *(_BYTE *)(v34 + 48) = -(ReadBit(&v135) != 0);
  280. LOBYTE(v137) = 0;
  281. v35 = sub_6657B0(v137);
  282. v36 = v147;
  283. v37 = *(_DWORD *)(v8 + 17);
  284. ++v144;
  285. v147 += 168;
  286. *(_DWORD *)(v36 + v37 + 49) = v35;
  287. }
  288. while ( v144 < *(_DWORD *)(v8 + 13) );
  289. }
  290. v8 += 40;
  291. --v143;
  292. }
  293. while ( v143 );
  294. *((_DWORD *)v4 + 210) = ReadBit(&v135) == 0;
  295. *((_DWORD *)v4 + 211) = 0;
  296. v38 = (unsigned int *)(v4 + 936);
  297. v143 = 3;
  298. do
  299. {
  300. LOBYTE(v137) = 0;
  301. v39 = sub_6A396B(v137);
  302. sub_70FF2C(v39);
  303. LOBYTE(v138) = 0;
  304. v40 = sub_6A396B(v138);
  305. sub_70FEBF(v40);
  306. v144 = 0;
  307. if ( *v38 )
  308. {
  309. v146 = 0;
  310. do
  311. {
  312. v41 = v146 + v38[1];
  313. *(_DWORD *)(v41 + 8) = ReadBit(&v135) == 0;
  314. v42 = v146 + v38[1];
  315. *(_BYTE *)(v42 + 16) = 10 - (ReadBit(&v135) != 0);
  316. v43 = v146 + v38[1];
  317. v44 = ReadBit(&v135);
  318. v146 += 20;
  319. ++v144;
  320. *(_DWORD *)(v43 + 12) = v44 == 0;
  321. }
  322. while ( v144 < *v38 );
  323. }
  324. v38 += 8;
  325. --v143;
  326. }
  327. while ( v143 );
  328. v4[848] = ReadBit(&v135) != 0;
  329. v4[847] = ReadBit(&v135);
  330. v4[845] = ReadBit(&v135);
  331. v4[842] = ReadBit(&v135);
  332. v4[843] = ReadBit(&v135);
  333. v4[841] = ReadBit(&v135);
  334. v4[840] = ReadBit(&v135);
  335. v4[846] = ReadBit(&v135);
  336. v4[844] = ReadBit(&v135);
  337. *((_WORD *)v4 + 408) = ReadBit(&v135) == 0;
  338. *((_WORD *)v4 + 409) = ReadBit(&v135) == 0;
  339. v4[832] = ReadBit(&v135) == 0;
  340. v4[849] = ReadBit(&v135) != 0;
  341. v3 = a2;
  342. *((_DWORD *)v4 + 206) = ReadBit(&v135) == 0;
  343. }
  344. if ( v4[1064] ) // if (bit428)
  345. // bits418 = packet.ReadBits(22);
  346. {
  347. LOBYTE(v137) = 0;
  348. v45 = sub_6968CF(v137);
  349. ReadBits((unsigned int *)v4 + 262, v45);
  350. }
  351. if ( v4[424] ) // if (hasTransportPosition)
  352. {
  353. v4[379] = ReadBit(&v135);
  354. v4[381] = ReadBit(&v135);
  355. v4[378] = ReadBit(&v135);
  356. v4[377] = ReadBit(&v135);
  357. v4[380] = ReadBit(&v135);
  358. v4[412] = ReadBit(&v135) != 0;
  359. v4[420] = ReadBit(&v135) != 0;
  360. v4[376] = ReadBit(&v135);
  361. v4[382] = ReadBit(&v135);
  362. v4[383] = ReadBit(&v135);
  363. }
  364. if ( v4[368] ) // if (isLiving)
  365. {
  366. v46 = ReadBit(&v135) != 0;
  367. v4[96] = v46;
  368. if ( v46 )
  369. {
  370. v4[52] = ReadBit(&v135);
  371. v4[48] = ReadBit(&v135);
  372. v4[53] = ReadBit(&v135);
  373. v4[50] = ReadBit(&v135);
  374. v4[51] = ReadBit(&v135);
  375. v4[84] = ReadBit(&v135) != 0;
  376. v4[55] = ReadBit(&v135);
  377. v4[54] = ReadBit(&v135);
  378. v4[49] = ReadBit(&v135);
  379. v4[92] = ReadBit(&v135) != 0;
  380. }
  381. if ( ReadBit(&v135) )
  382. v47 = 0;
  383. else
  384. v47 = 1065353216;
  385. *((_DWORD *)v4 + 26) = v47;
  386. v4[140] = ReadBit(&v135) != 0;
  387. LOBYTE(v137) = 0;
  388. v48 = sub_6A3920(v137);
  389. sub_769D22(v48);
  390. v4[9] = ReadBit(&v135);
  391. v49 = ReadBit(&v135);
  392. v145 = 0;
  393. v7 = *((_DWORD *)v4 + 88) == 0;
  394. *((_DWORD *)v4 + 5) = v49 == 0;
  395. if ( !v7 )
  396. {
  397. v144 = 0;
  398. do
  399. {
  400. LOBYTE(v137) = 0;
  401. v50 = sub_6920B5(v137);
  402. v51 = v144;
  403. v52 = *((_DWORD *)v4 + 89);
  404. ++v145;
  405. v144 += 28;
  406. *(_BYTE *)(v52 + v51 + 24) = v50;
  407. }
  408. while ( v145 < *((_DWORD *)v4 + 88) );
  409. }
  410. v4[141] = ReadBit(&v135) != 0;
  411. if ( ReadBit(&v135) )
  412. v53 = 0;
  413. else
  414. v53 = 1065353216;
  415. v7 = *((_DWORD *)v4 + 5) == 0;
  416. *((_DWORD *)v4 + 34) = v53;
  417. if ( !v7 )
  418. {
  419. LOBYTE(v137) = 0;
  420. *((_DWORD *)v4 + 5) = sub_66BF5F(v137);
  421. }
  422. if ( ReadBit(&v135) )
  423. v54 = 0;
  424. else
  425. v54 = 1065353216;
  426. *((_DWORD *)v4 + 10) = v54;
  427. *((_DWORD *)v4 + 6) = ReadBit(&v135) == 0;
  428. *((_DWORD *)v4 + 4) = ReadBit(&v135) == 0;
  429. *((_DWORD *)v4 + 40) = ReadBit(&v135) == 0;
  430. v4[10] = ReadBit(&v135);
  431. v4[14] = ReadBit(&v135);
  432. v4[132] = ReadBit(&v135) != 0;
  433. v4[13] = ReadBit(&v135);
  434. v4[12] = ReadBit(&v135);
  435. v55 = ReadBit(&v135);
  436. v7 = *((_DWORD *)v4 + 4) == 0;
  437. v4[8] = v55;
  438. if ( !v7 )
  439. {
  440. LOBYTE(v137) = 0;
  441. *((_DWORD *)v4 + 4) = sub_69691A(v137);
  442. }
  443. v56 = ReadBit(&v135);
  444. v7 = v4[132] == 0;
  445. v4[164] = v56 != 0;
  446. if ( !v7 )
  447. v4[128] = ReadBit(&v135) != 0;
  448. LOBYTE(v137) = 0;
  449. v57 = sub_6968CF(v137);
  450. ReadBits((unsigned int *)v4 + 36, v57);
  451. v4[15] = ReadBit(&v135);
  452. v4[344] = ReadBit(&v135) != 0;
  453. v58 = ReadBit(&v135);
  454. v7 = v4[344] == 0;
  455. v4[11] = v58;
  456. if ( !v7 )
  457. {
  458. v59 = ReadBit(&v135) != 0;
  459. v4[336] = v59;
  460. if ( v59 )
  461. {
  462. v4[260] = ReadBit(&v135) != 0;
  463. LOBYTE(v137) = 0;
  464. v4[280] = sub_6920B5(v137);
  465. LOBYTE(v137) = 0;
  466. v60 = sub_696884(v137);
  467. sub_4A024C(v60);
  468. LOBYTE(v137) = 0;
  469. *((_DWORD *)v4 + 56) = sub_6FE0AE(v137);
  470. v4[252] = ReadBit(&v135) != 0;
  471. v61 = ReadBit(&v135) != 0;
  472. v4[304] = v61;
  473. if ( v61 )
  474. {
  475. LOBYTE(v137) = 0;
  476. *((_WORD *)v4 + 150) = sub_6920B5(v137);
  477. LOBYTE(v137) = 0;
  478. v62 = sub_6A396B(v137);
  479. sub_769CD6(v62);
  480. }
  481. }
  482. }
  483. }
  484. if... // areatrigger
  485. if... // attacking target
  486. if ( v4[498] ) // anim kits
  487. {
  488. *((_WORD *)v4 + 247) = ReadBit(&v135) == 0;
  489. *((_WORD *)v4 + 248) = ReadBit(&v135) == 0;
  490. *((_WORD *)v4 + 246) = ReadBit(&v135) == 0;
  491. }
  492. if ( v4[810] )
  493. {
  494. LOBYTE(v137) = 0;
  495. *(_DWORD *)(v4 + 682) = sub_6657B0(v137);
  496. }
  497. v144 = 0;
  498. if ( *((_DWORD *)v4 + 267) ) // transportFrames
  499. {
  500. do
  501. {
  502. v143 = 0;
  503. sub_40F3DB(&v143);
  504. v68 = v144;
  505. *(_DWORD *)(*((_DWORD *)v4 + 268) + 4 * v144) = v143;
  506. v144 = v68 + 1;
  507. }
  508. while ( v68 + 1 < *((_DWORD *)v4 + 267) );
  509. }
  510. if ( v4[668] ) // areaTrigger
  511. {
  512. if ( v4[572] )
  513. {
  514. v143 = 0;
  515. sub_40F444(&v143);
  516. *((_DWORD *)v4 + 141) = v143;
  517. v143 = 0;
  518. sub_40F444(&v143);
  519. *((_DWORD *)v4 + 142) = v143;
  520. }
  521. if ( v4[644] )
  522. {
  523. v69 = 0;
  524. if ( *((_DWORD *)v4 + 155) )
  525. {
  526. do
  527. {
  528. v143 = 0;
  529. sub_40F444(&v143);
  530. *(_DWORD *)(*((_DWORD *)v4 + 156) + 8 * v69) = v143;
  531. v144 = 0;
  532. sub_40F444(&v144);
  533. *(_DWORD *)(*((_DWORD *)v4 + 156) + 8 * v69++ + 4) = v144;
  534. }
  535. while ( v69 < *((_DWORD *)v4 + 155) );
  536. }
  537. v3 = a2;
  538. v143 = 0;
  539. sub_40F444(&v143);
  540. v70 = 0;
  541. *((_DWORD *)v4 + 159) = v143;
  542. if ( *((_DWORD *)v4 + 151) )
  543. {
  544. do
  545. {
  546. v143 = 0;
  547. sub_40F444(&v143);
  548. *(_DWORD *)(*((_DWORD *)v4 + 152) + 8 * v70) = v143;
  549. v144 = 0;
  550. sub_40F444(&v144);
  551. *(_DWORD *)(*((_DWORD *)v4 + 152) + 8 * v70++ + 4) = v144;
  552. }
  553. while ( v70 < *((_DWORD *)v4 + 151) );
  554. }
  555. v143 = 0;
  556. sub_40F444(&v143);
  557. *((_DWORD *)v4 + 160) = v143;
  558. }
  559. if ( v4[600] )
  560. {
  561. v143 = 0;
  562. sub_40F444(&v143);
  563. *((_DWORD *)v4 + 145) = v143;
  564. v143 = 0;
  565. sub_40F444(&v143);
  566. *((_DWORD *)v4 + 148) = v143;
  567. v143 = 0;
  568. sub_40F444(&v143);
  569. *((_DWORD *)v4 + 149) = v143;
  570. v143 = 0;
  571. sub_40F444(&v143);
  572. *((_DWORD *)v4 + 146) = v143;
  573. v143 = 0;
  574. sub_40F444(&v143);
  575. *((_DWORD *)v4 + 144) = v143;
  576. v143 = 0;
  577. sub_40F444(&v143);
  578. *((_DWORD *)v4 + 147) = v143;
  579. }
  580. v143 = 0;
  581. sub_40F3DB(&v143);
  582. *((_DWORD *)v4 + 130) = v143;
  583. if ( v4[664] )
  584. {
  585. v71 = 0;
  586. v144 = 0;
  587. if ( *((_DWORD *)v4 + 162) )
  588. {
  589. do
  590. {
  591. v143 = 0;
  592. sub_40F444(&v143);
  593. *(_DWORD *)(v71 + *((_DWORD *)v4 + 163)) = v143;
  594. v145 = 0;
  595. sub_40F444(&v145);
  596. *(_DWORD *)(*((_DWORD *)v4 + 163) + v71 + 4) = v145;
  597. v146 = 0;
  598. sub_40F444(&v146);
  599. v72 = *((_DWORD *)v4 + 163);
  600. ++v144;
  601. *(_DWORD *)(v72 + v71 + 8) = v146;
  602. v71 += 12;
  603. }
  604. while ( v144 < *((_DWORD *)v4 + 162) );
  605. }
  606. }
  607. if ( v4[544] )
  608. {
  609. v143 = 0;
  610. sub_40F3DB(&v143);
  611. *((_DWORD *)v4 + 135) = v143;
  612. }
  613. if ( v4[536] )
  614. {
  615. v143 = 0;
  616. sub_40F3DB(&v143);
  617. *((_DWORD *)v4 + 133) = v143;
  618. }
  619. if ( v4[560] )
  620. {
  621. v143 = 0;
  622. sub_40F3DB(&v143);
  623. *((_DWORD *)v4 + 139) = v143;
  624. }
  625. if ( v4[552] )
  626. {
  627. v143 = 0;
  628. sub_40F3DB(&v143);
  629. *((_DWORD *)v4 + 137) = v143;
  630. }
  631. }
  632. if ( v4[368] ) // isalive/updateflagliving
  633. {
  634. if ( v4[132] )
  635. {
  636. if ( v4[128] )
  637. {
  638. v143 = 0;
  639. sub_40F444(&v143);
  640. *((_DWORD *)v4 + 31) = v143;
  641. v143 = 0;
  642. sub_40F444(&v143);
  643. *((_DWORD *)v4 + 30) = v143;
  644. v143 = 0;
  645. sub_40F444(&v143);
  646. *((_DWORD *)v4 + 29) = v143;
  647. }
  648. v143 = 0;
  649. sub_40F444(&v143);
  650. v73 = v143;
  651. v143 = 0;
  652. *((_DWORD *)v4 + 28) = v73;
  653. sub_40F3DB(&v143);
  654. *((_DWORD *)v4 + 27) = v143;
  655. }
  656. if ( v4[344] )
  657. {
  658. if ( v4[336] )
  659. {
  660. v143 = 0;
  661. sub_40F444(&v143);
  662. v144 = 0;
  663. *((_DWORD *)v4 + 61) = v143;
  664. if ( *((_DWORD *)v4 + 66) )
  665. {
  666. v74 = 0;
  667. do
  668. {
  669. v143 = 0;
  670. sub_40F444(&v143);
  671. *(_DWORD *)(v74 + *((_DWORD *)v4 + 67) + 8) = v143;
  672. v145 = 0;
  673. sub_40F444(&v145);
  674. *(_DWORD *)(v74 + *((_DWORD *)v4 + 67) + 4) = v145;
  675. v146 = 0;
  676. sub_40F444(&v146);
  677. v75 = *((_DWORD *)v4 + 67);
  678. ++v144;
  679. *(_DWORD *)(v74 + v75) = v146;
  680. v74 += 12;
  681. }
  682. while ( v144 < *((_DWORD *)v4 + 66) );
  683. }
  684. v148 = 0;
  685. sub_40F37A(&v148);
  686. v4[228] = v148;
  687. v143 = 0;
  688. sub_40F444(&v143);
  689. *((_DWORD *)v4 + 60) = v143;
  690. if ( v4[304] )
  691. {
  692. v76 = 0;
  693. if ( *((_DWORD *)v4 + 71) )
  694. {
  695. do
  696. {
  697. v143 = 0;
  698. sub_40F444(&v143);
  699. *(_DWORD *)(*((_DWORD *)v4 + 72) + 8 * v76) = v143;
  700. v144 = 0;
  701. sub_40F444(&v144);
  702. *(_DWORD *)(*((_DWORD *)v4 + 72) + 8 * v76++ + 4) = v144;
  703. }
  704. while ( v76 < *((_DWORD *)v4 + 71) );
  705. }
  706. }
  707. if ( v4[228] == 2 )
  708. {
  709. v143 = 0;
  710. sub_40F444(&v143);
  711. *((_DWORD *)v4 + 80) = v143;
  712. v143 = 0;
  713. sub_40F444(&v143);
  714. *((_DWORD *)v4 + 81) = v143;
  715. v143 = 0;
  716. sub_40F444(&v143);
  717. *((_DWORD *)v4 + 82) = v143;
  718. }
  719. if ( v4[252] )
  720. {
  721. v143 = 0;
  722. sub_40F444(&v143);
  723. *((_DWORD *)v4 + 62) = v143;
  724. }
  725. if ( v4[228] == 4 )
  726. {
  727. v143 = 0;
  728. sub_40F444(&v143);
  729. *((_DWORD *)v4 + 77) = v143;
  730. }
  731. v143 = 0;
  732. sub_40F3DB(&v143);
  733. *((_DWORD *)v4 + 59) = v143;
  734. if ( v4[260] )
  735. {
  736. v143 = 0;
  737. sub_40F3DB(&v143);
  738. *((_DWORD *)v4 + 64) = v143;
  739. }
  740. v143 = 0;
  741. sub_40F3DB(&v143);
  742. *((_DWORD *)v4 + 58) = v143;
  743. }
  744. v143 = 0;
  745. sub_40F3DB(&v143);
  746. *((_DWORD *)v4 + 52) = v143;
  747. v143 = 0;
  748. sub_40F444(&v143);
  749. *((_DWORD *)v4 + 53) = v143;
  750. v143 = 0;
  751. sub_40F444(&v143);
  752. *((_DWORD *)v4 + 54) = v143;
  753. v143 = 0;
  754. sub_40F444(&v143);
  755. *((_DWORD *)v4 + 55) = v143;
  756. }
  757. v143 = 0;
  758. sub_40F444(&v143);
  759. v144 = 0;
  760. *((_DWORD *)v4 + 9) = v143;
  761. if ( *((_DWORD *)v4 + 88) )
  762. {
  763. v77 = 0;
  764. do
  765. {
  766. v143 = 0;
  767. sub_40F444(&v143);
  768. v78 = *((_DWORD *)v4 + 89);
  769. v145 = 0;
  770. *(_DWORD *)(v78 + v77 + 20) = v143;
  771. sub_40F3DB(&v145);
  772. *(_DWORD *)(*((_DWORD *)v4 + 89) + v77 + 16) = v145;
  773. v145 = 0;
  774. sub_40F3DB(&v145);
  775. *(_DWORD *)(v77 + *((_DWORD *)v4 + 89)) = v145;
  776. v146 = 0;
  777. sub_40F444(&v146);
  778. *(_DWORD *)(*((_DWORD *)v4 + 89) + v77 + 12) = v146;
  779. v147 = 0;
  780. sub_40F444(&v147);
  781. *(_DWORD *)(*((_DWORD *)v4 + 89) + v77 + 4) = v147;
  782. v142 = 0;
  783. sub_40F444(&v142);
  784. v79 = *((_DWORD *)v4 + 89);
  785. ++v144;
  786. *(_DWORD *)(v79 + v77 + 8) = v142;
  787. v77 += 28;
  788. }
  789. while ( v144 < *((_DWORD *)v4 + 88) );
  790. }
  791. v142 = 0;
  792. sub_40F444(&v142);
  793. *((_DWORD *)v4 + 8) = v142;
  794. v142 = 0;
  795. sub_40F444(&v142);
  796. *((_DWORD *)v4 + 47) = v142;
  797. if ( v4[14] )
  798. {
  799. v148 = 0;
  800. sub_40F37A(&v148);
  801. v4[14] ^= v148;
  802. }
  803. v142 = 0;
  804. sub_40F444(&v142);
  805. *((_DWORD *)v4 + 48) = v142;
  806. if ( v4[96] )
  807. {
  808. if ( v4[55] )
  809. {
  810. v148 = 0;
  811. sub_40F37A(&v148);
  812. v4[55] ^= v148;
  813. }
  814. if ( v4[52] )
  815. {
  816. v148 = 0;
  817. sub_40F37A(&v148);
  818. v4[52] ^= v148;
  819. }
  820. if ( v4[92] )
  821. {
  822. v142 = 0;
  823. sub_40F3DB(&v142);
  824. *((_DWORD *)v4 + 22) = v142;
  825. }
  826. v142 = 0;
  827. sub_40F3DB(&v142);
  828. *((_DWORD *)v4 + 19) = v142;
  829. if ( v4[84] )
  830. {
  831. v142 = 0;
  832. sub_40F3DB(&v142);
  833. *((_DWORD *)v4 + 20) = v142;
  834. }
  835. v142 = 0;
  836. sub_40F444(&v142);
  837. *((_DWORD *)v4 + 17) = v142;
  838. v142 = 0;
  839. sub_40F444(&v142);
  840. *((_DWORD *)v4 + 14) = v142;
  841. if ( v4[54] )
  842. v4[54] ^= ReadBitStreamPos(v3);
  843. if ( v4[51] )
  844. v4[51] ^= ReadBitStreamPos(v3);
  845. if ( v4[50] )
  846. v4[50] ^= ReadBitStreamPos(v3);
  847. *((float *)v4 + 16) = ReadFloat(v3);
  848. *((float *)v4 + 15) = ReadFloat(v3);
  849. v4[72] = ReadBitStreamPos(v3);
  850. if ( v4[49] )
  851. v4[49] ^= ReadBitStreamPos(v3);
  852. if ( v4[48] )
  853. v4[48] ^= ReadBitStreamPos(v3);
  854. if ( v4[53] )
  855. v4[53] ^= ReadBitStreamPos(v3);
  856. }
  857. *((float *)v4 + 7) = ReadFloat(v3);
  858. if ( v4[10] )
  859. v4[10] ^= ReadBitStreamPos(v3);
  860. if ( *((float *)v4 + 26) != 0.0 )
  861. *((float *)v4 + 26) = ReadFloat(v3);
  862. *((float *)v4 + 44) = ReadFloat(v3);
  863. if ( v4[9] )
  864. v4[9] ^= ReadBitStreamPos(v3);
  865. *((float *)v4 + 46) = ReadFloat(v3);
  866. *((float *)v4 + 45) = ReadFloat(v3);
  867. if ( v4[13] )
  868. v4[13] ^= ReadBitStreamPos(v3);
  869. *((float *)v4 + 49) = ReadFloat(v3);
  870. if ( v4[11] )
  871. v4[11] ^= ReadBitStreamPos(v3);
  872. if ( *((float *)v4 + 34) != 0.0 )
  873. *((float *)v4 + 34) = ReadFloat(v3);
  874. if ( *((_DWORD *)v4 + 40) )
  875. *((_DWORD *)v4 + 40) = ReadUInt32(v3);
  876. *((float *)v4 + 43) = ReadFloat(v3);
  877. if ( v4[15] )
  878. v4[15] ^= ReadBitStreamPos(v3);
  879. *((float *)v4 + 42) = ReadFloat(v3);
  880. *((float *)v4 + 50) = ReadFloat(v3);
  881. v80 = 0;
  882. if ( *((_DWORD *)v4 + 36) )
  883. {
  884. do
  885. {
  886. v137 = *((_DWORD *)v4 + 37) + 4 * v80;
  887. v81 = ReadUInt32(v3);
  888. ++v80;
  889. *(_DWORD *)v137 = v81;
  890. }
  891. while ( v80 < *((_DWORD *)v4 + 36) );
  892. }
  893. if ( *((_DWORD *)v4 + 6) )
  894. *((_DWORD *)v4 + 6) = ReadUInt32(v3);
  895. if ( v4[12] )
  896. v4[12] ^= ReadBitStreamPos(v3);
  897. if ( v4[8] )
  898. v4[8] ^= ReadBitStreamPos(v3);
  899. if ( *((float *)v4 + 10) != 0.0 )
  900. *((float *)v4 + 10) = ReadFloat(v3);
  901. }
  902. if ( v4[1032] ) // sceneObjectData
  903. {
  904. v82 = (int)(v4 + 856);
  905. v142 = 2;
  906. do
  907. {
  908. v145 = 0;
  909. if ( *(_DWORD *)(v82 + 20) )
  910. {
  911. v83 = 0;
  912. do
  913. {
  914. v7 = *(_BYTE *)(v83 + *(_DWORD *)(v82 + 24) + 6) == 0;
  915. v137 = v83 + *(_DWORD *)(v82 + 24) + 6;
  916. if ( !v7 )
  917. {
  918. v84 = ReadBitStreamPos(a2);
  919. *(_BYTE *)v137 ^= v84;
  920. }
  921. v85 = *(_DWORD *)(v82 + 24);
  922. v144 = 0;
  923. if ( *(_DWORD *)(v83 + v85 + 132) )
  924. {
  925. v147 = 0;
  926. do
  927. {
  928. v7 = *(_DWORD *)(v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 136) + 12) == 0;
  929. v146 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 136);
  930. if ( !v7 )
  931. {
  932. v86 = ReadUInt32(a2);
  933. *(_DWORD *)(v146 + 12) = v86;
  934. }
  935. v137 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 136);
  936. v87 = ReadUInt32(a2);
  937. *(_DWORD *)v137 = v87;
  938. v137 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 136);
  939. v88 = ReadUInt32(a2);
  940. *(_DWORD *)(v137 + 4) = v88;
  941. v7 = *(_DWORD *)(v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 136) + 8) == 0;
  942. v146 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 136);
  943. if ( !v7 )
  944. {
  945. v89 = ReadUInt32(a2);
  946. *(_DWORD *)(v146 + 8) = v89;
  947. }
  948. v7 = *(_BYTE *)(v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 136) + 16) == 9;
  949. v146 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 136);
  950. if ( !v7 )
  951. {
  952. v90 = ReadBitStreamPos(a2);
  953. *(_BYTE *)(v146 + 16) = v90;
  954. }
  955. ++v144;
  956. v91 = *(_DWORD *)(v82 + 24);
  957. v147 += 20;
  958. }
  959. while ( v144 < *(_DWORD *)(v83 + v91 + 132) );
  960. }
  961. v7 = *(_BYTE *)(v83 + *(_DWORD *)(v82 + 24)) == 0;
  962. v146 = v83 + *(_DWORD *)(v82 + 24);
  963. if ( !v7 )
  964. {
  965. v92 = ReadBitStreamPos(a2);
  966. *(_BYTE *)v146 ^= v92;
  967. }
  968. v137 = v83 + *(_DWORD *)(v82 + 24);
  969. v93 = ReadUInt32(a2);
  970. *(_DWORD *)(v137 + 12) = v93;
  971. v137 = v83 + *(_DWORD *)(v82 + 24);
  972. v94 = ReadUInt32(a2);
  973. v146 = 0;
  974. *(_DWORD *)(v137 + 28) = v94;
  975. if ( *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 148) )
  976. {
  977. do
  978. {
  979. v137 = 8 * v146 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 152);
  980. v95 = ReadUInt32(a2);
  981. *(_DWORD *)(v137 + 4) = v95;
  982. v137 = 8 * v146 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 152);
  983. v96 = ReadUInt32(a2);
  984. ++v146;
  985. *(_DWORD *)v137 = v96;
  986. }
  987. while ( v146 < *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 148) );
  988. }
  989. v137 = v83 + *(_DWORD *)(v82 + 24);
  990. v97 = ReadUInt32(a2);
  991. *(_DWORD *)(v137 + 40) = v97;
  992. v137 = v83 + *(_DWORD *)(v82 + 24);
  993. v98 = ReadUInt32(a2);
  994. v144 = 0;
  995. *(_DWORD *)(v137 + 36) = v98;
  996. if ( *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 116) )
  997. {
  998. v147 = 0;
  999. do
  1000. {
  1001. v7 = *(_BYTE *)(v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 120) + 9) == 9;
  1002. v137 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 120);
  1003. if ( !v7 )
  1004. {
  1005. v99 = ReadBitStreamPos(a2);
  1006. *(_BYTE *)(v137 + 9) = v99;
  1007. }
  1008. v137 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 120);
  1009. v100 = ReadBitStreamPos(a2);
  1010. *(_BYTE *)(v137 + 8) = v100;
  1011. v137 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 120);
  1012. v101 = ReadUInt16(a2);
  1013. *(_WORD *)(v137 + 4) = v101;
  1014. v137 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 120);
  1015. v102 = ReadUInt32(a2);
  1016. *(_DWORD *)v137 = v102;
  1017. v137 = v147 + *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 120);
  1018. v103 = ReadUInt16(a2);
  1019. ++v144;
  1020. v147 += 12;
  1021. *(_WORD *)(v137 + 6) = v103;
  1022. }
  1023. while ( v144 < *(_DWORD *)(v83 + *(_DWORD *)(v82 + 24) + 116) );
  1024. }
  1025. v137 = v83 + *(_DWORD *)(v82 + 24);
  1026. v104 = ReadUInt32(a2);
  1027. *(_DWORD *)(v137 + 24) = v104;
  1028. v137 = v83 + *(_DWORD *)(v82 + 24);
  1029. v105 = ReadUInt16(a2);
  1030. *(_WORD *)(v137 + 44) = v105;
  1031. v137 = v83 + *(_DWORD *)(v82 + 24);
  1032. v106 = ReadUInt16(a2);
  1033. *(_WORD *)(v137 + 20) = v106;
  1034. v107 = (int *)(v83 + *(_DWORD *)(v82 + 24) + 49);
  1035. v137 = *v107;
  1036. sub_40F63D(v107, v137);
  1037. *(_BYTE *)(v83 + v137 + *(_DWORD *)(v82 + 24) + 49) = 0;
  1038. v7 = *(_BYTE *)(v83 + *(_DWORD *)(v82 + 24) + 1) == 0;
  1039. v137 = v83 + *(_DWORD *)(v82 + 24) + 1;
  1040. if ( !v7 )
  1041. {
  1042. v108 = ReadBitStreamPos(a2);
  1043. *(_BYTE *)v137 ^= v108;
  1044. }
  1045. v137 = v83 + *(_DWORD *)(v82 + 24);
  1046. v109 = ReadUInt32(a2);
  1047. *(_DWORD *)(v137 + 32) = v109;
  1048. v137 = v83 + *(_DWORD *)(v82 + 24);
  1049. v110 = ReadUInt32(a2);
  1050. *(_DWORD *)(v137 + 16) = v110;
  1051. v7 = *(_BYTE *)(v83 + *(_DWORD *)(v82 + 24) + 5) == 0;
  1052. v137 = v83 + *(_DWORD *)(v82 + 24) + 5;
  1053. if ( !v7 )
  1054. {
  1055. v111 = ReadBitStreamPos(a2);
  1056. *(_BYTE *)v137 ^= v111;
  1057. }
  1058. v7 = *(_BYTE *)(v83 + *(_DWORD *)(v82 + 24) + 2) == 0;
  1059. v137 = v83 + *(_DWORD *)(v82 + 24) + 2;
  1060. if ( !v7 )
  1061. {
  1062. v112 = ReadBitStreamPos(a2);
  1063. *(_BYTE *)v137 ^= v112;
  1064. }
  1065. v7 = *(_BYTE *)(v83 + *(_DWORD *)(v82 + 24) + 3) == 0;
  1066. v137 = v83 + *(_DWORD *)(v82 + 24) + 3;
  1067. if ( !v7 )
  1068. {
  1069. v113 = ReadBitStreamPos(a2);
  1070. *(_BYTE *)v137 ^= v113;
  1071. }
  1072. v7 = *(_BYTE *)(v83 + *(_DWORD *)(v82 + 24) + 7) == 0;
  1073. v137 = v83 + *(_DWORD *)(v82 + 24) + 7;
  1074. if ( !v7 )
  1075. {
  1076. v114 = ReadBitStreamPos(a2);
  1077. *(_BYTE *)v137 ^= v114;
  1078. }
  1079. v7 = *(_BYTE *)(v83 + *(_DWORD *)(v82 + 24) + 4) == 0;
  1080. v137 = v83 + *(_DWORD *)(v82 + 24) + 4;
  1081. if ( !v7 )
  1082. {
  1083. v115 = ReadBitStreamPos(a2);
  1084. *(_BYTE *)v137 ^= v115;
  1085. }
  1086. v7 = *(_WORD *)(v83 + *(_DWORD *)(v82 + 24) + 46) == 0;
  1087. v146 = v83 + *(_DWORD *)(v82 + 24);
  1088. if ( !v7 )
  1089. {
  1090. v116 = ReadUInt16(a2);
  1091. *(_WORD *)(v146 + 46) = v116;
  1092. }
  1093. v137 = v83 + *(_DWORD *)(v82 + 24);
  1094. v117 = ReadUInt32(a2);
  1095. *(_DWORD *)(v137 + 8) = v117;
  1096. v7 = *(_BYTE *)(v83 + *(_DWORD *)(v82 + 24) + 48) == -1;
  1097. v146 = v83 + *(_DWORD *)(v82 + 24);
  1098. if ( !v7 )
  1099. {
  1100. v118 = ReadBitStreamPos(a2);
  1101. *(_BYTE *)(v146 + 48) = v118;
  1102. }
  1103. v137 = v83 + *(_DWORD *)(v82 + 24);
  1104. v119 = ReadUInt16(a2);
  1105. ++v145;
  1106. *(_WORD *)(v137 + 22) = v119;
  1107. v83 += 168;
  1108. }
  1109. while ( v145 < *(_DWORD *)(v82 + 20) );
  1110. }
  1111. if ( *(_BYTE *)v82 )
  1112. *(_BYTE *)v82 ^= ReadBitStreamPos(a2);
  1113. *(_DWORD *)(v82 + 8) = ReadUInt32(a2);
  1114. v120 = ReadBitStreamPos(a2);
  1115. v7 = *(_BYTE *)(v82 + 5) == 0;
  1116. *(_BYTE *)(v82 + 37) = v120;
  1117. if ( !v7 )
  1118. *(_BYTE *)(v82 + 5) ^= ReadBitStreamPos(a2);
  1119. if ( *(_BYTE *)(v82 + 3) )
  1120. *(_BYTE *)(v82 + 3) ^= ReadBitStreamPos(a2);
  1121. if ( *(_BYTE *)(v82 + 2) )
  1122. *(_BYTE *)(v82 + 2) ^= ReadBitStreamPos(a2);
  1123. if ( *(_BYTE *)(v82 + 6) )
  1124. *(_BYTE *)(v82 + 6) ^= ReadBitStreamPos(a2);
  1125. if ( *(_BYTE *)(v82 + 4) )
  1126. *(_BYTE *)(v82 + 4) ^= ReadBitStreamPos(a2);
  1127. if ( *(_BYTE *)(v82 + 36) != -1 )
  1128. *(_BYTE *)(v82 + 36) = ReadBitStreamPos(a2);
  1129. if ( *(_BYTE *)(v82 + 1) )
  1130. *(_BYTE *)(v82 + 1) ^= ReadBitStreamPos(a2);
  1131. if ( *(_WORD *)(v82 + 16) )
  1132. *(_WORD *)(v82 + 16) = ReadUInt16(a2);
  1133. if ( *(_BYTE *)(v82 + 7) )
  1134. *(_BYTE *)(v82 + 7) ^= ReadBitStreamPos(a2);
  1135. if ( *(_DWORD *)(v82 + 12) )
  1136. *(_DWORD *)(v82 + 12) = ReadUInt32(a2);
  1137. v82 += 40;
  1138. --v142;
  1139. }
  1140. while ( v142 );
  1141. if ( v4[843] )
  1142. v4[843] ^= ReadBitStreamPos(a2);
  1143. if ( v4[845] )
  1144. v4[845] ^= ReadBitStreamPos(a2);
  1145. if ( v4[846] )
  1146. v4[846] ^= ReadBitStreamPos(a2);
  1147. if ( v4[847] )
  1148. v4[847] ^= ReadBitStreamPos(a2);
  1149. if ( v4[840] )
  1150. v4[840] ^= ReadBitStreamPos(a2);
  1151. if ( v4[841] )
  1152. v4[841] ^= ReadBitStreamPos(a2);
  1153. if ( v4[842] )
  1154. v4[842] ^= ReadBitStreamPos(a2);
  1155. if ( v4[844] )
  1156. v4[844] ^= ReadBitStreamPos(a2);
  1157. v121 = (unsigned int *)(v4 + 936);
  1158. v142 = 3;
  1159. do
  1160. {
  1161. v144 = 0;
  1162. if ( *v121 )
  1163. {
  1164. v147 = 0;
  1165. do
  1166. {
  1167. v122 = v147 + v121[1];
  1168. if ( *(_BYTE *)(v122 + 16) != 9 )
  1169. *(_BYTE *)(v122 + 16) = ReadBitStreamPos(a2);
  1170. v123 = (_DWORD *)(v147 + v121[1]);
  1171. *v123 = ReadUInt32(a2);
  1172. v124 = v147 + v121[1];
  1173. if ( *(_DWORD *)(v124 + 12) )
  1174. *(_DWORD *)(v124 + 12) = ReadUInt32(a2);
  1175. v125 = v147 + v121[1];
  1176. if ( *(_DWORD *)(v125 + 8) )
  1177. *(_DWORD *)(v125 + 8) = ReadUInt32(a2);
  1178. v126 = v147 + v121[1];
  1179. v127 = ReadUInt32(a2);
  1180. ++v144;
  1181. v147 += 20;
  1182. *(_DWORD *)(v126 + 4) = v127;
  1183. }
  1184. while ( v144 < *v121 );
  1185. }
  1186. v146 = 0;
  1187. if ( v121[4] )
  1188. {
  1189. do
  1190. {
  1191. v128 = 8 * v146 + v121[5];
  1192. *(_DWORD *)(v128 + 4) = ReadUInt32(a2);
  1193. v129 = (int *)(8 * v146 + v121[5]);
  1194. v130 = ReadUInt32(a2);
  1195. ++v146;
  1196. *v129 = v130;
  1197. }
  1198. while ( v146 < v121[4] );
  1199. }
  1200. v121 += 8;
  1201. --v142;
  1202. }
  1203. while ( v142 );
  1204. if ( *((_DWORD *)v4 + 207) )
  1205. *((_DWORD *)v4 + 207) = ReadUInt32(a2);
  1206. if ( *((_WORD *)v4 + 409) )
  1207. *((_WORD *)v4 + 409) = ReadUInt16(a2);
  1208. if ( v4[833] )
  1209. v4[833] = ReadBitStreamPos(a2);
  1210. *((_DWORD *)v4 + 205) = ReadUInt32(a2);
  1211. if ( v4[832] )
  1212. v4[832] = ReadBitStreamPos(a2);
  1213. if ( *((_WORD *)v4 + 408) )
  1214. *((_WORD *)v4 + 408) = ReadUInt16(a2);
  1215. if ( *((_DWORD *)v4 + 206) )
  1216. *((_DWORD *)v4 + 206) = ReadUInt32(a2);
  1217. }
  1218. v131 = a2;
  1219. if ( v4[464] ) // hasTarget
  1220. {
  1221. if ( v4[461] )
  1222. v4[461] ^= ReadBitStreamPos(a2);
  1223. if ( v4[457] )
  1224. v4[457] ^= ReadBitStreamPos(a2);
  1225. if ( v4[458] )
  1226. v4[458] ^= ReadBitStreamPos(a2);
  1227. if ( v4[456] )
  1228. v4[456] ^= ReadBitStreamPos(a2);
  1229. if ( v4[459] )
  1230. v4[459] ^= ReadBitStreamPos(a2);
  1231. if ( v4[460] )
  1232. v4[460] ^= ReadBitStreamPos(a2);
  1233. if ( v4[462] )
  1234. v4[462] ^= ReadBitStreamPos(a2);
  1235. if ( v4[463] )
  1236. v4[463] ^= ReadBitStreamPos(a2);
  1237. }
  1238. if ( v4[448] ) // hasStationaryPosition
  1239. {
  1240. *((float *)v4 + 111) = ReadFloat(a2);
  1241. *((float *)v4 + 108) = ReadFloat(a2);
  1242. *((float *)v4 + 109) = ReadFloat(a2);
  1243. *((float *)v4 + 110) = ReadFloat(a2);
  1244. }
  1245. if ( v4[424] ) // hasGameObjectData
  1246. {
  1247. v4[400] = ReadBitStreamPos(a2);
  1248. *((float *)v4 + 96) = ReadFloat(a2);
  1249. if ( v4[377] )
  1250. v4[377] ^= ReadBitStreamPos(a2);
  1251. if ( v4[376] )
  1252. v4[376] ^= ReadBitStreamPos(a2);
  1253. if ( v4[378] )
  1254. v4[378] ^= ReadBitStreamPos(a2);
  1255. if ( v4[382] )
  1256. v4[382] ^= ReadBitStreamPos(a2);
  1257. if ( v4[381] )
  1258. v4[381] ^= ReadBitStreamPos(a2);
  1259. if ( v4[380] )
  1260. v4[380] ^= ReadBitStreamPos(a2);
  1261. if ( v4[420] )
  1262. *((_DWORD *)v4 + 104) = ReadUInt32(a2);
  1263. if ( v4[383] )
  1264. v4[383] ^= ReadBitStreamPos(a2);
  1265. *((float *)v4 + 99) = ReadFloat(a2);
  1266. *((float *)v4 + 98) = ReadFloat(a2);
  1267. *((float *)v4 + 97) = ReadFloat(a2);
  1268. if ( v4[412] )
  1269. *((_DWORD *)v4 + 102) = ReadUInt32(a2);
  1270. if ( v4[379] )
  1271. v4[379] ^= ReadBitStreamPos(a2);
  1272. *((_DWORD *)v4 + 101) = ReadUInt32(a2);
  1273. }
  1274. if ( v4[476] )
  1275. *((_DWORD *)v4 + 118) = ReadUInt32(a2);
  1276. if ( v4[676] )
  1277. *((_DWORD *)v4 + 168) = ReadUInt32(a2);
  1278. if ( v4[810] )
  1279. {
  1280. v132 = *(_DWORD *)(v4 + 682);
  1281. sub_40F63D(v4 + 682, *(_DWORD *)(v4 + 682));
  1282. v4[v132 + 682] = 0;
  1283. }
  1284. if ( v4[512] ) // if ((p_Flags & UPDATEFLAG_ROTATION) && l_GameObject)
  1285. {
  1286. *((_DWORD *)v4 + 126) = ReadUInt64(a2);
  1287. *((_DWORD *)v4 + 127) = v133;
  1288. }
  1289. if ( v4[488] ) // vechicle
  1290. {
  1291. *((_DWORD *)v4 + 120) = ReadUInt32(a2);
  1292. *((float *)v4 + 121) = ReadFloat(a2);
  1293. }
  1294. if ( v4[1044] ) // hasServerTime
  1295. *((_DWORD *)v4 + 260) = ReadUInt32(a2);
  1296. if ( v4[498] )
  1297. {
  1298. if ( *((_WORD *)v4 + 246) )
  1299. *((_WORD *)v4 + 246) = ReadUInt16(a2);
  1300. if ( *((_WORD *)v4 + 247) )
  1301. *((_WORD *)v4 + 247) = ReadUInt16(a2);
  1302. if ( *((_WORD *)v4 + 248) )
  1303. *((_WORD *)v4 + 248) = ReadUInt16(a2);
  1304. }
  1305. if ( v4[1064] )
  1306. {
  1307. v134 = 0;
  1308. if ( *((_DWORD *)v4 + 262) )
  1309. {
  1310. do
  1311. {
  1312. v149 = (_DWORD *)(*((_DWORD *)v4 + 263) + 4 * v134++);
  1313. *v149 = ReadUInt32(v131);
  1314. }
  1315. while ( v134 < *((_DWORD *)v4 + 262) );
  1316. }
  1317. }
  1318. v7 = v4[368] == 0;
  1319. v135 = v131;
  1320. v136 = 2048;
  1321. if ( !v7 )
  1322. {
  1323. if ( v4[344] && v4[336] && v4[228] == 3 )
  1324. {
  1325. v4[318] = ReadBit(&v135);
  1326. v4[319] = ReadBit(&v135);
  1327. v4[315] = ReadBit(&v135);
  1328. v4[312] = ReadBit(&v135);
  1329. v4[317] = ReadBit(&v135);
  1330. v4[313] = ReadBit(&v135);
  1331. v4[316] = ReadBit(&v135);
  1332. v4[314] = ReadBit(&v135);
  1333. }
  1334. if ( v4[368] && v4[344] && v4[336] && v4[228] == 3 )
  1335. {
  1336. if ( v4[316] )
  1337. v4[316] ^= ReadBitStreamPos(v131);
  1338. if ( v4[314] )
  1339. v4[314] ^= ReadBitStreamPos(v131);
  1340. if ( v4[317] )
  1341. v4[317] ^= ReadBitStreamPos(v131);
  1342. if ( v4[318] )
  1343. v4[318] ^= ReadBitStreamPos(v131);
  1344. if ( v4[312] )
  1345. v4[312] ^= ReadBitStreamPos(v131);
  1346. if ( v4[319] )
  1347. v4[319] ^= ReadBitStreamPos(v131);
  1348. if ( v4[313] )
  1349. v4[313] ^= ReadBitStreamPos(v131);
  1350. if ( v4[315] )
  1351. v4[315] ^= ReadBitStreamPos(v131);
  1352. }
  1353. }
  1354. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement