Advertisement
Gamestabled

Kankyo_Update

May 17th, 2021
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 35.96 KB | None | 0 0
  1. void FUN_0045dd30(GlobalContext *param_1,int param_2,int param_3,undefined4 param_4,ushort*param_5)
  2.  
  3. {
  4. byte bVar1;
  5. byte bVar2;
  6. char cVar3;
  7. short sVar4;
  8. dword dVar5;
  9. u8 uVar6;
  10. u32 uVar7;
  11. dword dVar8;
  12. int iVar9;
  13. uint uVar10;
  14. undefined *puVar11;
  15. float *pfVar12;
  16. uint uVar13;
  17. undefined *puVar14;
  18. float *pfVar15;
  19. ushort *puVar16;
  20. short sVar17;
  21. uint uVar18;
  22. int iVar19;
  23. int iVar20;
  24. bool bVar21;
  25. bool bVar22;
  26. uint in_fpscr;
  27. undefined4 in_cr0;
  28. undefined4 in_cr1;
  29. undefined4 in_cr8;
  30. undefined4 in_cr9;
  31. undefined4 uVar23;
  32. uint uVar24;
  33. float fVar25;
  34. float fVar26;
  35. float fVar27;
  36. float fVar28;
  37. ulonglong uVar29;
  38. float fVar30;
  39.  
  40. iVar20 = *(int *)&param_1->field_0x3230;
  41. uVar7 = FUN_003695f8();
  42. if (uVar7 != 0) {
  43. return;
  44. }
  45. FUN_003695f8();
  46. bVar2 = param_1->unk_326E[0];
  47. if (param_1->unk_326E[0] <= *(byte *)&param_1->field_0x3272) {
  48. bVar2 = *(byte *)&param_1->field_0x3272;
  49. }
  50. bVar1 = param_1->unk_326E[1];
  51. if ((bVar1 != bVar2) && (((param_1->state).frames & 7) == 0)) {
  52. if (bVar1 < bVar2) {
  53. uVar6 = bVar1 + 2;
  54. }
  55. else {
  56. uVar6 = bVar1 - 2;
  57. }
  58. param_1->unk_326E[1] = uVar6;
  59. }
  60. FUN_00470b08(param_1);
  61. if ((0xfeff < gSaveContext.nextDayTime) && (gSaveContext.nextDayTime != 0xffff)) {
  62. gSaveContext.nextDayTime = gSaveContext.nextDayTime - 0x10;
  63. if (gSaveContext.nextDayTime == 0xff0e) {
  64. Audio_PlaySoundGeneral(0x16a,NULL,4,&FLOAT_0054ac20,&FLOAT_0054ac20,(float*)&DAT_0054ac24);
  65. gSaveContext.nextDayTime = 0xffff;
  66. }
  67. else {
  68. if (gSaveContext.nextDayTime == 0xff0d) {
  69. Audio_PlaySoundGeneral(0x205,NULL,4,&FLOAT_0054ac20,&FLOAT_0054ac20,(float*)&DAT_0054ac24);
  70. gSaveContext.nextDayTime = 0xffff;
  71. }
  72. }
  73. }
  74. uVar7 = FUN_003695f8();
  75. bVar21 = uVar7 == 0;
  76. if (bVar21) {
  77. uVar7 = (u32)*param_5;
  78. }
  79. if (bVar21 && uVar7 == 0) {
  80. dVar8 = FUN_00366748(param_1);
  81. dVar5 = dVar8;
  82. if (dVar8 != 0) {
  83. dVar5 = gSaveContext.gameMode;
  84. }
  85. if ((((dVar8 == 0 || dVar5 == 3) && (*(short *)(param_2 + 0x1c) == 0)) &&
  86. (iVar9 = FrameAdvance_IsEnabled(param_1), iVar9 == 0)) &&
  87. ((iVar9 = FUN_00374be8(param_1,4), iVar9 == 0 &&
  88. ((param_1->transitionMode == '\0' || (gSaveContext.gameMode != 0)))))) {
  89. bVar21 = gSaveContext.nightFlag != 0;
  90. if (bVar21) {
  91. gSaveContext.nightFlag = (dword)DAT_00531ebe;
  92. }
  93. if (bVar21 && gSaveContext.nightFlag < 400) {
  94. if (gSaveContext.nightFlag == 0) {
  95. fVar27 = (float)VectorSignedToFloat((int)*(short *)(DAT_0051b2f4 + 0x110),
  96. (byte)(in_fpscr >> 0x15) & 3);
  97. coprocessor_function(10,2,0,in_cr1,in_cr1,in_cr9);
  98. uVar23 = VectorFloatToSigned(fVar27 * 0.3333333 - 0.5,3);
  99. sVar17 = (short)uVar23;
  100. }
  101. else {
  102. fVar27 = (float)VectorUnsignedToFloat(gSaveContext.nightFlag,(byte)(in_fpscr >> 0x15) &3)
  103. ;
  104. VectorSignedToFloat((int)*(short *)(DAT_0051b2f4 + 0x110),(byte)(in_fpscr >> 0x15) & 3);
  105. coprocessor_function(10,2,4,in_cr1,in_cr1,in_cr1);
  106. uVar23 = VectorFloatToSigned(fVar27 * 0.3333333 + 0.5,3);
  107. sVar17 = (short)uVar23;
  108. }
  109. sVar17 = sVar17 * 2;
  110. }
  111. else {
  112. if (DAT_00531ebe == 0) {
  113. fVar27 = (float)VectorSignedToFloat((int)*(short *)(DAT_0051b2f4 + 0x110),
  114. (byte)(in_fpscr >> 0x15) & 3);
  115. coprocessor_function(10,2,0,in_cr1,in_cr1,in_cr9);
  116. uVar23 = VectorFloatToSigned(fVar27 * 0.3333333 - 0.5,3);
  117. sVar17 = (short)uVar23;
  118. }
  119. else {
  120. fVar27 = (float)VectorUnsignedToFloat((uint)DAT_00531ebe,(byte)(in_fpscr >> 0x15) & 3);
  121. VectorSignedToFloat((int)*(short *)(DAT_0051b2f4 + 0x110),(byte)(in_fpscr >> 0x15) & 3);
  122. coprocessor_function(10,2,4,in_cr1,in_cr1,in_cr1);
  123. uVar23 = VectorFloatToSigned(fVar27 * 0.3333333 + 0.5,3);
  124. sVar17 = (short)uVar23;
  125. }
  126. }
  127. gSaveContext.dayTime = sVar17 + gSaveContext.dayTime;
  128. }
  129. }
  130. uVar10 = (uint)gSaveContext.dayTime;
  131. if ((gSaveContext.environmentTime < uVar10) || (uVar10 < 0xaab)) {
  132. gSaveContext.environmentTime = gSaveContext.dayTime;
  133. }
  134. gSaveContext.nightFlag = (dword)(0x7aab < uVar10 - 0x4555);
  135. bVar2 = *(byte *)(param_2 + 0xa7);
  136. if (bVar2 != 0xff) {
  137. bVar1 = *(byte *)(param_2 + 0xcc);
  138. bVar21 = bVar1 != 2;
  139. if (bVar21) {
  140. bVar1 = *(byte *)(param_2 + 0xa5);
  141. }
  142. if (((bVar21 && bVar1 != bVar2) && (0x3f7fffff < *(int *)(param_2 + 200))) && (bVar2 < 0x20)){
  143. *(undefined4 *)(param_2 + 200) = 0;
  144. *(byte *)(param_2 + 0xa6) = bVar1;
  145. *(byte *)(param_2 + 0xa5) = bVar2;
  146. }
  147. if (bVar2 == 0xfe) goto LAB_0045eeb8;
  148. }
  149. uVar29 = 0x3f800000;
  150. if (*(char *)(param_2 + 0x20) == '\0' && bVar2 == 0xff) {
  151. uVar18 = (uint)gSaveContext.environmentTime;
  152. uVar10 = 0;
  153. do {
  154. puVar16 = (ushort *)(&DAT_00531efc + (uint)*(byte *)(param_2 + 0x21) * 0x36 + uVar10 * 6);
  155. if (*puVar16 <= uVar18) {
  156. uVar13 = (uint)puVar16[1];
  157. bVar21 = uVar13 == uVar18;
  158. if ((uVar18 < uVar13) || (bVar21 = uVar13 == 0xffff, bVar21)) {
  159. uVar13 = (uint)*(ushort *)
  160. (&DAT_00531efc + (uint)*(byte *)(param_2 + 0x21) * 0x36 + uVar10 * 6 +2);
  161. fVar27 = (float)VectorSignedToFloat(uVar13 - *puVar16,(byte)(in_fpscr >> 0x15) & 3);
  162. in_fpscr = in_fpscr & 0xfffffff;
  163. if (!bVar21) {
  164. fVar25 = (float)VectorSignedToFloat(uVar13 - uVar18,(byte)(in_fpscr >> 0x15) & 3);
  165. fVar27 = 1.0 - fVar25 / fVar27;
  166. if ((int)fVar27 < 0x3f800000) {
  167. uVar29 = (ulonglong)(uint)fVar27;
  168. }
  169. }
  170. DAT_00531edc = (undefined4)uVar29;
  171. DAT_00531ebb = *(byte *)(puVar16 + 2);
  172. DAT_00531ebc = *(byte *)((int)puVar16 + 5);
  173. DAT_00531eb8 = DAT_00531ebb & 3;
  174. DAT_00531eb9 = DAT_00531ebc & 3;
  175. DAT_00531ef0 = DAT_00531edc;
  176. if (*(char *)(param_2 + 0x23) != '\0') {
  177. fVar25 = (float)VectorUnsignedToFloat
  178. ((uint)*(ushort *)(param_2 + 0x26),
  179. (byte)(in_fpscr >> 0x15) & 3);
  180. fVar27 = (float)VectorUnsignedToFloat
  181. ((uint)*(ushort *)(param_2 + 0x24),
  182. (byte)(in_fpscr >> 0x15) & 3);
  183. uVar18 = *(ushort *)(param_2 + 0x24) - 1;
  184. fVar26 = (float)VectorUnsignedToFloat
  185. ((uint)*(ushort *)(param_2 + 0x26),
  186. (byte)(in_fpscr >> 0x15) & 3);
  187. *(short *)(param_2 + 0x24) = (short)(uVar18 * 0x10000 >> 0x10);
  188. uVar29 = uVar29 | (ulonglong)(uint)((fVar25 - fVar27) / fVar26) << 0x20;
  189. if ((uVar18 & 0xffff) == 0) {
  190. *(undefined *)(param_2 + 0x23) = 0;
  191. *(undefined *)(param_2 + 0x21) = *(undefined *)(param_2 + 0x22);
  192. }
  193. }
  194. puVar11 = &DAT_00531efc + uVar10 * 6 + (uint)*(byte *)(param_2 + 0x21) * 0x36;
  195. uVar18 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar11[4] * 0x1c + 10);
  196. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar11[5] * 0x1c +10)
  197. - uVar18,(byte)(in_fpscr >> 0x15) & 3);
  198. fVar27 = (float)VectorUnsignedToFloat(uVar18,(byte)(in_fpscr >> 0x15) & 3);
  199. fVar26 = (float)uVar29;
  200. uVar13 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  201. puVar14 = &DAT_00531efc + uVar10 * 6 + (uint)*(byte *)(param_2 + 0x22) * 0x36;
  202. uVar18 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar14[4] * 0x1c + 10);
  203. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar14[5] * 0x1c +10)
  204. - uVar18,(byte)(in_fpscr >> 0x15) & 3);
  205. fVar27 = (float)VectorUnsignedToFloat(uVar18,(byte)(in_fpscr >> 0x15) & 3);
  206. uVar18 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  207. fVar25 = (float)VectorSignedToFloat((uVar18 & 0xff) - (uVar13 & 0xff),
  208. (byte)(in_fpscr >> 0x15) & 3);
  209. fVar27 = (float)VectorUnsignedToFloat(uVar13 & 0xff,(byte)(in_fpscr >> 0x15) & 3);
  210. fVar30 = (float)(uVar29 >> 0x20);
  211. uVar23 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar30,3);
  212. *(char *)(param_2 + 0xb2) = (char)uVar23;
  213. uVar18 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar11[4] * 0x1c + 0xb);
  214. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar11[5] * 0x1c +0xb
  215. ) - uVar18,(byte)(in_fpscr >> 0x15) & 3);
  216. fVar27 = (float)VectorUnsignedToFloat(uVar18,(byte)(in_fpscr >> 0x15) & 3);
  217. uVar13 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  218. uVar18 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar14[4] * 0x1c + 0xb);
  219. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar14[5] * 0x1c +0xb
  220. ) - uVar18,(byte)(in_fpscr >> 0x15) & 3);
  221. fVar27 = (float)VectorUnsignedToFloat(uVar18,(byte)(in_fpscr >> 0x15) & 3);
  222. uVar18 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  223. fVar25 = (float)VectorSignedToFloat((uVar18 & 0xff) - (uVar13 & 0xff),
  224. (byte)(in_fpscr >> 0x15) & 3);
  225. fVar27 = (float)VectorUnsignedToFloat(uVar13 & 0xff,(byte)(in_fpscr >> 0x15) & 3);
  226. uVar23 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar30,3);
  227. *(char *)(param_2 + 0xb3) = (char)uVar23;
  228. uVar18 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar11[4] * 0x1c + 0xc);
  229. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar11[5] * 0x1c +0xc
  230. ) - uVar18,(byte)(in_fpscr >> 0x15) & 3);
  231. fVar27 = (float)VectorUnsignedToFloat(uVar18,(byte)(in_fpscr >> 0x15) & 3);
  232. uVar13 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  233. uVar18 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar14[4] * 0x1c + 0xc);
  234. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar14[5] * 0x1c +0xc
  235. ) - uVar18,(byte)(in_fpscr >> 0x15) & 3);
  236. fVar27 = (float)VectorUnsignedToFloat(uVar18,(byte)(in_fpscr >> 0x15) & 3);
  237. uVar18 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  238. fVar25 = (float)VectorSignedToFloat((uVar18 & 0xff) - (uVar13 & 0xff),
  239. (byte)(in_fpscr >> 0x15) & 3);
  240. fVar27 = (float)VectorUnsignedToFloat(uVar13 & 0xff,(byte)(in_fpscr >> 0x15) & 3);
  241. uVar23 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar30,3);
  242. *(char *)(param_2 + 0xb4) = (char)uVar23;
  243. fVar27 = Math_Sins(gSaveContext.dayTime + 0x8000);
  244. coprocessor_function(10,2,1,in_cr0,in_cr0,in_cr0);
  245. uVar23 = VectorFloatToSigned(fVar27,3);
  246. *(char *)(param_2 + 0xb5) = (char)uVar23;
  247. fVar27 = Math_Coss(gSaveContext.dayTime + 0x8000);
  248. coprocessor_function(10,2,1,in_cr0,in_cr0,in_cr0);
  249. uVar23 = VectorFloatToSigned(fVar27,3);
  250. *(char *)(param_2 + 0xb6) = (char)uVar23;
  251. fVar27 = Math_Coss(gSaveContext.dayTime + 0x8000);
  252. coprocessor_function(10,2,1,in_cr0,in_cr0,in_cr0);
  253. uVar23 = VectorFloatToSigned(fVar27,3);
  254. *(char *)(param_2 + 0xb7) = (char)uVar23;
  255. *(char *)(param_2 + 0xbb) = -*(char *)(param_2 + 0xb5);
  256. *(char *)(param_2 + 0xbc) = -*(char *)(param_2 + 0xb6);
  257. *(char *)(param_2 + 0xbd) = -(char)uVar23;
  258. uVar18 = 0;
  259. do {
  260. uVar13 = (uint)*(byte *)(iVar20 + (uint)(byte)(&DAT_00531efc +
  261. uVar10 * 6 +
  262. (uint)*(byte *)(param_2 + 0x21) *0x36)[4]
  263. * 0x1c + uVar18 + 0x10);
  264. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)(&DAT_00531efc +
  265. uVar10 * 6 +
  266. (uint)*(byte *)(
  267. param_2 + 0x21) * 0x36)[5] * 0x1c + uVar18 +0x10)
  268. - uVar13,(byte)(in_fpscr >> 0x15) & 3);
  269. fVar27 = (float)VectorUnsignedToFloat(uVar13,(byte)(in_fpscr >> 0x15) & 3);
  270. uVar24 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  271. uVar13 = (uint)*(byte *)(iVar20 + (uint)(byte)(&DAT_00531efc +
  272. uVar10 * 6 +
  273. (uint)*(byte *)(param_2 + 0x22) *0x36)[4]
  274. * 0x1c + uVar18 + 0x10);
  275. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)(&DAT_00531efc +
  276. uVar10 * 6 +
  277. (uint)*(byte *)(
  278. param_2 + 0x22) * 0x36)[5] * 0x1c + uVar18 +0x10)
  279. - uVar13,(byte)(in_fpscr >> 0x15) & 3);
  280. fVar27 = (float)VectorUnsignedToFloat(uVar13,(byte)(in_fpscr >> 0x15) & 3);
  281. uVar13 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  282. iVar19 = param_2 + uVar18;
  283. fVar25 = (float)VectorSignedToFloat((uVar13 & 0xff) - (uVar24 & 0xff),
  284. (byte)(in_fpscr >> 0x15) & 3);
  285. fVar27 = (float)VectorUnsignedToFloat(uVar24 & 0xff,(byte)(in_fpscr >> 0x15) & 3);
  286. uVar23 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar30,3);
  287. *(char *)(iVar19 + 0xb8) = (char)uVar23;
  288. uVar13 = (uint)*(byte *)(iVar20 + (uint)(byte)(&DAT_00531efc +
  289. uVar10 * 6 +
  290. (uint)*(byte *)(param_2 + 0x21) *0x36)[4]
  291. * 0x1c + uVar18 + 0x16);
  292. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)(&DAT_00531efc +
  293. uVar10 * 6 +
  294. (uint)*(byte *)(
  295. param_2 + 0x21) * 0x36)[5] * 0x1c + uVar18 +0x16)
  296. - uVar13,(byte)(in_fpscr >> 0x15) & 3);
  297. fVar27 = (float)VectorUnsignedToFloat(uVar13,(byte)(in_fpscr >> 0x15) & 3);
  298. uVar24 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  299. iVar9 = iVar20 + (uint)(byte)(&DAT_00531efc +
  300. uVar10 * 6 + (uint)*(byte *)(param_2 + 0x22) * 0x36)[5] *
  301. 0x1c + uVar18;
  302. uVar13 = (uint)*(byte *)(iVar20 + (uint)(byte)(&DAT_00531efc +
  303. uVar10 * 6 +
  304. (uint)*(byte *)(param_2 + 0x22) *0x36)[4]
  305. * 0x1c + uVar18 + 0x16);
  306. uVar18 = uVar18 + 1 & 0xffff;
  307. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar9 + 0x16) - uVar13,
  308. (byte)(in_fpscr >> 0x15) & 3);
  309. fVar27 = (float)VectorUnsignedToFloat(uVar13,(byte)(in_fpscr >> 0x15) & 3);
  310. uVar13 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  311. fVar25 = (float)VectorSignedToFloat((uVar13 & 0xff) - (uVar24 & 0xff),
  312. (byte)(in_fpscr >> 0x15) & 3);
  313. fVar27 = (float)VectorUnsignedToFloat(uVar24 & 0xff,(byte)(in_fpscr >> 0x15) & 3);
  314. uVar23 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar30,3);
  315. *(char *)(iVar19 + 0xbe) = (char)uVar23;
  316. } while (uVar18 < 3);
  317. puVar11 = &DAT_00531efc + uVar10 * 6 + (uint)*(byte *)(param_2 + 0x21) * 0x36;
  318. uVar18 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar11[4] * 0x1c + 0x19);
  319. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar11[5] * 0x1c +
  320. 0x19) - uVar18,(byte)(in_fpscr >> 0x15) &3);
  321. fVar27 = (float)VectorUnsignedToFloat(uVar18,(byte)(in_fpscr >> 0x15) & 3);
  322. uVar18 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  323. puVar14 = &DAT_00531efc + uVar10 * 6 + (uint)*(byte *)(param_2 + 0x22) * 0x36;
  324. uVar10 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar14[4] * 0x1c + 0x19);
  325. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar14[5] * 0x1c +
  326. 0x19) - uVar10,(byte)(in_fpscr >> 0x15) &3);
  327. fVar27 = (float)VectorUnsignedToFloat(uVar10,(byte)(in_fpscr >> 0x15) & 3);
  328. uVar10 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  329. fVar25 = (float)VectorSignedToFloat((uVar10 & 0xff) - (uVar18 & 0xff),
  330. (byte)(in_fpscr >> 0x15) & 3);
  331. fVar27 = (float)VectorUnsignedToFloat(uVar18 & 0xff,(byte)(in_fpscr >> 0x15) & 3);
  332. uVar23 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar30,3);
  333. *(char *)(param_2 + 0xc1) = (char)uVar23;
  334. uVar10 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar11[4] * 0x1c + 0x1a);
  335. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar11[5] * 0x1c +
  336. 0x1a) - uVar10,(byte)(in_fpscr >> 0x15) &3);
  337. fVar27 = (float)VectorUnsignedToFloat(uVar10,(byte)(in_fpscr >> 0x15) & 3);
  338. uVar18 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  339. uVar10 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar14[4] * 0x1c + 0x1a);
  340. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar14[5] * 0x1c +
  341. 0x1a) - uVar10,(byte)(in_fpscr >> 0x15) &3);
  342. fVar27 = (float)VectorUnsignedToFloat(uVar10,(byte)(in_fpscr >> 0x15) & 3);
  343. uVar10 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  344. fVar25 = (float)VectorSignedToFloat((uVar10 & 0xff) - (uVar18 & 0xff),
  345. (byte)(in_fpscr >> 0x15) & 3);
  346. fVar27 = (float)VectorUnsignedToFloat(uVar18 & 0xff,(byte)(in_fpscr >> 0x15) & 3);
  347. uVar23 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar30,3);
  348. *(char *)(param_2 + 0xc2) = (char)uVar23;
  349. uVar10 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar11[4] * 0x1c + 0x1b);
  350. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar11[5] * 0x1c +
  351. 0x1b) - uVar10,(byte)(in_fpscr >> 0x15) &3);
  352. fVar27 = (float)VectorUnsignedToFloat(uVar10,(byte)(in_fpscr >> 0x15) & 3);
  353. uVar18 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  354. uVar10 = (uint)*(byte *)(iVar20 + (uint)(byte)puVar14[4] * 0x1c + 0x1b);
  355. fVar25 = (float)VectorSignedToFloat(*(byte *)(iVar20 + (uint)(byte)puVar14[5] * 0x1c +
  356. 0x1b) - uVar10,(byte)(in_fpscr >> 0x15) &3);
  357. fVar27 = (float)VectorUnsignedToFloat(uVar10,(byte)(in_fpscr >> 0x15) & 3);
  358. uVar10 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar26,3);
  359. fVar25 = (float)VectorSignedToFloat((uVar10 & 0xff) - (uVar18 & 0xff),
  360. (byte)(in_fpscr >> 0x15) & 3);
  361. fVar27 = (float)VectorUnsignedToFloat(uVar18 & 0xff,(byte)(in_fpscr >> 0x15) & 3);
  362. uVar23 = VectorFloatToUnsigned(fVar27 + fVar25 * fVar30,3);
  363. *(char *)(param_2 + 0xc3) = (char)uVar23;
  364. uVar10 = *(ushort *)(iVar20 + (uint)(byte)puVar11[4] * 0x1c + 8) & 0xffff03ff;
  365. fVar25 = (float)VectorSignedToFloat((*(ushort *)
  366. (iVar20 + (uint)(byte)puVar11[5] * 0x1c + 8) &
  367. 0xffff03ff) - uVar10,(byte)(in_fpscr >> 0x15) & 3);
  368. fVar27 = (float)VectorUnsignedToFloat(uVar10,(byte)(in_fpscr >> 0x15) & 3);
  369. fVar27 = fVar27 + fVar25 * fVar26;
  370. uVar10 = *(ushort *)(iVar20 + (uint)(byte)puVar14[4] * 0x1c + 8) & 0xffff03ff;
  371. fVar28 = (float)VectorSignedToFloat((*(ushort *)
  372. (iVar20 + (uint)(byte)puVar14[5] * 0x1c + 8) &
  373. 0xffff03ff) - uVar10,(byte)(in_fpscr >> 0x15) & 3);
  374. fVar25 = (float)VectorUnsignedToFloat(uVar10,(byte)(in_fpscr >> 0x15) & 3);
  375. uVar23 = VectorFloatToUnsigned(fVar27 + ((fVar25 + fVar28 * fVar26) - fVar27) *fVar30,3);
  376. *(short *)(param_2 + 0xb0) = (short)uVar23;
  377. fVar27 = *(float *)(iVar20 + (uint)(byte)puVar11[4] * 0x1c + 4);
  378. fVar27 = fVar27 + (*(float *)(iVar20 + (uint)(byte)puVar11[5] * 0x1c + 4) - fVar27) *
  379. fVar26;
  380. fVar25 = *(float *)(iVar20 + (uint)(byte)puVar14[4] * 0x1c + 4);
  381. *(float *)(param_2 + 0xac) =
  382. fVar27 + ((fVar25 + (*(float *)(iVar20 + (uint)(byte)puVar14[5] * 0x1c + 4) -fVar25)
  383. * fVar26) - fVar27) * fVar30;
  384. *(undefined4 *)(param_2 + 0xa8) =
  385. *(undefined4 *)(iVar20 + (uint)*(byte *)(param_2 + 0xa5) * 0x1c);
  386. break;
  387. }
  388. }
  389. uVar10 = uVar10 + 1 & 0xffff;
  390. } while (uVar10 < 9);
  391. }
  392. else {
  393. pfVar12 = (float *)(iVar20 + (uint)*(byte *)(param_2 + 0xa5) * 0x1c);
  394. if (*(char *)(param_2 + 0xa4) == '\0') {
  395. *(undefined *)(param_2 + 0xb2) = *(undefined *)((int)pfVar12 + 10);
  396. *(undefined *)(param_2 + 0xb5) = *(undefined *)((int)pfVar12 + 0xd);
  397. *(undefined *)(param_2 + 0xb8) = *(undefined *)(pfVar12 + 4);
  398. *(undefined *)(param_2 + 0xbb) = *(undefined *)((int)pfVar12 + 0x13);
  399. *(undefined *)(param_2 + 0xbe) = *(undefined *)((int)pfVar12 + 0x16);
  400. *(undefined *)(param_2 + 0xc1) = *(undefined *)((int)pfVar12 + 0x19);
  401. *(undefined *)(param_2 + 0xb3) = *(undefined *)((int)pfVar12 + 0xb);
  402. *(undefined *)(param_2 + 0xb6) = *(undefined *)((int)pfVar12 + 0xe);
  403. *(undefined *)(param_2 + 0xb9) = *(undefined *)((int)pfVar12 + 0x11);
  404. *(undefined *)(param_2 + 0xbc) = *(undefined *)(pfVar12 + 5);
  405. *(undefined *)(param_2 + 0xbf) = *(undefined *)((int)pfVar12 + 0x17);
  406. *(undefined *)(param_2 + 0xc2) = *(undefined *)((int)pfVar12 + 0x1a);
  407. *(undefined *)(param_2 + 0xb4) = *(undefined *)(pfVar12 + 3);
  408. *(undefined *)(param_2 + 0xb7) = *(undefined *)((int)pfVar12 + 0xf);
  409. *(undefined *)(param_2 + 0xba) = *(undefined *)((int)pfVar12 + 0x12);
  410. *(undefined *)(param_2 + 0xbd) = *(undefined *)((int)pfVar12 + 0x15);
  411. *(undefined *)(param_2 + 0xc0) = *(undefined *)(pfVar12 + 6);
  412. *(undefined *)(param_2 + 0xc3) = *(undefined *)((int)pfVar12 + 0x1b);
  413. *(ushort *)(param_2 + 0xb0) = *(ushort *)(pfVar12 + 2) & 0x3ff;
  414. *(float *)(param_2 + 0xac) = pfVar12[1];
  415. *(float *)(param_2 + 0xa8) = *pfVar12;
  416. *(undefined4 *)(param_2 + 200) = 0x3f800000;
  417. }
  418. else {
  419. fVar27 = *(float *)(param_2 + 200);
  420. uVar10 = (uint)(*(ushort *)(pfVar12 + 2) >> 10) << 2;
  421. if (*(ushort *)(pfVar12 + 2) >> 10 == 0) {
  422. uVar10 = 1;
  423. }
  424. if (*(ushort *)(param_2 + 0xc4) != 0xffff) {
  425. uVar10 = *(ushort *)(param_2 + 0xc4) & 0xff;
  426. }
  427. if (*(char *)(param_2 + 0xcc) == '\0') {
  428. fVar25 = (float)VectorUnsignedToFloat(uVar10,(byte)(in_fpscr >> 0x15) & 3);
  429. fVar27 = fVar27 + fVar25 * 0.003921569;
  430. *(float *)(param_2 + 200) = fVar27;
  431. }
  432. fVar25 = 1.0;
  433. if ((int)fVar27 < 0x3f800001) {
  434. fVar25 = fVar27;
  435. }
  436. *(float *)(param_2 + 200) = fVar25;
  437. pfVar15 = (float *)(iVar20 + (uint)*(byte *)(param_2 + 0xa6) * 0x1c);
  438. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)((int)pfVar12 + 10) -
  439. (uint)*(byte *)((int)pfVar15 + 10),
  440. (byte)(in_fpscr >> 0x15) & 3);
  441. fVar27 = (float)VectorUnsignedToFloat
  442. ((uint)*(byte *)((int)pfVar15 + 10),(byte)(in_fpscr >> 0x15) & 3);
  443. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  444. *(char *)(param_2 + 0xb2) = (char)uVar23;
  445. uVar23 = VectorSignedToFloat((int)*(char *)((int)pfVar12 + 0xd) -
  446. (int)*(char *)((int)pfVar15 + 0xd),(byte)(in_fpscr >> 0x15) &3);
  447. coprocessor_function(10,2,0,in_cr0,in_cr0,in_cr8);
  448. uVar23 = VectorFloatToSigned(uVar23,3);
  449. *(char *)(param_2 + 0xb5) = *(char *)((int)pfVar15 + 0xd) + (char)uVar23;
  450. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)(pfVar12 + 4) -
  451. (uint)*(byte *)(pfVar15 + 4),(byte)(in_fpscr >> 0x15) &3)
  452. ;
  453. fVar27 = (float)VectorUnsignedToFloat
  454. ((uint)*(byte *)(pfVar15 + 4),(byte)(in_fpscr >> 0x15) & 3);
  455. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  456. *(char *)(param_2 + 0xb8) = (char)uVar23;
  457. uVar23 = VectorSignedToFloat((int)*(char *)((int)pfVar12 + 0x13) -
  458. (int)*(char *)((int)pfVar15 + 0x13),(byte)(in_fpscr >> 0x15) &3)
  459. ;
  460. coprocessor_function(10,2,0,in_cr0,in_cr0,in_cr8);
  461. uVar23 = VectorFloatToSigned(uVar23,3);
  462. *(char *)(param_2 + 0xbb) = *(char *)((int)pfVar15 + 0x13) + (char)uVar23;
  463. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)((int)pfVar12 + 0x16) -
  464. (uint)*(byte *)((int)pfVar15 + 0x16),
  465. (byte)(in_fpscr >> 0x15) & 3);
  466. fVar27 = (float)VectorUnsignedToFloat
  467. ((uint)*(byte *)((int)pfVar15 + 0x16),(byte)(in_fpscr >> 0x15) &3);
  468. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  469. *(char *)(param_2 + 0xbe) = (char)uVar23;
  470. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)((int)pfVar12 + 0x19) -
  471. (uint)*(byte *)((int)pfVar15 + 0x19),
  472. (byte)(in_fpscr >> 0x15) & 3);
  473. fVar27 = (float)VectorUnsignedToFloat
  474. ((uint)*(byte *)((int)pfVar15 + 0x19),(byte)(in_fpscr >> 0x15) &3);
  475. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  476. *(char *)(param_2 + 0xc1) = (char)uVar23;
  477. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)((int)pfVar12 + 0xb) -
  478. (uint)*(byte *)((int)pfVar15 + 0xb),
  479. (byte)(in_fpscr >> 0x15) & 3);
  480. fVar27 = (float)VectorUnsignedToFloat
  481. ((uint)*(byte *)((int)pfVar15 + 0xb),(byte)(in_fpscr >> 0x15) &3);
  482. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  483. *(char *)(param_2 + 0xb3) = (char)uVar23;
  484. uVar23 = VectorSignedToFloat((int)*(char *)((int)pfVar12 + 0xe) -
  485. (int)*(char *)((int)pfVar15 + 0xe),(byte)(in_fpscr >> 0x15) &3);
  486. coprocessor_function(10,2,0,in_cr0,in_cr0,in_cr8);
  487. uVar23 = VectorFloatToSigned(uVar23,3);
  488. *(char *)(param_2 + 0xb6) = *(char *)((int)pfVar15 + 0xe) + (char)uVar23;
  489. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)((int)pfVar12 + 0x11) -
  490. (uint)*(byte *)((int)pfVar15 + 0x11),
  491. (byte)(in_fpscr >> 0x15) & 3);
  492. fVar27 = (float)VectorUnsignedToFloat
  493. ((uint)*(byte *)((int)pfVar15 + 0x11),(byte)(in_fpscr >> 0x15) &3);
  494. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  495. *(char *)(param_2 + 0xb9) = (char)uVar23;
  496. uVar23 = VectorSignedToFloat((int)*(char *)(pfVar12 + 5) - (int)*(char *)(pfVar15 + 5),
  497. (byte)(in_fpscr >> 0x15) & 3);
  498. coprocessor_function(10,2,0,in_cr0,in_cr0,in_cr8);
  499. uVar23 = VectorFloatToSigned(uVar23,3);
  500. *(char *)(param_2 + 0xbc) = *(char *)(pfVar15 + 5) + (char)uVar23;
  501. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)((int)pfVar12 + 0x17) -
  502. (uint)*(byte *)((int)pfVar15 + 0x17),
  503. (byte)(in_fpscr >> 0x15) & 3);
  504. fVar27 = (float)VectorUnsignedToFloat
  505. ((uint)*(byte *)((int)pfVar15 + 0x17),(byte)(in_fpscr >> 0x15) &3);
  506. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  507. *(char *)(param_2 + 0xbf) = (char)uVar23;
  508. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)((int)pfVar12 + 0x1a) -
  509. (uint)*(byte *)((int)pfVar15 + 0x1a),
  510. (byte)(in_fpscr >> 0x15) & 3);
  511. fVar27 = (float)VectorUnsignedToFloat
  512. ((uint)*(byte *)((int)pfVar15 + 0x1a),(byte)(in_fpscr >> 0x15) &3);
  513. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  514. *(char *)(param_2 + 0xc2) = (char)uVar23;
  515. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)(pfVar12 + 3) -
  516. (uint)*(byte *)(pfVar15 + 3),(byte)(in_fpscr >> 0x15) &3)
  517. ;
  518. fVar27 = (float)VectorUnsignedToFloat
  519. ((uint)*(byte *)(pfVar15 + 3),(byte)(in_fpscr >> 0x15) & 3);
  520. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  521. *(char *)(param_2 + 0xb4) = (char)uVar23;
  522. uVar23 = VectorSignedToFloat((int)*(char *)((int)pfVar12 + 0xf) -
  523. (int)*(char *)((int)pfVar15 + 0xf),(byte)(in_fpscr >> 0x15) &3);
  524. coprocessor_function(10,2,0,in_cr0,in_cr0,in_cr8);
  525. uVar23 = VectorFloatToSigned(uVar23,3);
  526. *(char *)(param_2 + 0xb7) = *(char *)((int)pfVar15 + 0xf) + (char)uVar23;
  527. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)((int)pfVar12 + 0x12) -
  528. (uint)*(byte *)((int)pfVar15 + 0x12),
  529. (byte)(in_fpscr >> 0x15) & 3);
  530. fVar27 = (float)VectorUnsignedToFloat
  531. ((uint)*(byte *)((int)pfVar15 + 0x12),(byte)(in_fpscr >> 0x15) &3);
  532. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  533. *(char *)(param_2 + 0xba) = (char)uVar23;
  534. uVar23 = VectorSignedToFloat((int)*(char *)((int)pfVar12 + 0x15) -
  535. (int)*(char *)((int)pfVar15 + 0x15),(byte)(in_fpscr >> 0x15) &3)
  536. ;
  537. coprocessor_function(10,2,0,in_cr0,in_cr0,in_cr8);
  538. uVar23 = VectorFloatToSigned(uVar23,3);
  539. *(char *)(param_2 + 0xbd) = *(char *)((int)pfVar15 + 0x15) + (char)uVar23;
  540. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)(pfVar12 + 6) -
  541. (uint)*(byte *)(pfVar15 + 6),(byte)(in_fpscr >> 0x15) &3)
  542. ;
  543. fVar27 = (float)VectorUnsignedToFloat
  544. ((uint)*(byte *)(pfVar15 + 6),(byte)(in_fpscr >> 0x15) & 3);
  545. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  546. *(char *)(param_2 + 0xc0) = (char)uVar23;
  547. fVar26 = (float)VectorSignedToFloat((uint)*(byte *)((int)pfVar12 + 0x1b) -
  548. (uint)*(byte *)((int)pfVar15 + 0x1b),
  549. (byte)(in_fpscr >> 0x15) & 3);
  550. fVar27 = (float)VectorUnsignedToFloat
  551. ((uint)*(byte *)((int)pfVar15 + 0x1b),(byte)(in_fpscr >> 0x15) &3);
  552. uVar23 = VectorFloatToUnsigned(fVar27 + fVar26 * fVar25,3);
  553. *(char *)(param_2 + 0xc3) = (char)uVar23;
  554. *(float *)(param_2 + 0xa8) = *pfVar15 + (*pfVar12 - *pfVar15) * fVar25;
  555. *(float *)(param_2 + 0xac) = pfVar15[1] + (pfVar12[1] - pfVar15[1]) * fVar25;
  556. uVar23 = VectorSignedToFloat((*(ushort *)(pfVar12 + 2) & 0xffff03ff) -
  557. (*(ushort *)(pfVar15 + 2) & 0xffff03ff),
  558. (byte)(in_fpscr >> 0x15) & 3);
  559. coprocessor_function(10,2,0,in_cr0,in_cr0,in_cr8);
  560. uVar23 = VectorFloatToSigned(uVar23,3);
  561. *(short *)(param_2 + 0xb0) = (short)(*(ushort *)(pfVar15 + 2) & 0xffff03ff) + (short)uVar23;
  562. }
  563. }
  564. LAB_0045eeb8:
  565. iVar20 = 0;
  566. *(undefined *)(param_2 + 0xa4) = 1;
  567. do {
  568. iVar9 = param_2 + iVar20;
  569. iVar19 = param_2 + iVar20 * 2;
  570. sVar17 = (ushort)*(byte *)(iVar9 + 0xb2) + *(short *)(iVar19 + 0x6c);
  571. if (sVar17 < 0x100) {
  572. if (sVar17 < 0) {
  573. *(undefined *)(param_3 + iVar20 + 0xe) = 0;
  574. }
  575. else {
  576. *(char *)(param_3 + iVar20 + 0xe) = (char)sVar17;
  577. }
  578. }
  579. else {
  580. *(undefined *)(param_3 + iVar20 + 0xe) = 0xff;
  581. }
  582. sVar17 = (ushort)*(byte *)(iVar9 + 0xb8) + *(short *)(iVar19 + 0x72);
  583. if (sVar17 < 0x100) {
  584. if (sVar17 < 0) {
  585. *(undefined *)(iVar9 + 0x33) = 0;
  586. }
  587. else {
  588. *(char *)(iVar9 + 0x33) = (char)sVar17;
  589. }
  590. }
  591. else {
  592. *(undefined *)(iVar9 + 0x33) = 0xff;
  593. }
  594. sVar17 = (ushort)*(byte *)(iVar9 + 0xbe) + *(short *)(iVar19 + 0x72);
  595. if (sVar17 < 0x100) {
  596. if (sVar17 < 0) {
  597. *(undefined *)(iVar9 + 0x4b) = 0;
  598. }
  599. else {
  600. *(char *)(iVar9 + 0x4b) = (char)sVar17;
  601. }
  602. }
  603. else {
  604. *(undefined *)(iVar9 + 0x4b) = 0xff;
  605. }
  606. sVar17 = (ushort)*(byte *)(iVar9 + 0xc1) + *(short *)(iVar19 + 0x78);
  607. if (sVar17 < 0x100) {
  608. if (sVar17 < 0) {
  609. *(undefined *)(param_3 + iVar20 + 0x12) = 0;
  610. }
  611. else {
  612. *(char *)(param_3 + iVar20 + 0x12) = (char)sVar17;
  613. }
  614. }
  615. else {
  616. *(undefined *)(param_3 + iVar20 + 0x12) = 0xff;
  617. }
  618. iVar20 = iVar20 + 1;
  619. } while (iVar20 < 3);
  620. *(undefined *)(param_2 + 0x30) = *(undefined *)(param_2 + 0xb5);
  621. *(undefined *)(param_2 + 0x31) = *(undefined *)(param_2 + 0xb6);
  622. *(undefined *)(param_2 + 0x32) = *(undefined *)(param_2 + 0xb7);
  623. *(undefined *)(param_2 + 0x48) = *(undefined *)(param_2 + 0xbb);
  624. *(undefined *)(param_2 + 0x49) = *(undefined *)(param_2 + 0xbc);
  625. *(undefined *)(param_2 + 0x4a) = *(undefined *)(param_2 + 0xbd);
  626. *(undefined4 *)(param_3 + 4) = *(undefined4 *)(param_2 + 0xa8);
  627. sVar17 = *(short *)(param_2 + 0xb0);
  628. sVar4 = *(short *)(param_2 + 0x7e);
  629. iVar20 = (int)sVar17 + (int)sVar4;
  630. if (iVar20 < 0) {
  631. *(undefined2 *)(param_3 + 0xc) = 0;
  632. }
  633. else {
  634. *(short *)(param_3 + 0xc) = sVar4 + *(short *)(param_2 + 0xb0);
  635. }
  636. fVar27 = *(float *)(param_2 + 0xac) + *(float *)(param_2 + 0x84);
  637. *(float *)(param_3 + 8) = fVar27;
  638. if (iVar20 == 0 || iVar20 < 0 != SCARRY4((int)sVar17,(int)sVar4)) {
  639. fVar27 = 0.0;
  640. }
  641. *(float *)(param_3 + 8) = fVar27;
  642. cVar3 = *(char *)(param_2 + 0x30);
  643. bVar21 = cVar3 == '\0';
  644. if (bVar21) {
  645. cVar3 = *(char *)(param_2 + 0x31);
  646. }
  647. bVar22 = bVar21 && cVar3 == '\0';
  648. if (bVar21 && cVar3 == '\0') {
  649. bVar22 = *(char *)(param_2 + 0x32) == '\0';
  650. }
  651. if (bVar22) {
  652. *(undefined *)(param_2 + 0x30) = 1;
  653. }
  654. cVar3 = *(char *)(param_2 + 0x48);
  655. bVar21 = cVar3 == '\0';
  656. if (bVar21) {
  657. cVar3 = *(char *)(param_2 + 0x49);
  658. }
  659. bVar22 = bVar21 && cVar3 == '\0';
  660. if (bVar21 && cVar3 == '\0') {
  661. bVar22 = *(char *)(param_2 + 0x4a) == '\0';
  662. }
  663. if (bVar22) {
  664. *(undefined *)(param_2 + 0x48) = 1;
  665. }
  666. return;
  667. }
  668.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement