Guest User

Untitled

a guest
Dec 9th, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.23 KB | None | 0 0
  1.  
  2. /* WARNING: Could not reconcile some variable overlaps */
  3.  
  4. ulong decompress_r(long *param_1,astruct_10 *param_2,undefined *param_3,int param_4)
  5.  
  6. {
  7. uint uVar1;
  8. ulong uVar2;
  9. bool bVar3;
  10. undefined auVar4 [16];
  11. undefined auVar5 [16];
  12. undefined auVar6 [16];
  13. undefined auVar7 [16];
  14. undefined auVar8 [16];
  15. uint uVar9;
  16. uint uVar10;
  17. int prev_dc;
  18. long lVar11;
  19. ulong uVar12;
  20. ulong uVar13;
  21. long *plVar14;
  22. ulong uVar15;
  23. ulong uVar16;
  24. ulong uVar17;
  25. ulong uVar18;
  26. ulong uVar19;
  27. ulong uVar20;
  28. ulong uVar21;
  29. ulong uVar22;
  30. undefined2 *puVar23;
  31. undefined2 *dst_short;
  32. undefined in_YMM0 [32];
  33. undefined byte_63 [32];
  34. undefined byte_57 [32];
  35. undefined byte_45 [32];
  36. undefined byte_27 [32];
  37. undefined auVar24 [32];
  38. undefined auVar25 [16];
  39. undefined auVar26 [32];
  40. undefined auVar27 [32];
  41. undefined auVar28 [32];
  42. undefined auVar29 [32];
  43. undefined auVar30 [32];
  44. undefined auVar31 [32];
  45. undefined auVar32 [32];
  46. undefined auVar33 [32];
  47. undefined auVar34 [32];
  48. undefined auVar35 [32];
  49. undefined in_YMM13 [32];
  50. uint local_d8;
  51. int local_60;
  52. int local_5c;
  53. undefined gb [16];
  54. ulong local_48;
  55. undefined *local_40;
  56. int local_38;
  57.  
  58. uVar1 = *(uint *)(param_1 + 7);
  59. uVar2 = param_1[8];
  60. local_48 = (ulong)(uint)(param_4 << 3);
  61. auVar8 = vpxor_avx(SUB3216(in_YMM0,0),SUB3216(in_YMM0,0));
  62. gb = vmovdqa_avx(auVar8);
  63. local_38 = 0;
  64. uVar13 = param_1[4];
  65. uVar16 = param_1[5] ^ uVar13;
  66. param_1[4] = uVar16 << 0xe ^ (uVar13 << 0x37 | uVar13 >> 9) ^ uVar16;
  67. param_1[5] = uVar16 << 0x24 | uVar16 >> 0x1c;
  68. plVar14 = param_1;
  69. if (uVar1 >> 0x10 != 0) {
  70. uVar10 = (uint)uVar2 & 0xffff;
  71. auVar8 = vmovq_avx((long)(int)(0x40 - uVar10));
  72. auVar8 = vmovaps_avx(auVar8);
  73. puVar23 = (undefined2 *)(*param_1 + 0x100);
  74. prev_dc = 0;
  75. byte_63 = vbroadcastsd_avx(0x3f3f3f3f3f3f3f3f);
  76. byte_57 = vbroadcastsd_avx(0x3939393939393939);
  77. byte_45 = vbroadcastsd_avx(0x2d2d2d2d2d2d2d2d);
  78. byte_27 = vpbroadcastq_avx2(ZEXT816(0x1b1b1b1b1b1b1b1b));
  79. byte_27 = vmovdqu_avx(byte_27);
  80. local_5c = 0;
  81. local_60 = 0;
  82. uVar9 = uVar1 >> 0x10;
  83. local_40 = param_3;
  84. do {
  85. lVar11 = 0;
  86. dst_short = puVar23;
  87. if ((short)uVar1 != 0) {
  88. do {
  89. uVar13 = param_1[4];
  90. uVar16 = param_1[5];
  91. uVar17 = uVar16 ^ uVar13;
  92. uVar15 = (uVar13 << 0x37 | uVar13 >> 9) ^ uVar17;
  93. uVar12 = uVar17 << 0xe ^ uVar15;
  94. uVar18 = uVar17 << 0x24 | uVar17 >> 0x1c;
  95. uVar19 = uVar18 ^ uVar12;
  96. uVar15 = (uVar12 >> 9 | uVar15 << 0x37) ^ uVar19;
  97. uVar17 = uVar19 << 0xe ^ uVar15;
  98. uVar20 = uVar19 << 0x24 | uVar19 >> 0x1c;
  99. uVar21 = uVar20 ^ uVar17;
  100. uVar15 = (uVar17 >> 9 | uVar15 << 0x37) ^ uVar21;
  101. uVar19 = uVar21 << 0xe ^ uVar15;
  102. uVar21 = uVar21 << 0x24 | uVar21 >> 0x1c;
  103. uVar22 = uVar21 ^ uVar19;
  104. param_1[4] = uVar22 << 0xe ^ (uVar19 >> 9 | uVar15 << 0x37) ^ uVar22;
  105. param_1[5] = uVar22 << 0x24 | uVar22 >> 0x1c;
  106. auVar25 = vmovq_avx(uVar19 + uVar21);
  107. auVar4 = vmovq_avx(uVar17 + uVar20);
  108. auVar6 = vpunpcklqdq_avx(auVar4,auVar25);
  109. auVar25 = vmovq_avx(uVar18 + uVar12);
  110. auVar4 = vmovq_avx(uVar16 + uVar13);
  111. auVar25 = vpunpcklqdq_avx(auVar4,auVar25);
  112. if ((false) || (false)) {
  113. auVar24 = ZEXT1632(auVar6);
  114. }
  115. else {
  116. auVar24 = CONCAT1616(auVar6,auVar25);
  117. }
  118. auVar29 = vmovdqu_avx(byte_63);
  119. auVar26 = vpand_avx2(auVar24,auVar29);
  120. auVar30 = vmovdqa_avx((undefined [32])0x3939393939393939);
  121. auVar27 = vpcmpgtb_avx2(auVar26,auVar30);
  122. auVar31 = vmovdqu_avx(byte_57);
  123. auVar27 = vpand_avx2(auVar27,auVar31);
  124. auVar26 = vpsubusb_avx2(auVar26,auVar27);
  125. auVar32 = vmovdqa_avx((undefined [32])0x2d2d2d2d2d2d2d2d);
  126. auVar27 = vpcmpgtb_avx2(auVar26,auVar32);
  127. auVar33 = vmovdqu_avx(byte_45);
  128. auVar27 = vpand_avx2(auVar27,auVar33);
  129. auVar26 = vpsubusb_avx2(auVar26,auVar27);
  130. auVar34 = vmovdqa_avx((undefined [32])0x1a1a1a1a1a1a1a1a);
  131. auVar27 = vpcmpgtb_avx2(auVar26,auVar34);
  132. auVar35 = vmovdqu_avx(byte_27);
  133. auVar27 = vpand_avx2(auVar27,auVar35);
  134. auVar26 = vpsubusb_avx2(auVar26,auVar27);
  135. auVar24 = vpsignb_avx2(auVar26,auVar24);
  136. auVar25 = vextracti128_avx2(auVar24,1);
  137. auVar6 = vmovdqa_avx((undefined [16])0xe060d070f00);
  138. auVar25 = vpshufb_avx(auVar25,auVar6);
  139. auVar4 = vpbroadcastq_avx2(SUB3216(auVar24,0));
  140. auVar4 = vpblendd_avx2(auVar25,auVar4,0xc);
  141. auVar27 = vpermq_avx2(auVar24,0xe9);
  142. auVar5 = vmovdqa_avx((undefined [16])0x0);
  143. auVar25 = vpshufb_avx(SUB3216(auVar24,0),auVar5);
  144. auVar24 = vpermq_avx2(auVar24,0xe7);
  145. auVar25 = vpblendd_avx2(SUB3216(auVar24,0),auVar25,0xc);
  146. auVar26 = vpmovsxbw_avx2(auVar4);
  147. auVar27 = vpmovsxbw_avx2(SUB3216(auVar27,0));
  148. auVar24 = vpmovsxbw_avx2(auVar25);
  149. auVar26 = vpsllw_avx2(auVar26,5);
  150. auVar28 = vpsllw_avx2(auVar27,5);
  151. auVar24 = vpsllw_avx2(auVar24,5);
  152. /* WARNING: Load size is inaccurate */
  153. auVar27 = vpmulhrsw_avx2(auVar26,*(undefined *)param_2->field_0x420);
  154. /* WARNING: Load size is inaccurate */
  155. auVar28 = vpmulhrsw_avx2(auVar28,*(undefined *)param_2->field_0x440);
  156. /* WARNING: Load size is inaccurate */
  157. auVar26 = vpmulhrsw_avx2(auVar24,*(undefined *)param_2->field_0x460);
  158. /* WARNING: Store size is inaccurate */
  159. auVar24 = vmovdqa_avx(auVar27);
  160. *(undefined *)(dst_short + -0x80) = auVar24;
  161. /* WARNING: Store size is inaccurate */
  162. auVar24 = vmovdqa_avx(auVar28);
  163. *(undefined *)(dst_short + -0x70) = auVar24;
  164. /* WARNING: Store size is inaccurate */
  165. auVar24 = vmovdqa_avx(auVar26);
  166. *(undefined *)(dst_short + -0x60) = auVar24;
  167. in_YMM13 = vxorps_avx(in_YMM13,in_YMM13);
  168. /* WARNING: Store size is inaccurate */
  169. auVar24 = vmovaps_avx(in_YMM13);
  170. *(undefined *)(dst_short + -0x50) = auVar24;
  171. uVar13 = param_1[4];
  172. uVar15 = param_1[5] ^ uVar13;
  173. uVar12 = (uVar13 << 0x37 | uVar13 >> 9) ^ uVar15;
  174. uVar16 = uVar15 << 0xe ^ uVar12;
  175. uVar19 = uVar15 << 0x24 | uVar15 >> 0x1c;
  176. uVar17 = uVar19 ^ uVar16;
  177. uVar12 = (uVar16 >> 9 | uVar12 << 0x37) ^ uVar17;
  178. uVar15 = uVar17 << 0xe ^ uVar12;
  179. uVar18 = uVar17 << 0x24 | uVar17 >> 0x1c;
  180. uVar20 = uVar18 ^ uVar15;
  181. uVar12 = (uVar15 >> 9 | uVar12 << 0x37) ^ uVar20;
  182. uVar17 = uVar20 << 0xe ^ uVar12;
  183. uVar20 = uVar20 << 0x24 | uVar20 >> 0x1c;
  184. auVar25 = vmovq_avx(uVar17 + uVar20);
  185. auVar4 = vmovq_avx(uVar15 + uVar18);
  186. auVar7 = vpunpcklqdq_avx(auVar4,auVar25);
  187. auVar25 = vmovq_avx(uVar19 + uVar16);
  188. auVar4 = vmovq_avx(param_1[5] + uVar13);
  189. auVar25 = vpunpcklqdq_avx(auVar4,auVar25);
  190. if ((false) || (false)) {
  191. auVar24 = ZEXT1632(auVar7);
  192. }
  193. else {
  194. auVar24 = CONCAT1616(auVar7,auVar25);
  195. }
  196. auVar26 = vpand_avx2(auVar24,auVar29);
  197. auVar27 = vpcmpgtb_avx2(auVar26,auVar30);
  198. auVar27 = vpand_avx2(auVar27,auVar31);
  199. auVar26 = vpsubusb_avx2(auVar26,auVar27);
  200. auVar27 = vpcmpgtb_avx2(auVar26,auVar32);
  201. auVar27 = vpand_avx2(auVar27,auVar33);
  202. auVar26 = vpsubusb_avx2(auVar26,auVar27);
  203. auVar27 = vpcmpgtb_avx2(auVar26,auVar34);
  204. auVar27 = vpand_avx2(auVar27,auVar35);
  205. auVar26 = vpsubusb_avx2(auVar26,auVar27);
  206. auVar24 = vpsignb_avx2(auVar26,auVar24);
  207. auVar25 = vextracti128_avx2(auVar24,1);
  208. auVar25 = vpshufb_avx(auVar25,auVar6);
  209. auVar4 = vpbroadcastq_avx2(SUB3216(auVar24,0));
  210. auVar4 = vpblendd_avx2(auVar25,auVar4,0xc);
  211. auVar25 = vpshufb_avx(SUB3216(auVar24,0),auVar5);
  212. auVar26 = vpermq_avx2(auVar24,0xe7);
  213. auVar25 = vpblendd_avx2(SUB3216(auVar26,0),auVar25,0xc);
  214. uVar20 = uVar20 ^ uVar17;
  215. param_1[4] = uVar20 << 0xe ^ (uVar17 >> 9 | uVar12 << 0x37) ^ uVar20;
  216. param_1[5] = uVar20 << 0x24 | uVar20 >> 0x1c;
  217. auVar24 = vpermq_avx2(auVar24,0xe9);
  218. auVar26 = vpmovsxbw_avx2(auVar4);
  219. auVar24 = vpmovsxbw_avx2(SUB3216(auVar24,0));
  220. auVar27 = vpmovsxbw_avx2(auVar25);
  221. auVar26 = vpsllw_avx2(auVar26,5);
  222. auVar24 = vpsllw_avx2(auVar24,5);
  223. auVar28 = vpsllw_avx2(auVar27,5);
  224. /* WARNING: Load size is inaccurate */
  225. auVar27 = vpmulhrsw_avx2(auVar26,*(undefined *)param_2->field_0x420);
  226. /* WARNING: Load size is inaccurate */
  227. auVar26 = vpmulhrsw_avx2(auVar24,*(undefined *)param_2->field_0x440);
  228. /* WARNING: Load size is inaccurate */
  229. auVar28 = vpmulhrsw_avx2(auVar28,*(undefined *)param_2->field_0x460);
  230. /* WARNING: Store size is inaccurate */
  231. auVar24 = vmovdqa_avx(auVar27);
  232. *(undefined *)(dst_short + -0x40) = auVar24;
  233. /* WARNING: Store size is inaccurate */
  234. auVar24 = vmovdqa_avx(auVar26);
  235. *(undefined *)(dst_short + -0x30) = auVar24;
  236. /* WARNING: Store size is inaccurate */
  237. auVar24 = vmovdqa_avx(auVar28);
  238. *(undefined *)(dst_short + -0x20) = auVar24;
  239. /* WARNING: Store size is inaccurate */
  240. auVar24 = vmovaps_avx(in_YMM13);
  241. *(undefined *)(dst_short + -0x10) = auVar24;
  242. uVar13 = param_1[4];
  243. uVar16 = param_1[5];
  244. uVar15 = uVar16 ^ uVar13;
  245. uVar12 = (uVar13 << 0x37 | uVar13 >> 9) ^ uVar15;
  246. uVar19 = uVar15 << 0xe ^ uVar12;
  247. uVar15 = uVar15 << 0x24 | uVar15 >> 0x1c;
  248. uVar17 = uVar15 ^ uVar19;
  249. param_1[4] = uVar17 << 0xe ^ (uVar19 >> 9 | uVar12 << 0x37) ^ uVar17;
  250. param_1[5] = uVar17 << 0x24 | uVar17 >> 0x1c;
  251. auVar25 = vmovq_avx(uVar15 + uVar19);
  252. auVar4 = vmovq_avx(uVar16 + uVar13);
  253. auVar5 = vpunpcklqdq_avx(auVar4,auVar25);
  254. auVar4 = vpand_avx(auVar5,(undefined [16])0x3f3f3f3f3f3f3f3f);
  255. auVar25 = vmovdqa_avx((undefined [16])0x3939393939393939);
  256. auVar25 = vmovdqa_avx(auVar25);
  257. auVar6 = vpcmpgtb_avx(auVar4,auVar25);
  258. auVar25 = vpand_avx(auVar6,auVar25);
  259. auVar6 = vpsubusb_avx(auVar4,auVar25);
  260. auVar25 = vmovdqa_avx((undefined [16])0x2d2d2d2d2d2d2d2d);
  261. auVar25 = vmovdqa_avx(auVar25);
  262. auVar4 = vpcmpgtb_avx(auVar6,auVar25);
  263. auVar25 = vpand_avx(auVar4,auVar25);
  264. auVar4 = vpsubusb_avx(auVar6,auVar25);
  265. auVar25 = vpcmpgtb_avx(auVar4,(undefined [16])0x1a1a1a1a1a1a1a1a);
  266. auVar25 = vpand_avx(auVar25,(undefined [16])0x1b1b1b1b1b1b1b1b);
  267. auVar25 = vpsubusb_avx(auVar4,auVar25);
  268. auVar25 = vpsignb_avx(auVar25,auVar5);
  269. if ((false) || (false)) {
  270. auVar24 = ZEXT1632(auVar25);
  271. }
  272. else {
  273. auVar24 = CONCAT1616(auVar25,auVar25);
  274. }
  275. auVar25 = vpinsrb_avx(auVar25,0,0);
  276. local_d8 = 0;
  277. auVar24 = vpblendd_avx2(auVar24,ZEXT1632(auVar25),0xf);
  278. auVar25 = vpshufb_avx(SUB3216(auVar24,0),(undefined [16])0x50400000100);
  279. auVar4 = vpshufb_avx(SUB3216(auVar24,0),(undefined [16])0xd0c00000900);
  280. auVar26 = vpmovsxbw_avx2(auVar25);
  281. auVar24 = vpmovsxbw_avx2(auVar4);
  282. auVar26 = vpsllw_avx2(auVar26,4);
  283. auVar24 = vpsllw_avx2(auVar24,4);
  284. /* WARNING: Load size is inaccurate */
  285. auVar28 = vmovdqa_avx(*(undefined *)param_2->field_0x4e0);
  286. auVar27 = vpmulhrsw_avx2(auVar26,auVar28);
  287. auVar26 = vpmulhrsw_avx2(auVar24,auVar28);
  288. /* WARNING: Store size is inaccurate */
  289. auVar24 = vmovdqa_avx(auVar27);
  290. *(undefined *)dst_short = auVar24;
  291. /* WARNING: Store size is inaccurate */
  292. auVar24 = vmovaps_avx(in_YMM13);
  293. *(undefined *)(dst_short + 0x10) = auVar24;
  294. /* WARNING: Store size is inaccurate */
  295. auVar24 = vmovdqa_avx(auVar26);
  296. *(undefined *)(dst_short + 0x20) = auVar24;
  297. /* WARNING: Store size is inaccurate */
  298. auVar24 = vmovaps_avx(in_YMM13);
  299. *(undefined *)(dst_short + 0x30) = auVar24;
  300. vzeroupper_avx();
  301. uVar13 = bitstream_14(dst_short + -0x80,(int *)&param_2->field_0x500,prev_dc,
  302. (GetBitContext *)gb);
  303. uVar13 = bitstream_14(dst_short + -0x40,(int *)&param_2->field_0x500,(int)uVar13,
  304. (GetBitContext *)gb);
  305. prev_dc = (int)uVar13;
  306. uVar13 = bitstream_16(dst_short,(int *)(param_2 + 1),local_5c,(GetBitContext *)gb);
  307. local_5c = (int)uVar13;
  308. uVar13 = bitstream_16(dst_short + 0x20,(int *)(param_2 + 1),local_60,(GetBitContext *)gb);
  309. local_60 = (int)uVar13;
  310. if (local_60 == 0x7fffffff) goto LAB_00518669;
  311. auVar25 = vmovq_avx(gb._0_8_);
  312. auVar25 = vpbroadcastq_avx2(auVar25);
  313. auVar25 = vpsrlq_avx(auVar25,auVar8);
  314. gb = CONCAT88(gb._8_8_,gb._0_8_ << ((byte)uVar2 & 0x3f));
  315. local_38 = local_38 - uVar10;
  316. vpextrb_avx(auVar25,0);
  317. lVar11 = lVar11 + 1;
  318. dst_short = dst_short + 0xc0;
  319. } while (lVar11 < (long)((ulong)uVar1 & 0xffff));
  320. }
  321. puVar23 = puVar23 + (uVar2 >> 0x20 & 0xffff) * 0xc0;
  322. plVar14 = (long *)(ulong)(uVar9 - 1);
  323. bVar3 = 1 < (int)uVar9;
  324. uVar9 = uVar9 - 1;
  325. } while (bVar3);
  326. }
  327. local_d8 = (uint)CONCAT71((int7)((ulong)plVar14 >> 8),1);
  328. LAB_00518669:
  329. vzeroupper_avx();
  330. return (ulong)local_d8;
  331. }
Advertisement
Add Comment
Please, Sign In to add comment