Advertisement
Guest User

pmd_red_decomp

a guest
Apr 18th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.80 KB | None | 0 0
  1. int __fastcall sub_8002EB0(int a1, int a2)
  2. {
  3. int v3; // [sp+0h] [bp-4h]@0
  4.  
  5. for ( ; a2 > 0; a1 += 2 )
  6. {
  7. a2 -= 2;
  8. *(_WORD *)a1 = 0;
  9. }
  10. return v3;
  11. }
  12.  
  13. bool sub_800D1C0()
  14. {
  15. return v202DB60 == 2 && v202DB64 == 2;
  16. }
  17.  
  18. int sub_800D1E0()
  19. {
  20. int v0; // r0@1
  21. unsigned int v1; // r2@2
  22. int v2; // r4@2
  23. int v3; // r1@2
  24. int v5; // [sp+10h] [bp-4h]@0
  25.  
  26. v0 = 0;
  27. do
  28. {
  29. v1 = 0;
  30. v2 = v0 + 1;
  31. v3 = 16 * v0 + 0x202DB30;
  32. do
  33. {
  34. if ( *(_WORD *)v3 == 0xFDFD )
  35. *(_DWORD *)(4 * v0 + 0x202DB60) = 1;
  36. v3 += 2;
  37. ++v1;
  38. }
  39. while ( v1 <= 7 );
  40. ++v0;
  41. }
  42. while ( v2 <= 1 );
  43. return v5;
  44. }
  45.  
  46. int __fastcall sub_800D224(signed int a1)
  47. {
  48. int v1; // r6@1
  49. int v2; // r8@2
  50. unsigned int v3; // r4@4
  51. int v4; // r3@6
  52. int v6; // [sp+20h] [bp-4h]@0
  53.  
  54. v1 = 0;
  55. do
  56. {
  57. v2 = v1 + 1;
  58. if ( (a1 >> v1) & 1 && *(_DWORD *)(4 * v1 + 0x202DB60) == 1 )
  59. {
  60. v3 = 0;
  61. if ( *(_DWORD *)(4 * v1 + 0x202DB58) < v202DB74 >> 1 )
  62. {
  63. while (true)
  64. {
  65. v4 = *(_DWORD *)(4 * v1 + 0x202DB58);
  66. *(_WORD *)(2 * (v4 + v3) + 264 * v1 + 0x202D910) = *(_WORD *)(2 * v3 + 16 * v1 + 0x202DB30);
  67. ++v3;
  68. if ( v3 > 7 )
  69. break;
  70. if ( v4 + v3 >= v202DB74 >> 1 )
  71. {
  72. *(_DWORD *)(4 * v1 + 0x202DB60) = 2;
  73. break;
  74. }
  75. }
  76. }
  77. else
  78. {
  79. *(_DWORD *)(4 * v1 + 0x202DB60) = 2;
  80. }
  81. *(_DWORD *)(4 * v1 + 0x202DB58) += 8;
  82. }
  83. ++v1;
  84. }
  85. while ( v2 <= 1 );
  86. return v6;
  87. }
  88.  
  89. int sub_800D2EC()
  90. {
  91. signed int v0; // r2@1
  92. int v1; // r1@2
  93. int v3; // [sp+10h] [bp-4h]@0
  94.  
  95. v0 = 0x202DB20;
  96. do
  97. {
  98. v1 = v202DB50;
  99. if ( v202DB50 >= v202DB74 >> 1 )
  100. {
  101. *(_WORD *)v0 = 0xFCFCu;
  102. }
  103. else
  104. {
  105. *(_WORD *)v0 = *(_WORD *)(2 * v202DB50 + 0x202D808);
  106. v202DB50 = v1 + 1;
  107. }
  108. v0 += 2;
  109. }
  110. while ( (unsigned int)v0 <= 0x202DB2E );
  111. return v3;
  112. }
  113.  
  114. signed int sub_800D33C()
  115. {
  116. signed int v0; // r5@1
  117. int v1; // r2@1
  118. signed int result; // r0@4
  119.  
  120. v0 = 0;
  121. v202DB6C = v202DB68;
  122. v1 = sub_800D820(0x202DB20, 0x202DB30);
  123. v202DB68 = v1;
  124. if ( v202DB70 )
  125. {
  126. if ( v1 & 0x1000 )
  127. return 3;
  128. if ( v1 & 0x2000 )
  129. return 4;
  130. if ( (unsigned __int16)(v1 & 0x8000) && (v1 & 0xF) != (unsigned int)(v1 << 20) >> 28 )
  131. return 5;
  132. if ( (v202DB6C | v202DB68) & 0xE && v202DB68 & (1 << (v4000128 << 26 >> 30)) )
  133. {
  134. sub_800D1E0();
  135. sub_800D224(v202DB68);
  136. if ( sub_800D1C0(v202DB68) << 24 )
  137. return 2;
  138. sub_800D2EC();
  139. v0 = 1;
  140. }
  141. result = v0;
  142. }
  143. else
  144. {
  145. if ( v1 & 0x100 )
  146. v202DB70 = 1;
  147. result = 0;
  148. }
  149. return result;
  150. }
  151.  
  152. int sub_800D414()
  153. {
  154. int v1; // [sp+4h] [bp-4h]@0
  155.  
  156. v202DB68 = 0;
  157. v202DB6C = 0;
  158. v202DB70 = 0;
  159. v202DB74 = 0;
  160. v202DB60 = 0;
  161. v202DB64 = 0;
  162. sub_8002EB0(0x202DB20, 16);
  163. sub_8002EB0(0x202DB30, 32);
  164. v202DB50 = 0;
  165. v202DB58 = 0;
  166. v202DB5C = 0;
  167. sub_8002EB0(0x202D808, 0x108);
  168. sub_8002EB0(0x202D910, 0x210);
  169. sub_800D6AC();
  170. return v1;
  171. }
  172.  
  173. int sub_800D494()
  174. {
  175. int v1; // [sp+4h] [bp-4h]@0
  176.  
  177. v202DB68 = 0;
  178. v202DB6C = 0;
  179. v202DB70 = 0;
  180. v202DB74 = 0;
  181. v202DB60 = 0;
  182. v202DB64 = 0;
  183. sub_8002EB0(0x202DB20, 16);
  184. sub_8002EB0(0x202DB30, 32);
  185. v202DB50 = 0;
  186. v202DB58 = 0;
  187. v202DB5C = 0;
  188. sub_8002EB0(0x202D808, 0x108);
  189. sub_8002EB0(0x202D910, 0x210);
  190. return v1;
  191. }
  192.  
  193. signed int sub_800D510()
  194. {
  195. signed int result; // r0@1
  196.  
  197. result = 0x8000;
  198. v4000134 = 0x8000u;
  199. return result;
  200. }
  201.  
  202. int sub_800D520()
  203. {
  204. unsigned __int16 v1; // [sp+0h] [bp-10h]@2
  205. int v2; // [sp+Ch] [bp-4h]@0
  206.  
  207. if ( !(v4000128 & 0x30) )
  208. {
  209. v1 = 0;
  210. do
  211. {
  212. sub_80B042C();
  213. --v1;
  214. }
  215. while ( v1 != 0xFFFF );
  216. }
  217. sub_800D7D0();
  218. return v2;
  219. }
  220.  
  221. int __fastcall sub_800D68C(int a1)
  222. {
  223. int v2; // [sp+0h] [bp-4h]@0
  224.  
  225. sub_8002ED4(264 * a1 + 0x202D910, 0, 264);
  226. return v2;
  227. }
  228.  
  229. int sub_800D6AC()
  230. {
  231. signed int v0; // r3@1
  232. signed int v1; // r5@1
  233. int v2; // r2@1
  234. signed int v3; // r8@1
  235. signed int v4; // r9@1
  236. int v6; // [sp+1Ch] [bp-4h]@0
  237.  
  238. v4000200 &= 0xFF3Fu;
  239. v4000208 = 1;
  240. v4000134 = 0;
  241. v4000128 = 0x2000;
  242. v4000128 = 0x6003;
  243. sub_80B0418();
  244. sub_80B0418();
  245. sub_80B0418();
  246. v202DD0C = -1;
  247. v202DD20 = 0x202DD58;
  248. v202DD24 = 0x202DD70;
  249. v0 = 0;
  250. v1 = 0x202DDB8;
  251. v2 = 0;
  252. v3 = 0x202DD28;
  253. v4 = 0x202DD38;
  254. do
  255. {
  256. v3 += 4;
  257. *(_DWORD *)(v3 - 4) = v2 + 0x202DD88;
  258. v4 += 4;
  259. *(_DWORD *)(v4 - 4) = v2 + 0x202DDA0;
  260. *(_DWORD *)(4 * v0 + 0x202DD48) = v1;
  261. v1 += 72;
  262. v2 += 72;
  263. ++v0;
  264. }
  265. while ( v0 <= 1 );
  266. v4000200 |= 0x80u;
  267. v4000208 = 1;
  268. return v6;
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement