Created
June 30, 2022 15:30
-
-
Save dextercd/fae158364561f2facfa893b3714fa8bc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* WARNING: Could not reconcile some variable overlaps */ | |
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ | |
void __thiscall FUN_00a9d1a0(int **param_1_00,int *param_1,int param_2) | |
{ | |
float *pfVar1; | |
float *pfVar2; | |
float *pfVar3; | |
undefined4 *puVar4; | |
float fVar5; | |
uint uVar6; | |
uint uVar7; | |
int *piVar8; | |
bool bVar9; | |
char cVar10; | |
int iVar11; | |
undefined4 uVar12; | |
undefined4 uVar13; | |
uint *puVar14; | |
int iVar15; | |
float *pfVar16; | |
uint *puVar17; | |
float *pfVar18; | |
uint *puVar19; | |
double dVar20; | |
undefined auVar21 [16]; | |
float fVar22; | |
float fVar23; | |
float fVar24; | |
double dVar25; | |
int *piVar26; | |
double dVar27; | |
double dVar28; | |
undefined auStack1560 [4]; | |
undefined4 uStack1556; | |
int *local_610; | |
float local_60c; | |
uint *local_608; | |
float local_604; | |
float local_600; | |
int *local_5fc; | |
int *local_5f8; | |
float local_5f4; | |
float fStack1520; | |
float *local_5ec; | |
int **local_5e8; | |
float local_5e4; | |
float local_5e0; | |
float local_5dc; | |
undefined4 local_5d8; | |
float local_5d4; | |
float fStack1488; | |
double *local_5cc; | |
float local_5c8; | |
float local_5c4; | |
float local_5c0; | |
float local_5bc; | |
float local_5b8; | |
uint *local_5b4; | |
float local_5b0; | |
float local_5ac; | |
float local_5a8; | |
float local_5a4; | |
undefined local_5a0 [4]; | |
undefined auStack1436 [8]; | |
undefined4 uStack1428; | |
undefined4 local_590; | |
double local_578; | |
double local_570; | |
undefined4 local_564; | |
undefined4 uStack1376; | |
undefined4 uStack1372; | |
undefined4 uStack1368; | |
undefined local_554; | |
undefined local_550 [16]; | |
undefined local_540 [13]; | |
undefined3 uStack1331; | |
int local_530; | |
float local_518 [321]; | |
uint local_14; | |
local_14 = DAT_00f3a000 ^ (uint)auStack1560; | |
local_5f8 = param_1; | |
local_5e8 = param_1_00; | |
if ((param_1 == (int *)0x0) || (*(char *)(param_1 + 5) == '\0')) goto LAB_00a9e5d1; | |
local_5cc = (double *)FUN_005d6ae0(); | |
fVar22 = 0.0; | |
puVar17 = *(uint **)(*(int *)(*local_5e8[1] + 0x1c) + param_2 * 4); | |
local_608 = puVar17; | |
if (0.0 < (float)param_1[0x12]) { | |
fVar22 = (float)param_1[0x12]; | |
FUN_006c60d0(param_1 + 0xcb); | |
} | |
local_5f4 = (float)param_1[0x16]; | |
local_5ec = (float *)((float)param_1[0x19] * 0.5); | |
auVar21 = ZEXT416(0) << 0x20 & (undefined [16])0xffffffff; | |
local_540._0_12_ = SUB1612(auVar21,0); | |
local_530 = param_1[0x25]; | |
local_604 = (float)puVar17[0x14]; | |
local_5c4 = (float)puVar17[0x15]; | |
local_550 = CONCAT412((float)(int)local_5e8[2] / 60.0, | |
CONCAT48(0x44160000,CONCAT44(0x3f333333,param_1[0x1a]))); | |
local_540._0_12_ = CONCAT48(param_1[0x1d],CONCAT44((float)local_5e8[3] * fVar22,(*local_5e8)[9])); | |
local_5c8 = local_604; | |
local_5a4 = local_5c4; | |
FUN_00b921c0(local_5a0,puVar17); | |
local_60c = (float)puVar17[0x1d]; | |
uStack1556 = (int *)((uint)uStack1556 & 0xffffff); | |
local_5d8 = (uint *)((uint)local_5d8 & 0xffffff00); | |
local_5e4 = (float)((uint)local_5e4 & 0xffffff00); | |
if (local_60c == 0.0) { | |
LAB_00a9d38d: | |
if ((*(char *)((int)param_1 + 0x7b) != '\0') && (iVar11 = 0, 0 < param_1[0x14])) { | |
puVar14 = (uint *)(param_1 + 0xcb); | |
do { | |
*puVar14 = puVar17[0x14]; | |
iVar11 += 1; | |
puVar14[1] = puVar17[0x15]; | |
puVar14 = puVar14 + 2; | |
} while (iVar11 < param_1[0x14]); | |
} | |
iVar11 = FUN_00b0dd30(); | |
while (iVar11 != 0) { | |
/* WARNING: Read-only address (ram,0x00e631b0) is written */ | |
iVar15 = param_1[0x12] + -1; | |
if (*(int *)(iVar11 + 0x50) < iVar15) { | |
iVar15 = *(int *)(iVar11 + 0x50); | |
} | |
param_1[iVar15 * 2 + 0xcb] = *(int *)(iVar11 + 0x48); | |
param_1[iVar15 * 2 + 0xcc] = *(int *)(iVar11 + 0x4c); | |
iVar11 = FUN_00b0dd30(); | |
} | |
} | |
else { | |
iVar11 = FUN_009aea70(0); | |
if (iVar11 != 0) { | |
uStack1556 = (int *)CONCAT13(1,(uint3)uStack1556); | |
local_5d8 = (uint *)CONCAT31(local_5d8._1_3_,1); | |
} | |
iVar11 = FUN_009aea70(0); | |
local_5d8 = (uint *)((uint)local_5d8 & 0xff); | |
if (iVar11 != 0) { | |
local_5d8 = (uint *)0x1; | |
} | |
cVar10 = FUN_009b12b0(); | |
local_5e4 = (float)((uint)local_5e4 & 0xff); | |
if (cVar10 != '\0') { | |
local_5e4 = 1.401298e-45; | |
} | |
if (uStack1556._3_1_ == '\0') goto LAB_00a9d38d; | |
} | |
iVar11 = param_1[0x12]; | |
fVar23 = ((float)param_1[iVar11 * 2 + 0xc9] + (float)param_1[0xcb]) * 0.5; | |
fVar22 = ((float)param_1[iVar11 * 2 + 0xca] + (float)param_1[0xcc]) * 0.5; | |
if ((((fVar23 < (float)*local_5e8[5]) || ((float)*local_5e8[6] <= fVar23)) || | |
(param_1 = local_5f8, fVar22 < (float)local_5e8[5][1])) || ((float)local_5e8[6][1] <= fVar22)) | |
{ | |
bVar9 = false; | |
} | |
else { | |
bVar9 = true; | |
} | |
uStack1556._2_1_ = iVar11 == 0 || !bVar9; | |
uStack1556 = (int *)((uint)uStack1556 & 0xff000000 | (uint)(uint3)uStack1556); | |
if (uStack1556._2_1_ != *(char *)(param_1 + 0x2a)) { | |
FUN_008399e0(&local_564,local_608); | |
iVar15 = FUN_007c7170(); | |
/* WARNING: Read-only address (ram,0x00e631b0) is written */ | |
for (iVar11 = 0; | |
(uStack1556._2_1_ = (char)((uint)uStack1556 >> 0x10), iVar15 != 0 && | |
(iVar11 <= param_1[0x12] + -2)); iVar11 += 1) { | |
*(bool *)(iVar15 + 0x80) = uStack1556._2_1_ == '\0'; | |
iVar15 = FUN_007c7170(); | |
} | |
} | |
*(char *)(param_1 + 0x2a) = uStack1556._2_1_; | |
if (uStack1556._2_1_ == '\0') { | |
if (uStack1556._3_1_ == '\0') { | |
pfVar18 = local_518; | |
iVar11 = 0x9f; | |
do { | |
iVar11 += -1; | |
*pfVar18 = 0.0; | |
pfVar18[1] = 0.0; | |
pfVar18 = pfVar18 + 2; | |
} while (-1 < iVar11); | |
if ((float)param_1[0x1b] != 0.0) { | |
local_60c = 0.0; | |
local_610 = (int *)0x0; | |
piVar26 = (int *)0x0; | |
fVar22 = 0.0; | |
if ((local_608[0x1d] != 0) && | |
(iVar11 = FUN_00840c30(local_608[0x1d]), piVar26 = local_610, fVar22 = local_60c, | |
iVar11 != 0)) { | |
local_600 = *(float *)(iVar11 + 0x108); | |
local_5fc = *(int **)(iVar11 + 0x10c); | |
piVar26 = local_5fc; | |
fVar22 = local_600; | |
} | |
iVar11 = param_1[0x12]; | |
iVar15 = 1; | |
if (1 < iVar11) { | |
fVar23 = (float)param_1[0x1b]; | |
pfVar18 = (float *)(param_1 + 0x2c); | |
pfVar16 = (float *)(param_1 + 0x20e); | |
local_60c = fVar22; | |
do { | |
pfVar2 = pfVar16 + -0x141; | |
pfVar3 = pfVar16 + -0x140; | |
fVar22 = *pfVar16; | |
pfVar1 = pfVar16 + -1; | |
pfVar16 = pfVar16 + 2; | |
piVar26 = (int *)(((float)piVar26 - (*pfVar3 - fVar22)) * fVar23); | |
local_60c = (local_60c - (*pfVar2 - *pfVar1)) * fVar23; | |
fVar22 = *pfVar18; | |
fVar24 = *pfVar18; | |
pfVar18 = pfVar18 + 1; | |
fVar5 = local_518[iVar15 * 2 + 1]; | |
local_518[iVar15 * 2] = local_60c * fVar22 + local_518[iVar15 * 2]; | |
local_518[iVar15 * 2 + 1] = (float)piVar26 * fVar24 + fVar5; | |
iVar15 += 1; | |
} while (iVar15 < iVar11); | |
} | |
} | |
if (*(char *)((int)param_1 + 0x71) != '\0') { | |
FUN_00a9a580(local_550,param_1[0x12]); | |
} | |
pfVar18 = (float *)(param_1 + 0xcb); | |
if (*(char *)((int)param_1 + 0x72) != '\0') { | |
FUN_00a9a6b0(local_518,local_550,param_1[0x12]); | |
} | |
piVar26 = *local_5e8; | |
local_610 = piVar26; | |
if (piVar26[0x27] != piVar26[0x28]) { | |
local_5e0 = (float)param_1[0x12]; | |
local_5b4 = (uint *)0x0; | |
if (0 < (int)local_5e0) { | |
local_578 = (double)((ulonglong)local_578 & 0xffffffff00000000 | ZEXT48(pfVar18)); | |
do { | |
local_600 = *pfVar18; | |
local_5fc = (int *)pfVar18[1]; | |
local_60c = 0.0; | |
puVar17 = local_5b4; | |
if (piVar26[0x28] - piVar26[0x27] >> 4 != 0) { | |
pfVar18 = (float *)piVar26[0x27]; | |
fVar22 = (float)(piVar26[0x28] - (int)pfVar18 >> 4); | |
local_5c0 = fVar22; | |
do { | |
fVar23 = (float)local_5fc - pfVar18[1]; | |
local_610 = (int *)(local_600 - *pfVar18); | |
local_570 = (double)((ulonglong)local_570 & 0xffffffff00000000 | | |
(ulonglong)(uint)fVar23); | |
fVar24 = fVar23 * fVar23 + (float)local_610 * (float)local_610; | |
fVar23 = pfVar18[2] * pfVar18[2]; | |
if (fVar24 < fVar23) { | |
local_5ac = (1.0 - fVar24 / fVar23) * pfVar18[3]; | |
FUN_004479a0(); | |
local_570._0_4_ = 0.0; | |
fVar22 = 0.0; | |
if (0.0 < fVar24) { | |
fVar22 = (float)local_610 / fVar24; | |
local_570._0_4_ = local_570._0_4_ / fVar24; | |
} | |
fVar23 = local_518[(int)local_5b4 * 2 + 1]; | |
local_518[(int)local_5b4 * 2] = | |
fVar22 * local_5ac * 2000.0 + local_518[(int)local_5b4 * 2]; | |
local_518[(int)local_5b4 * 2 + 1] = local_570._0_4_ * local_5ac * 2000.0 + fVar23; | |
fVar22 = local_5c0; | |
puVar17 = local_5b4; | |
} | |
local_60c = (float)((int)local_60c + 1); | |
pfVar18 = pfVar18 + 4; | |
} while ((uint)local_60c < (uint)fVar22); | |
} | |
local_5b4 = (uint *)((int)puVar17 + 1); | |
pfVar18 = (float *)(local_578._0_4_ + 8); | |
local_578 = (double)((ulonglong)local_578 & 0xffffffff00000000 | ZEXT48(pfVar18)); | |
param_1 = local_5f8; | |
} while ((int)local_5b4 < (int)local_5e0); | |
} | |
} | |
pfVar18 = (float *)(param_1 + 0xcb); | |
FUN_00a9a8d0(local_518,param_1 + 0x2b,param_1 + 0x48b,param_1 + 0x52b,param_1 + 0x98b, | |
param_1 + 0xa2b,local_550,param_1[0x12]); | |
FUN_00a9aea0(param_1 + 0x2b,param_1[0x13]); | |
FUN_00a9aea0(param_1 + 0x2b,param_1[0x13]); | |
if ((*(char *)((int)param_1 + 0x7b) != '\0') && (iVar11 = 0, 0 < param_1[0x14])) { | |
do { | |
*pfVar18 = local_604; | |
pfVar18[1] = local_5a4; | |
iVar11 += 1; | |
pfVar18 = pfVar18 + 2; | |
} while (iVar11 < param_1[0x14]); | |
} | |
_local_5a0 = CONCAT48(auStack1436._0_4_,_local_5a0); | |
iVar11 = FUN_00b0dd30(); | |
while (iVar11 != 0) { | |
iVar15 = param_1[0x12] + -1; | |
if (*(int *)(iVar11 + 0x50) < iVar15) { | |
iVar15 = *(int *)(iVar11 + 0x50); | |
} | |
param_1[iVar15 * 2 + 0xcb] = *(int *)(iVar11 + 0x48); | |
param_1[iVar15 * 2 + 0xcc] = *(int *)(iVar11 + 0x4c); | |
iVar11 = FUN_00b0dd30(); | |
} | |
if (*(char *)(param_1 + 0x1e) != '\0') { | |
FUN_00a9b020(param_1[0x14]); | |
} | |
puVar17 = local_608; | |
if (((float)param_1[0x1f] != 0.0) || ((float)param_1[0x20] != 0.0)) { | |
if ((*(byte *)local_608 & 1) == 0) { | |
uVar12 = 0x3f800000; | |
} | |
else { | |
uVar12 = 0xbf800000; | |
} | |
FUN_00a9b130(param_1 + 0x2b,param_1[0x13],param_1[0x22],param_1[0x23],param_1[0x21],uVar12, | |
param_1[0x1f],param_1[0x20]); | |
} | |
} | |
else { | |
iVar11 = 0; | |
fVar22 = (float)param_1[0x28]; | |
fVar23 = (float)param_1[0x29]; | |
puVar17 = local_608; | |
if (0 < param_1[0x12]) { | |
pfVar18 = (float *)(param_1 + 0x20c); | |
do { | |
iVar11 += 1; | |
pfVar18[-0x141] = (local_5c8 - fVar22) + pfVar18[-0x141]; | |
pfVar18[-0x140] = (local_5c4 - fVar23) + pfVar18[-0x140]; | |
pfVar18[-1] = (local_5c8 - fVar22) + pfVar18[-1]; | |
*pfVar18 = (local_5c4 - fVar23) + *pfVar18; | |
pfVar18 = pfVar18 + 2; | |
} while (iVar11 < param_1[0x12]); | |
} | |
} | |
param_1[0x28] = (int)local_604; | |
param_1[0x29] = (int)local_5a4; | |
if (param_1[0x15] == 1) { | |
if ((char)local_5d8 == '\0') { | |
iVar11 = param_1[0x14]; | |
local_5f4 = (float)(param_1[0x12] / iVar11 + -1); | |
if (1 < (int)local_5f4) { | |
local_5ec = (float *)(iVar11 + -1); | |
local_608 = (uint *)(param_1 + iVar11 + 0x98d); | |
local_5d8 = (uint *)(param_1 + 0x98c); | |
local_600 = (float)(iVar11 * 4); | |
local_5b4 = (uint *)(param_1 + iVar11 * 2 + 0x98c); | |
local_610 = (int *)(param_1[0x12] / iVar11 + -2); | |
do { | |
if (1 < (int)local_5ec) { | |
local_578 = (double)((ulonglong)local_578 & 0xffffffff00000000 | | |
(ulonglong)(iVar11 - 2)); | |
puVar17 = local_5b4; | |
puVar14 = local_5d8; | |
puVar19 = local_608; | |
do { | |
uVar6 = puVar19[-2]; | |
local_5f4 = ((float)(uVar6 & 0xff) + 0.0) / 255.0; | |
local_5c0 = ((float)(uVar6 >> 8 & 0xff) + 0.0) / 255.0; | |
local_5d4 = ((float)(uVar6 >> 0x10 & 0xff) + 0.0) / 255.0; | |
uVar7 = *puVar19; | |
local_5b0 = ((float)(uVar6 >> 0x18) + 0.0) / 255.0; | |
local_5e0 = ((float)(uVar7 >> 8 & 0xff) + 0.0) / 255.0; | |
fVar22 = ((float)(uVar7 >> 0x10 & 0xff) + 0.0) / 255.0; | |
local_570 = (double)((ulonglong)local_570 & 0xffffffff00000000 | | |
(ulonglong)(uint)fVar22); | |
uVar6 = *puVar14; | |
local_5b8 = ((float)(uVar7 >> 0x18) + 0.0) / 255.0; | |
local_5ac = ((float)(uVar6 >> 8 & 0xff) + 0.0) / 255.0; | |
local_60c = ((float)(uVar7 & 0xff) + 0.0) / 255.0 + local_5f4 + | |
((float)(uVar6 & 0xff) + 0.0) / 255.0; | |
uVar7 = *puVar17; | |
puVar14 = puVar14 + 1; | |
puVar17 = puVar17 + 1; | |
puVar19[-1] = ((((int)((local_5b8 + local_5b0 + | |
((float)(uVar6 >> 0x18) + 0.0) / 255.0 + | |
((float)(uVar7 >> 0x18) + 0.0) / 255.0) * 0.25 * 255.0) & | |
0xffU) << 8 | | |
(int)((fVar22 + local_5d4 + | |
((float)(uVar6 >> 0x10 & 0xff) + 0.0) / 255.0 + | |
((float)(uVar7 >> 0x10 & 0xff) + 0.0) / 255.0) * 0.25 * 255.0) | |
& 0xffU) << 8 | | |
(int)((local_5e0 + local_5c0 + local_5ac + | |
((float)(uVar7 >> 8 & 0xff) + 0.0) / 255.0) * 0.25 * 255.0) & | |
0xffU) << 8 | | |
(int)((local_60c + ((float)(uVar7 & 0xff) + 0.0) / 255.0) * 0.25 * | |
255.0) & 0xffU; | |
puVar19 = puVar19 + 1; | |
local_578 = (double)((ulonglong)local_578 & 0xffffffff00000000 | | |
(ulonglong)(local_578._0_4_ - 1U)); | |
} while (local_578._0_4_ - 1U != 0); | |
} | |
local_5b4 = local_5b4 + iVar11; | |
local_5d8 = local_5d8 + iVar11; | |
local_608 = local_608 + iVar11; | |
local_610 = (int *)((int)local_610 + -1); | |
param_1 = local_5f8; | |
} while (local_610 != (int *)0x0); | |
} | |
local_610 = (int *)0x0; | |
if (0 < param_1[0x12]) { | |
dVar27 = -4.656612875e-10; | |
local_5f8 = param_1 + 0xa2b; | |
dVar28 = 4.656612875e-10; | |
local_5ec = (float *)(param_1 + 0xcc); | |
local_570 = -4.656612875e-10; | |
local_578 = 4.656612875e-10; | |
do { | |
local_5e0 = local_5ec[-1] - local_5ec[0x13f]; | |
local_5dc = *local_5ec - local_5ec[0x140]; | |
local_5c0 = local_5ec[0x27f]; | |
local_5bc = local_5ec[0x280]; | |
local_5ec[0x27f] = local_5e0; | |
local_5ec[0x280] = local_5dc; | |
if ((local_5f8[-0xa0] != 0) && | |
(local_5f4 = local_5bc, local_5d4 = local_5c0, | |
1.15 < (local_5bc - local_5dc) * (local_5bc - local_5dc) + | |
(local_5c0 - local_5e0) * (local_5c0 - local_5e0))) { | |
local_600 = DAT_00f3a2c8; | |
iVar11 = (int)*local_5cc * 0x41a7 + ((int)*local_5cc / 0x1f31d) * -0x7fffffff; | |
if (iVar11 < 1) { | |
iVar11 += 0x7fffffff; | |
} | |
dVar25 = (double)iVar11; | |
dVar20 = (double)(int)DAT_00f3a2c8; | |
*local_5cc = dVar25; | |
if ((int)(dVar25 * dVar27 * dVar20) == 0) { | |
if (*local_5f8 != 0) { | |
_local_5a0 = CONCAT44(local_5ec[-1],*local_5f8); | |
_local_5a0 = CONCAT48(*local_5ec,_local_5a0); | |
iVar11 = (int)dVar25 * 0x41a7 + ((int)dVar25 / 0x1f31d) * -0x7fffffff; | |
if (iVar11 < 1) { | |
iVar11 += 0x7fffffff; | |
} | |
*local_5cc = (double)iVar11; | |
local_5b0 = *local_5ec - local_5c4; | |
local_600 = local_5ec[-1] - local_5c8; | |
local_5b8 = (float)((double)iVar11 * dVar28) * 40.0 + 30.0; | |
fVar22 = local_5b0 * local_5b0 + local_600 * local_600; | |
FUN_004479a0(); | |
auVar21 = _local_5a0; | |
fVar23 = 0.0; | |
if (0.0 < fVar22) { | |
fVar23 = local_5b0 / fVar22; | |
fVar22 = local_600 / fVar22; | |
} | |
local_5ac = local_5d4 * 10.0 + fVar22 * local_5b8; | |
local_5a8 = local_5f4 * 10.0 + fVar23 * local_5b8; | |
_local_5a0 = CONCAT412(local_5ac,_local_5a0); | |
piVar8 = local_5e8[8]; | |
piVar26 = piVar8 + 2; | |
LOCK(); | |
iVar11 = *piVar26; | |
*piVar26 = *piVar26 + 1; | |
iVar15 = *piVar8; | |
local_5a0 = SUB164(auVar21,0); | |
auStack1436._0_4_ = SUB164(auVar21,4); | |
auStack1436._4_4_ = SUB164(auVar21,8); | |
puVar4 = (undefined4 *)(iVar15 + iVar11 * 0x14); | |
*puVar4 = local_5a0; | |
puVar4[1] = auStack1436._0_4_; | |
puVar4[2] = auStack1436._4_4_; | |
puVar4[3] = local_5ac; | |
*(float *)(iVar15 + 0x10 + iVar11 * 0x14) = local_5a8; | |
*local_5f8 = 0; | |
dVar27 = local_570; | |
dVar28 = local_578; | |
} | |
local_5f8[-0xa0] = 0; | |
} | |
} | |
local_5f8 = local_5f8 + 1; | |
local_610 = (int *)((int)local_610 + 1); | |
local_5ec = local_5ec + 2; | |
} while ((int)local_610 < param_1[0x12]); | |
} | |
if (param_1[0xacb] != 0) { | |
local_554 = 0; | |
if (local_5e4._0_1_ == '\0') { | |
local_564 = 0x3f800000; | |
uStack1376 = 0x3f800000; | |
uStack1372 = 0x3f800000; | |
uStack1368 = 0x3f800000; | |
FUN_00a9c030(param_1,&local_564,local_604,local_5a4); | |
stack_guard_security_thingy(); | |
return; | |
} | |
local_564 = 0x3f800000; | |
uStack1376 = 0x3f800000; | |
uStack1372 = 0x3f800000; | |
uStack1368 = 0x3e19999a; | |
FUN_00a9c030(param_1,&local_564,local_604,local_5a4); | |
stack_guard_security_thingy(); | |
return; | |
} | |
} | |
else { | |
local_554 = 0; | |
local_564 = 0; | |
uStack1376 = 0x3f000000; | |
uStack1372 = 0x3f800000; | |
uStack1368 = 0x3f800000; | |
if (param_1[0xacb] != 0) { | |
FUN_00a9c030(param_1,&local_564,local_604,local_5a4); | |
stack_guard_security_thingy(); | |
return; | |
} | |
} | |
} | |
else { | |
if (puVar17[0x1d] == 0) { | |
local_5c8 = 0.0; | |
local_5c4 = 0.0; | |
local_5e0 = 0.0; | |
local_5dc = 0.0; | |
} | |
else { | |
local_5e0 = local_604; | |
local_5dc = local_5a4; | |
} | |
local_600 = (float)(*local_5e8)[0x1b]; | |
iVar11 = FUN_0087d820(); | |
if ((iVar11 < *(int *)((int)local_600 + 0x30) - *(int *)((int)local_600 + 0x2c) >> 2) && | |
(local_610 = *(int **)(*(int *)((int)local_600 + 0x2c) + iVar11 * 4), | |
local_610 != (int *)0x0)) { | |
local_5a0 = local_610; | |
uVar12 = (**(code **)(*local_610 + 0x28))(puVar17); | |
_local_5a0 = CONCAT124(_auStack1436,uVar12); | |
uVar13 = (**(code **)(*uStack1556 + 0x38))(); | |
_local_5a0 = CONCAT412(uVar13,_local_5a0); | |
uVar13 = (**(code **)(*uStack1556 + 0x34))(); | |
_local_5a0 = CONCAT48(uVar12,_local_5a0); | |
_local_5a0 = CONCAT412(uVar13,_local_5a0); | |
} | |
else { | |
_local_5a0 = _DAT_00e631b0; | |
local_590 = 0xffffffff; | |
} | |
local_604 = 0.0; | |
iVar11 = FUN_007c7170(); | |
if (iVar11 != 0) { | |
local_5cc = (double *)(param_1 + 0xcd); | |
do { | |
if (param_1[0x12] + -2 < (int)local_604) break; | |
if (*(int *)(iVar11 + 0xe4) != 0) { | |
local_5d4 = *(float *)(local_5cc + -1); | |
fStack1488 = *(float *)((int)local_5cc + -4); | |
local_5f4 = *(float *)local_5cc; | |
fStack1520 = *(float *)((int)local_5cc + 4); | |
if (*(char *)((int)param_1 + 0x79) != '\0') { | |
local_5d4 = local_5e0 + (float)(int)(local_5d4 - local_5e0); | |
fStack1488 = local_5dc + (float)(int)(fStack1488 - local_5dc); | |
local_5f4 = local_5e0 + (float)(int)(local_5f4 - local_5e0); | |
fStack1520 = local_5dc + (float)(int)(fStack1520 - local_5dc); | |
local_5c8 = local_5d4; | |
local_5c4 = fStack1488; | |
local_5c0 = local_5f4; | |
local_5bc = fStack1520; | |
} | |
local_5b0 = fStack1520 - fStack1488; | |
local_600 = local_5f4 - local_5d4; | |
fVar22 = local_5b0 * local_5b0 + local_600 * local_600; | |
FUN_004479a0(); | |
local_5e4 = 0.0; | |
if (fVar22 != 0.0) { | |
fVar22 = local_5b0 / fVar22; | |
FUN_004478a0(); | |
local_5e4 = fVar22; | |
} | |
fVar22 = (fStack1488 - fStack1520) * (fStack1488 - fStack1520) + | |
(local_5d4 - local_5f4) * (local_5d4 - local_5f4); | |
FUN_004479a0(); | |
*(float *)(*(int *)(iVar11 + 0xe4) + 0x60) = local_5d4; | |
*(float *)(*(int *)(iVar11 + 0xe4) + 100) = fStack1488; | |
if (*(char *)((int)param_1 + 0x7a) == '\0') { | |
iVar15 = *(int *)(iVar11 + 0xe4); | |
*(undefined4 *)(iVar15 + 0x78) = 0x3f800000; | |
*(undefined4 *)(iVar15 + 0x7c) = 0x3f800000; | |
} | |
else if ((int)local_604 < param_1[0x12] + -2) { | |
iVar15 = *(int *)(iVar11 + 0xe4); | |
if (*(int *)(iVar15 + 0x98) == 0) { | |
fVar23 = *(float *)(iVar15 + 0x50); | |
} | |
else { | |
fVar23 = *(float *)(*(int *)(iVar15 + 0x98) + 8); | |
} | |
local_5ac = *(float *)(iVar15 + 0x78); | |
local_5a8 = *(float *)(iVar15 + 0x7c); | |
*(float *)(iVar15 + 0x78) = (fVar22 * 1.3) / fVar23; | |
*(float *)(iVar15 + 0x7c) = local_5a8; | |
} | |
iVar11 = *(int *)(iVar11 + 0xe4); | |
fVar22 = local_5e4; | |
FUN_004478e0(); | |
local_600 = fVar22; | |
fVar22 = local_5e4; | |
FUN_00447980(); | |
*(float *)(iVar11 + 0x68) = local_600; | |
*(uint *)(iVar11 + 0x70) = (uint)fVar22 ^ 0x80000000; | |
*(float *)(iVar11 + 0x6c) = fVar22; | |
*(float *)(iVar11 + 0x74) = local_600; | |
} | |
local_604 = (float)((int)local_604 + 1); | |
local_5cc = local_5cc + 1; | |
iVar11 = FUN_007c7170(); | |
} while (iVar11 != 0); | |
} | |
} | |
} | |
LAB_00a9e5d1: | |
stack_guard_security_thingy(); | |
return; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment