Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dextercd/fae158364561f2facfa893b3714fa8bc to your computer and use it in GitHub Desktop.
Save dextercd/fae158364561f2facfa893b3714fa8bc to your computer and use it in GitHub Desktop.
/* 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