Advertisement
expired6978

Untitled

Dec 10th, 2012
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.74 KB | None | 0 0
  1. int __thiscall sub_844BF0(void *this, int a2)
  2. {
  3. int v2; // edi@1
  4. int v3; // eax@1
  5. int v4; // edx@1
  6. int v5; // eax@1
  7. int v6; // ecx@2
  8. int v7; // eax@3
  9. int v8; // eax@6
  10. int v9; // eax@9
  11. char *v10; // eax@11
  12. signed int v11; // ecx@11
  13. unsigned int v12; // eax@13
  14. float v13; // ST28_4@13
  15. char v14; // si@13
  16. float v15; // ST30_4@13
  17. float v16; // ST30_4@13
  18. int v17; // ecx@14
  19. void *v18; // esi@23
  20. time_t v19; // qax@23
  21. void *v20; // esi@25
  22. int v21; // edi@27
  23. int v22; // ecx@31
  24. int v23; // eax@32
  25. int v24; // esi@32
  26. int v25; // edx@36
  27. int v26; // ebx@37
  28. int v27; // esi@38
  29. int v28; // eax@40
  30. int v29; // ecx@50
  31. int v30; // eax@51
  32. int v31; // esi@53
  33. int v32; // edi@54
  34. int result; // eax@59
  35. int v34; // [sp+2Ch] [bp-A4h]@13
  36. float v35[2]; // [sp+30h] [bp-A0h]@13
  37. int v36; // [sp+38h] [bp-98h]@39
  38. int v37; // [sp+3Ch] [bp-94h]@1
  39. double v38; // [sp+40h] [bp-90h]@13
  40. int v39; // [sp+48h] [bp-88h]@17
  41. unsigned int v40; // [sp+4Ch] [bp-84h]@17
  42. double v41; // [sp+50h] [bp-80h]@17
  43. int v42; // [sp+58h] [bp-78h]@13
  44. unsigned int v43; // [sp+5Ch] [bp-74h]@13
  45. double v44; // [sp+60h] [bp-70h]@13
  46. int v45; // [sp+68h] [bp-68h]@1
  47. int v46; // [sp+6Ch] [bp-64h]@1
  48. int (__thiscall **v47)(void *, char); // [sp+70h] [bp-60h]@2
  49. unsigned int v48; // [sp+74h] [bp-5Ch]@2
  50. int v49; // [sp+78h] [bp-58h]@22
  51. int v50; // [sp+7Ch] [bp-54h]@36
  52. int v51; // [sp+88h] [bp-48h]@36
  53. int (__thiscall **v52)(void *, char); // [sp+90h] [bp-40h]@11
  54. char v53[48]; // [sp+98h] [bp-38h]@11
  55. unsigned int v54; // [sp+C8h] [bp-8h]@13
  56.  
  57. v2 = (int)this;
  58. v3 = *(_DWORD *)(*MK_FP(__FS__, 44) + 4 * TlsIndex);
  59. v4 = *(_DWORD *)(v3 + 1196);
  60. v45 = *(_DWORD *)(*MK_FP(__FS__, 44) + 4 * TlsIndex);
  61. *(_DWORD *)(v3 + 1196) = 67;
  62. v5 = *(_DWORD *)(a2 + 4) - 1;
  63. v46 = v4;
  64. v37 = 0;
  65. switch ( v5 )
  66. {
  67. case 0:
  68. sub_866DD0(1);
  69. v6 = *(_DWORD *)(v2 + 8);
  70. v47 = 0;
  71. v48 = 0;
  72. (*(void (__stdcall **)(_DWORD, int (__thiscall ***)(void *, char), _DWORD, _DWORD))(*(_DWORD *)v6 + 92))(
  73. "_root.GetInventoryItemList",
  74. &v47,
  75. 0,
  76. 0);
  77. if ( Heap__Allocate(0x38u, 0, 0) )
  78. v7 = sub_843110(v2 + 8, &v47);
  79. else
  80. v7 = 0;
  81. *(_DWORD *)(v2 + 28) = v7;
  82. if ( Heap__Allocate(0x28u, 0, 0) )
  83. v8 = sub_86CBF0(v2 + 8);
  84. else
  85. v8 = 0;
  86. *(_DWORD *)(v2 + 32) = v8;
  87. if ( Heap__Allocate(0x10u, 0, 0) )
  88. v9 = sub_87D160(v2 + 8);
  89. else
  90. v9 = 0;
  91. *(_DWORD *)(v2 + 36) = v9;
  92. v52 = &FxResponseArgs_2____vftable_;
  93. v10 = v53;
  94. v11 = 2;
  95. do
  96. {
  97. *(_DWORD *)v10 = 0;
  98. *((_DWORD *)v10 + 1) = 0;
  99. v10 += 16;
  100. --v11;
  101. }
  102. while ( v11 >= 0 );
  103. v54 = 1;
  104. LODWORD(v35[0]) = 1065353216;
  105. LODWORD(v35[1]) = 1065353216;
  106. v13 = sub_5AF5B0(17);
  107. sub_59AA20(v13, (int)v35, (int)&v35[1]);
  108. v34 = 0;
  109. sub_65C920(&dword_1B3D808, &v34);
  110. v14 = v34;
  111. sub_54A8D0(8, SLODWORD(PlayerCharacter), v34);
  112. sub_54A8D0(60, SLODWORD(PlayerCharacter), v14);
  113. v15 = sub_4028A0(*(float *)&dword_1B173E0, v35[0]);
  114. v35[0] = sub_4028A0(1.0, v15);
  115. v16 = sub_496350(*(float *)&dword_1B173EC, v35[1]);
  116. v35[1] = sub_496350(1.0, v16);
  117. v12 = v54;
  118. v38 = v35[0];
  119. v42 = 0;
  120. v43 = 3;
  121. v44 = v35[0];
  122. if ( v54 <= 2 )
  123. {
  124. v17 = (int)&v53[16 * v54++];
  125. sub_841C50(v17, (int)&v42);
  126. v12 = v54;
  127. }
  128. if ( (v43 >> 6) & 1 )
  129. {
  130. GFxValue__ObjectInterface__ReleaseManaged_Internal(&v42, LODWORD(v44));
  131. v12 = v54;
  132. v42 = 0;
  133. }
  134. v39 = 0;
  135. v38 = v35[1];
  136. v40 = 3;
  137. v41 = v35[1];
  138. if ( v12 <= 2 )
  139. {
  140. v54 = v12 + 1;
  141. sub_841C50((int)&v53[16 * v12], (int)&v39);
  142. }
  143. if ( (v40 >> 6) & 1 )
  144. {
  145. GFxValue__ObjectInterface__ReleaseManaged_Internal(&v39, LODWORD(v41));
  146. v39 = 0;
  147. }
  148. sub_A632E0(*(_DWORD *)(v2 + 8), "SetBarterMultipliers", &v52);
  149. sub_844960((void *)v2);
  150. sub_844AE0(v2);
  151. sub_843490((void *)v2);
  152. sub_893FE0(247);
  153. sub_423620(&v34);
  154. sub_841D30(&v52);
  155. if ( (v48 >> 6) & 1 )
  156. GFxValue__ObjectInterface__ReleaseManaged_Internal(&v47, v49);
  157. goto LABEL_59;
  158. case 2:
  159. v19 = _mkgmtime(&stru_10E2894);
  160. sub_867700(Inventory3DManager, HIDWORD(v19));
  161. v18 = *(void **)(v2 + 28);
  162. if ( v18 )
  163. {
  164. sub_8447E0(*(_DWORD *)(v2 + 28));
  165. Heap__Free(v18, 0);
  166. }
  167. v20 = *(void **)(v2 + 32);
  168. if ( v20 )
  169. {
  170. sub_8423F0(*(_DWORD *)(v2 + 32));
  171. Heap__Free(v20, 0);
  172. }
  173. v21 = *(_DWORD *)(v2 + 36);
  174. if ( v21 )
  175. {
  176. if ( (*(_DWORD *)(v21 + 4) >> 6) & 1 )
  177. {
  178. GFxValue__ObjectInterface__ReleaseManaged_Internal(v21, *(_DWORD *)(v21 + 8));
  179. *(_DWORD *)v21 = 0;
  180. }
  181. Heap__Free((void *)v21, 0);
  182. }
  183. goto LABEL_59;
  184. case 6:
  185. v22 = *(_DWORD *)(a2 + 8);
  186. if ( v22 )
  187. {
  188. v23 = *(_DWORD *)(v22 + 12);
  189. v24 = Inventory3DManager;
  190. if ( v23 == *(_DWORD *)(LODWORD(dword_1B2D678) + 412)
  191. || v23 == *(_DWORD *)(LODWORD(dword_1B2D678) + 152) && (unsigned __int8)sub_841B90(Inventory3DManager) )
  192. {
  193. if ( (unsigned __int8)sub_866AB0(v24) )
  194. {
  195. v25 = *(_DWORD *)(v2 + 8);
  196. v47 = &FxResponseArgs_0____vftable_;
  197. v49 = 0;
  198. v50 = 0;
  199. v51 = 1;
  200. sub_A632E0(v25, "ToggleMenuFade", &v47);
  201. sub_841D70(&v47);
  202. }
  203. }
  204. }
  205. goto LABEL_59;
  206. case 11:
  207. v26 = *(_DWORD *)(a2 + 8);
  208. if ( !v26 )
  209. goto LABEL_59;
  210. v27 = v26 + 8;
  211. *(double *)&v35[1] = sub_868320(v26 + 8);
  212. LOBYTE(v34) = 1;
  213. if ( -1.0 == *(double *)&v35[1] )
  214. {
  215. v28 = *(_DWORD *)v27;
  216. if ( *(_DWORD *)v27 != *(_DWORD *)(LODWORD(UIStringHolder) + 264) )
  217. {
  218. if ( v28 == dword_1B3D7F8 )
  219. {
  220. *(_DWORD *)(v2 + 96) = 2 - (*(_DWORD *)(v2 + 96) != 1);
  221. }
  222. else
  223. {
  224. if ( v28 == dword_1B3D7FC )
  225. {
  226. *(_DWORD *)(v2 + 96) = (*(_DWORD *)(v2 + 96) != 4) + 3;
  227. }
  228. else
  229. {
  230. if ( v28 != dword_1B3D800 )
  231. goto LABEL_49;
  232. *(_DWORD *)(v2 + 96) = (*(_DWORD *)(v2 + 96) != 6) + 5;
  233. }
  234. }
  235. sub_844AE0(v2);
  236. goto LABEL_49;
  237. }
  238. UIManager__AddMessage(LODWORD(UIStringHolder) + 124, 3, 0);
  239. }
  240. else
  241. {
  242. LOBYTE(v34) = sub_868C50(v2 + 40, LODWORD(v35[1]), v36);
  243. }
  244. LABEL_49:
  245. sub_897C30(v26 + 12, v34);
  246. goto LABEL_59;
  247. case 7:
  248. v29 = *(_DWORD *)(a2 + 8);
  249. if ( v29 )
  250. {
  251. v30 = *(_DWORD *)(v29 + 8);
  252. if ( v30 == dword_1B2DBD8 || v30 == dword_1B3D808 )
  253. {
  254. v31 = *(_DWORD *)(v29 + 12);
  255. if ( v31 )
  256. {
  257. v32 = v2 + 76;
  258. v34 = *(_DWORD *)(v29 + 12);
  259. if ( !(unsigned __int8)sub_843840(v32, &v34) )
  260. {
  261. v34 = v31;
  262. sub_55A6E0(v32, &v34);
  263. }
  264. }
  265. else
  266. {
  267. sub_844AE0(v2);
  268. sub_843490((void *)v2);
  269. }
  270. }
  271. }
  272. goto LABEL_59;
  273. default:
  274. if ( 0.0 == *(float *)(Inventory3DManager + 212) )
  275. v37 = sub_A63FE0(a2);
  276. LABEL_59:
  277. result = v37;
  278. *(_DWORD *)(v45 + 1196) = v46;
  279. return result;
  280. }
  281. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement