Complete decompilation of the retail Asheron's Call client using Ghidra 12.0.4 + pyghidra headless. 22,225 of 22,226 functions successfully decompiled in 75 seconds. Output: docs/research/decompiled/ (54 files, 688,567 lines of C) Key findings already identified: - CLandBlockStruct::ConstructPolygons at chunk_00530000.c:2270 (split direction formula with 0x0CCAC033 constants) - Motion command handlers at chunk_00510000.c (0x45000005 etc) - Motion interpreter at chunk_00520000.c - Portal space UI at chunk_004D0000.c and chunk_00560000.c Next: identify CPhysicsObj, CMotionInterp, collision, and movement functions by cross-referencing against ACE's C# port. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
13792 lines
433 KiB
C
13792 lines
433 KiB
C
// Decompiled from acclient.exe — chunk 0x005F0000
|
|
// Ghidra 12.0.4 + pyghidra headless
|
|
|
|
// --- FUN_005f000d at 0x005F000D (size: 344) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f000d(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
undefined4 *puVar7;
|
|
|
|
undefined4 *puVar8;
|
|
|
|
undefined4 *puVar9;
|
|
|
|
undefined4 *puVar10;
|
|
|
|
uint local_10;
|
|
|
|
undefined4 *local_c;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
iVar4 = *param_1;
|
|
|
|
if (((*(uint *)(iVar4 + 0x48) | *(uint *)(iVar4 + 0x44) | *(uint *)(iVar4 + 0x3c) |
|
|
|
|
*(uint *)(iVar4 + 0x40)) & 3) != 0) {
|
|
|
|
return 0x80004005;
|
|
|
|
}
|
|
|
|
iVar1 = param_1[1];
|
|
|
|
if (((*(uint *)(iVar1 + 0x48) | *(uint *)(iVar1 + 0x44) | *(uint *)(iVar1 + 0x40) |
|
|
|
|
*(uint *)(iVar1 + 0x3c)) & 3) == 0) {
|
|
|
|
iVar1 = *(int *)(param_1[1] + 4);
|
|
|
|
if (iVar1 == 0x31545844) {
|
|
|
|
local_8 = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((((iVar1 != 0x32545844) && (iVar1 != 0x33545844)) && (iVar1 != 0x34545844)) &&
|
|
|
|
(iVar1 != 0x35545844)) goto LAB_005f0052;
|
|
|
|
local_8 = 0x10;
|
|
|
|
}
|
|
|
|
iVar1 = param_1[1];
|
|
|
|
uVar5 = (*(uint *)(iVar1 + 0x68) >> 2) * local_8;
|
|
|
|
local_10 = 0;
|
|
|
|
puVar6 = (undefined4 *)
|
|
|
|
((*(uint *)(iVar1 + 0x40) >> 2) * *(int *)(iVar1 + 0x60) +
|
|
|
|
*(int *)(iVar1 + 100) * *(int *)(iVar1 + 0x4c) +
|
|
|
|
(*(uint *)(iVar1 + 0x3c) >> 2) * local_8 + *(int *)(iVar1 + 0x20));
|
|
|
|
local_c = (undefined4 *)
|
|
|
|
((*(uint *)(iVar4 + 0x40) >> 2) * *(int *)(iVar4 + 0x60) +
|
|
|
|
*(int *)(iVar4 + 100) * *(int *)(iVar4 + 0x4c) +
|
|
|
|
(*(uint *)(iVar4 + 0x3c) >> 2) * local_8 + *(int *)(iVar4 + 0x20));
|
|
|
|
if (*(int *)(param_1[1] + 0x70) != 0) {
|
|
|
|
uVar3 = *(uint *)(param_1[1] + 0x6c);
|
|
|
|
do {
|
|
|
|
local_8 = 0;
|
|
|
|
puVar8 = local_c;
|
|
|
|
puVar10 = puVar6;
|
|
|
|
if (uVar3 != 0) {
|
|
|
|
do {
|
|
|
|
local_8 = local_8 + 4;
|
|
|
|
puVar7 = puVar8;
|
|
|
|
puVar9 = puVar10;
|
|
|
|
for (uVar3 = uVar5 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
|
|
|
|
*puVar9 = *puVar7;
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
puVar9 = puVar9 + 1;
|
|
|
|
}
|
|
|
|
for (iVar4 = 0; iVar4 != 0; iVar4 = iVar4 + -1) {
|
|
|
|
*(undefined1 *)puVar9 = *(undefined1 *)puVar7;
|
|
|
|
puVar7 = (undefined4 *)((int)puVar7 + 1);
|
|
|
|
puVar9 = (undefined4 *)((int)puVar9 + 1);
|
|
|
|
}
|
|
|
|
puVar10 = (undefined4 *)((int)puVar10 + *(int *)(param_1[1] + 0x60));
|
|
|
|
puVar8 = (undefined4 *)((int)puVar8 + *(int *)(*param_1 + 0x60));
|
|
|
|
uVar3 = *(uint *)(param_1[1] + 0x6c);
|
|
|
|
} while (local_8 < uVar3);
|
|
|
|
}
|
|
|
|
local_c = (undefined4 *)((int)local_c + *(int *)(*param_1 + 100));
|
|
|
|
puVar6 = (undefined4 *)((int)puVar6 + *(int *)(param_1[1] + 100));
|
|
|
|
local_10 = local_10 + 1;
|
|
|
|
} while (local_10 < *(uint *)(param_1[1] + 0x70));
|
|
|
|
}
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
LAB_005f0052:
|
|
|
|
uVar2 = 0x80004005;
|
|
|
|
}
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f0165 at 0x005F0165 (size: 298) ---
|
|
|
|
|
|
undefined4 FUN_005f0165(uint *param_1,uint param_2,int param_3,uint param_4,int param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint *puVar6;
|
|
|
|
int local_14;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
uVar5 = param_4 * param_5 + param_2;
|
|
|
|
if (param_2 < uVar5) {
|
|
|
|
param_4 = param_2 + param_3 * 4;
|
|
|
|
do {
|
|
|
|
local_8 = param_1;
|
|
|
|
if (param_2 < param_4) {
|
|
|
|
puVar6 = (uint *)(param_2 + 4);
|
|
|
|
local_14 = ((param_4 - param_2) - 1 >> 3) + 1;
|
|
|
|
do {
|
|
|
|
uVar1 = *(uint *)((int)puVar6 + param_5);
|
|
|
|
uVar2 = *(uint *)(param_5 + -4 + (int)puVar6);
|
|
|
|
uVar3 = *puVar6;
|
|
|
|
uVar4 = puVar6[-1];
|
|
|
|
*local_8 = ((uVar4 >> 2 & 0xffc03fc0) + (uVar2 >> 2 & 0xffc03fc0) +
|
|
|
|
(uVar1 >> 2 & 0xffc03fc0) + -0x7fff80 + (uVar3 >> 2 & 0xffc03fc0) ^
|
|
|
|
(uVar4 & 0xff00ff) + (uVar2 & 0xff00ff) + (uVar1 & 0xff00ff) + 0x20002 +
|
|
|
|
(uVar3 & 0xff00ff) >> 2) & 0xff00ff ^
|
|
|
|
(uint)("Mouse-Look" +
|
|
|
|
(uVar3 >> 2 & 0x3fc03fc0) +
|
|
|
|
(uVar4 >> 2 & 0x3fc03fc0) + (uVar2 >> 2 & 0x3fc03fc0) +
|
|
|
|
(uVar1 >> 2 & 0x3fc03fc0) + 4);
|
|
|
|
puVar6 = puVar6 + 2;
|
|
|
|
local_14 = local_14 + -1;
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
} while (local_14 != 0);
|
|
|
|
}
|
|
|
|
param_1 = (uint *)((int)param_1 + param_6);
|
|
|
|
param_4 = param_4 + param_5 * 2;
|
|
|
|
param_2 = param_2 + param_5 * 2;
|
|
|
|
} while (param_2 < uVar5);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f028f at 0x005F028F (size: 34) ---
|
|
|
|
|
|
void __fastcall FUN_005f028f(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = *param_1;
|
|
|
|
(*(code *)PTR_FUN_00825c6c)
|
|
|
|
(*(undefined4 *)(param_1[1] + 0x20),*(undefined4 *)(iVar1 + 0x20),
|
|
|
|
*(undefined4 *)(iVar1 + 0x68),*(undefined4 *)(iVar1 + 0x6c),
|
|
|
|
*(undefined4 *)(iVar1 + 0x60),*(undefined4 *)(param_1[1] + 0x60));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f02b1 at 0x005F02B1 (size: 236) ---
|
|
|
|
|
|
undefined4
|
|
|
|
FUN_005f02b1(uint *param_1,uint param_2,uint *param_3,uint param_4,int param_5,int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
uint uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint *puVar6;
|
|
|
|
int local_10;
|
|
|
|
|
|
|
|
uVar5 = param_4 * param_5 + param_2;
|
|
|
|
if (param_2 < uVar5) {
|
|
|
|
param_4 = param_2 + (int)param_3 * 4;
|
|
|
|
do {
|
|
|
|
param_3 = param_1;
|
|
|
|
if (param_2 < param_4) {
|
|
|
|
local_10 = ((param_4 - param_2) - 1 >> 3) + 1;
|
|
|
|
puVar6 = (uint *)(param_2 + 4);
|
|
|
|
do {
|
|
|
|
puVar2 = (uint *)((int)puVar6 + param_5);
|
|
|
|
uVar3 = *puVar6;
|
|
|
|
uVar4 = *(uint *)(param_5 + -4 + (int)puVar6);
|
|
|
|
puVar1 = puVar6 + -1;
|
|
|
|
puVar6 = puVar6 + 2;
|
|
|
|
local_10 = local_10 + -1;
|
|
|
|
*param_3 = ((*puVar1 & 0xff00ff) + (uVar4 & 0xff00ff) + (*puVar2 & 0xff00ff) + 0x20002 +
|
|
|
|
(uVar3 & 0xff00ff) & 0x3fc03fc |
|
|
|
|
(*puVar1 & 0xff00) + (uVar4 & 0xff00) + (*puVar2 & 0xff00) + 0x200 +
|
|
|
|
(uVar3 & 0xff00) & 0x3fc00) >> 2;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
} while (local_10 != 0);
|
|
|
|
}
|
|
|
|
param_1 = (uint *)((int)param_1 + param_6);
|
|
|
|
param_4 = param_4 + param_5 * 2;
|
|
|
|
param_2 = param_2 + param_5 * 2;
|
|
|
|
} while (param_2 < uVar5);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f039d at 0x005F039D (size: 282) ---
|
|
|
|
|
|
undefined4
|
|
|
|
FUN_005f039d(undefined8 *param_1,undefined8 *param_2,uint param_3,int param_4,int param_5,
|
|
|
|
int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
short sVar3;
|
|
|
|
short sVar4;
|
|
|
|
short sVar5;
|
|
|
|
short sVar6;
|
|
|
|
short sVar7;
|
|
|
|
short sVar8;
|
|
|
|
short sVar9;
|
|
|
|
short sVar10;
|
|
|
|
undefined8 *puVar11;
|
|
|
|
undefined4 uVar12;
|
|
|
|
undefined8 *puVar13;
|
|
|
|
undefined8 *puVar14;
|
|
|
|
undefined8 *puVar15;
|
|
|
|
undefined8 uVar16;
|
|
|
|
undefined8 uVar17;
|
|
|
|
|
|
|
|
if ((param_3 & 3) == 0) {
|
|
|
|
puVar13 = (undefined8 *)(param_4 * param_5 + (int)param_2);
|
|
|
|
for (; (int)param_2 < (int)puVar13; param_2 = (undefined8 *)((int)param_2 + param_5 * 2)) {
|
|
|
|
puVar14 = (undefined8 *)((int)param_2 + param_5);
|
|
|
|
puVar11 = param_1;
|
|
|
|
puVar15 = param_2;
|
|
|
|
while ((int)puVar15 < (int)((int)param_2 + param_3 * 4)) {
|
|
|
|
uVar16 = *puVar15;
|
|
|
|
uVar17 = *puVar14;
|
|
|
|
uVar1 = puVar15[1];
|
|
|
|
uVar2 = puVar14[1];
|
|
|
|
puVar15 = puVar15 + 2;
|
|
|
|
puVar14 = puVar14 + 2;
|
|
|
|
uVar16 = psraw(CONCAT26((ushort)(byte)((ulonglong)uVar16 >> 0x18) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar16 >> 0x38) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar17 >> 0x18) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar17 >> 0x38) + 2,
|
|
|
|
CONCAT24((ushort)(byte)((ulonglong)uVar16 >> 0x10) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar16 >> 0x30) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar17 >> 0x10) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar17 >> 0x30) + 2,
|
|
|
|
CONCAT22((ushort)(byte)((ulonglong)uVar16 >> 8) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar16 >> 0x28) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar17 >> 8) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar17 >> 0x28) + 2,
|
|
|
|
(ushort)(byte)uVar16 +
|
|
|
|
(ushort)(byte)((ulonglong)uVar16 >> 0x20) +
|
|
|
|
(ushort)(byte)uVar17 +
|
|
|
|
(ushort)(byte)((ulonglong)uVar17 >> 0x20) + 2))),2
|
|
|
|
);
|
|
|
|
uVar17 = psraw(CONCAT26((ushort)(byte)((ulonglong)uVar1 >> 0x18) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar1 >> 0x38) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar2 >> 0x18) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar2 >> 0x38) + 2,
|
|
|
|
CONCAT24((ushort)(byte)((ulonglong)uVar1 >> 0x10) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar1 >> 0x30) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar2 >> 0x10) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar2 >> 0x30) + 2,
|
|
|
|
CONCAT22((ushort)(byte)((ulonglong)uVar1 >> 8) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar1 >> 0x28) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar2 >> 8) +
|
|
|
|
(ushort)(byte)((ulonglong)uVar2 >> 0x28) + 2,
|
|
|
|
(ushort)(byte)uVar1 +
|
|
|
|
(ushort)(byte)((ulonglong)uVar1 >> 0x20) +
|
|
|
|
(ushort)(byte)uVar2 +
|
|
|
|
(ushort)(byte)((ulonglong)uVar2 >> 0x20) + 2))),2)
|
|
|
|
;
|
|
|
|
sVar3 = (short)uVar16;
|
|
|
|
sVar4 = (short)((ulonglong)uVar16 >> 0x10);
|
|
|
|
sVar5 = (short)((ulonglong)uVar16 >> 0x20);
|
|
|
|
sVar6 = (short)((ulonglong)uVar16 >> 0x30);
|
|
|
|
sVar7 = (short)uVar17;
|
|
|
|
sVar8 = (short)((ulonglong)uVar17 >> 0x10);
|
|
|
|
sVar9 = (short)((ulonglong)uVar17 >> 0x20);
|
|
|
|
sVar10 = (short)((ulonglong)uVar17 >> 0x30);
|
|
|
|
*puVar11 = CONCAT17((0 < sVar10) * (sVar10 < 0x100) * (char)((ulonglong)uVar17 >> 0x30) -
|
|
|
|
(0xff < sVar10),
|
|
|
|
CONCAT16((0 < sVar9) * (sVar9 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar17 >> 0x20) - (0xff < sVar9),
|
|
|
|
CONCAT15((0 < sVar8) * (sVar8 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar17 >> 0x10) - (0xff < sVar8),
|
|
|
|
CONCAT14((0 < sVar7) * (sVar7 < 0x100) * (char)uVar17
|
|
|
|
- (0xff < sVar7),
|
|
|
|
CONCAT13((0 < sVar6) * (sVar6 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar16 >> 0x30) -
|
|
|
|
(0xff < sVar6),
|
|
|
|
CONCAT12((0 < sVar5) *
|
|
|
|
(sVar5 < 0x100) *
|
|
|
|
(char)((ulonglong)uVar16 >>
|
|
|
|
0x20) -
|
|
|
|
(0xff < sVar5),
|
|
|
|
CONCAT11((0 < sVar4) *
|
|
|
|
(sVar4 < 0x100) *
|
|
|
|
(char)((ulonglong)
|
|
|
|
uVar16 >>
|
|
|
|
0x10) -
|
|
|
|
(0xff < sVar4),
|
|
|
|
(0 < sVar3) *
|
|
|
|
(sVar3 < 0x100) *
|
|
|
|
(char)uVar16 -
|
|
|
|
(0xff < sVar3)))))
|
|
|
|
)));
|
|
|
|
puVar11 = puVar11 + 1;
|
|
|
|
}
|
|
|
|
param_1 = (undefined8 *)((int)param_1 + param_6);
|
|
|
|
}
|
|
|
|
uVar12 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar12 = FUN_005f0165(param_1,param_2,param_3,param_4,param_5,param_6);
|
|
|
|
}
|
|
|
|
return uVar12;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f04b7 at 0x005F04B7 (size: 58) ---
|
|
|
|
|
|
void FUN_005f04b7(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_005ff68e();
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
PTR_FUN_00825c6c = FUN_005f0165;
|
|
|
|
PTR_FUN_00825c70 = FUN_005f02b1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
PTR_FUN_00825c6c = FUN_005f039d;
|
|
|
|
PTR_FUN_00825c70 = FUN_005f039d;
|
|
|
|
}
|
|
|
|
/* WARNING: Could not recover jumptable at 0x005f04eb. Too many branches */
|
|
|
|
/* WARNING: Treating indirect jump as call */
|
|
|
|
(*(code *)PTR_FUN_00825c6c)();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f04f1 at 0x005F04F1 (size: 49) ---
|
|
|
|
|
|
void FUN_005f04f1(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
code *UNRECOVERED_JUMPTABLE;
|
|
|
|
|
|
|
|
iVar1 = FUN_005ff68e();
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
PTR_FUN_00825c6c = FUN_005f0165;
|
|
|
|
UNRECOVERED_JUMPTABLE = FUN_005f02b1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
UNRECOVERED_JUMPTABLE = FUN_005f039d;
|
|
|
|
PTR_FUN_00825c6c = FUN_005f039d;
|
|
|
|
}
|
|
|
|
PTR_FUN_00825c70 = UNRECOVERED_JUMPTABLE;
|
|
|
|
/* WARNING: Could not recover jumptable at 0x005f0520. Too many branches */
|
|
|
|
/* WARNING: Treating indirect jump as call */
|
|
|
|
(*UNRECOVERED_JUMPTABLE)();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f0522 at 0x005F0522 (size: 34) ---
|
|
|
|
|
|
void __fastcall FUN_005f0522(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = *param_1;
|
|
|
|
(*(code *)PTR_FUN_00825c70)
|
|
|
|
(*(undefined4 *)(param_1[1] + 0x20),*(undefined4 *)(iVar1 + 0x20),
|
|
|
|
*(undefined4 *)(iVar1 + 0x68),*(undefined4 *)(iVar1 + 0x6c),
|
|
|
|
*(undefined4 *)(iVar1 + 0x60),*(undefined4 *)(param_1[1] + 0x60));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f0544 at 0x005F0544 (size: 308) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f0544(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
int iVar4;
|
|
|
|
ushort *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
ushort *puVar7;
|
|
|
|
uint uVar8;
|
|
|
|
ushort *puVar9;
|
|
|
|
ushort *puVar10;
|
|
|
|
ushort *puVar11;
|
|
|
|
ushort *puVar12;
|
|
|
|
|
|
|
|
iVar4 = *param_1;
|
|
|
|
puVar9 = *(ushort **)(param_1[1] + 0x20);
|
|
|
|
puVar5 = *(ushort **)(iVar4 + 0x20);
|
|
|
|
puVar11 = (ushort *)(*(int *)(iVar4 + 0x6c) * *(int *)(iVar4 + 0x60) + (int)puVar5);
|
|
|
|
for (; puVar5 < puVar11; puVar5 = puVar5 + *(int *)(iVar4 + 0x60)) {
|
|
|
|
iVar6 = *(int *)(iVar4 + 0x68);
|
|
|
|
puVar12 = (ushort *)(*(int *)(iVar4 + 0x60) + (int)puVar5);
|
|
|
|
puVar7 = puVar9;
|
|
|
|
for (puVar10 = puVar5; puVar10 < puVar5 + iVar6; puVar10 = puVar10 + 2) {
|
|
|
|
uVar8 = (uint)*puVar12;
|
|
|
|
uVar1 = puVar12[1];
|
|
|
|
uVar2 = puVar10[1];
|
|
|
|
uVar3 = *puVar10;
|
|
|
|
*puVar7 = ((ushort)((uint)(uVar1 & 0xf81f) + (uint)(uVar3 & 0xf81f) + (uVar8 & 0xfffff81f) +
|
|
|
|
0x1002 + (uint)(uVar2 & 0xf81f) >> 2) ^
|
|
|
|
(ushort)((uVar1 & 0xffff07e0) + (uVar3 & 0xffff07e0) + (uVar8 & 0xffff07e0) + 0x40 +
|
|
|
|
(uVar2 & 0xffff07e0) >> 2)) & 0x7e0 ^
|
|
|
|
(ushort)((uVar1 & 0xf81f) + (uVar3 & 0xf81f) + (uVar8 & 0xf81f) + 0x1002 +
|
|
|
|
(uVar2 & 0xf81f) >> 2);
|
|
|
|
puVar12 = puVar12 + 2;
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
}
|
|
|
|
puVar9 = (ushort *)((int)puVar9 + *(int *)(param_1[1] + 0x60));
|
|
|
|
iVar4 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f0678 at 0x005F0678 (size: 261) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f0678(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
int iVar3;
|
|
|
|
ushort *puVar4;
|
|
|
|
int iVar5;
|
|
|
|
ushort *puVar6;
|
|
|
|
ushort *puVar7;
|
|
|
|
ushort *puVar8;
|
|
|
|
ushort *puVar9;
|
|
|
|
ushort *puVar10;
|
|
|
|
|
|
|
|
iVar3 = *param_1;
|
|
|
|
puVar7 = *(ushort **)(param_1[1] + 0x20);
|
|
|
|
puVar4 = *(ushort **)(iVar3 + 0x20);
|
|
|
|
puVar9 = (ushort *)(*(int *)(iVar3 + 0x6c) * *(int *)(iVar3 + 0x60) + (int)puVar4);
|
|
|
|
for (; puVar4 < puVar9; puVar4 = puVar4 + *(int *)(iVar3 + 0x60)) {
|
|
|
|
iVar5 = *(int *)(iVar3 + 0x68);
|
|
|
|
puVar10 = (ushort *)(*(int *)(iVar3 + 0x60) + (int)puVar4);
|
|
|
|
puVar6 = puVar7;
|
|
|
|
for (puVar8 = puVar4; puVar8 < puVar4 + iVar5; puVar8 = puVar8 + 2) {
|
|
|
|
uVar2 = *puVar10;
|
|
|
|
puVar1 = puVar10 + 1;
|
|
|
|
puVar10 = puVar10 + 2;
|
|
|
|
*puVar6 = (ushort)((*puVar1 & 0xffff03e0) + (*puVar8 & 0xffff03e0) + (uVar2 & 0xffff03e0) +
|
|
|
|
0x40 + (puVar8[1] & 0xffff03e0) >> 2) & 0x3e0 |
|
|
|
|
(ushort)((*puVar1 & 0x7c1f) + (*puVar8 & 0x7c1f) + (uVar2 & 0x7c1f) + 0x802 +
|
|
|
|
(puVar8[1] & 0x7c1f) >> 2) & 0x7c1f;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
}
|
|
|
|
puVar7 = (ushort *)((int)puVar7 + *(int *)(param_1[1] + 0x60));
|
|
|
|
iVar3 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f077d at 0x005F077D (size: 297) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f077d(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
ushort *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
ushort *puVar4;
|
|
|
|
ushort *puVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
ushort *puVar8;
|
|
|
|
uint uVar9;
|
|
|
|
ushort *puVar10;
|
|
|
|
ushort *puVar11;
|
|
|
|
uint uVar12;
|
|
|
|
|
|
|
|
iVar1 = *param_1;
|
|
|
|
puVar2 = *(ushort **)(iVar1 + 0x20);
|
|
|
|
puVar10 = *(ushort **)(param_1[1] + 0x20);
|
|
|
|
puVar5 = (ushort *)(*(int *)(iVar1 + 0x6c) * *(int *)(iVar1 + 0x60) + (int)puVar2);
|
|
|
|
for (; puVar2 < puVar5; puVar2 = puVar2 + *(int *)(iVar1 + 0x60)) {
|
|
|
|
iVar3 = *(int *)(iVar1 + 0x68);
|
|
|
|
puVar11 = (ushort *)(*(int *)(iVar1 + 0x60) + (int)puVar2);
|
|
|
|
puVar4 = puVar10;
|
|
|
|
for (puVar8 = puVar2; puVar8 < puVar2 + iVar3; puVar8 = puVar8 + 2) {
|
|
|
|
uVar6 = (uint)puVar8[1];
|
|
|
|
uVar9 = (uint)puVar11[1];
|
|
|
|
uVar7 = (uint)*puVar11;
|
|
|
|
uVar12 = (uint)*puVar8;
|
|
|
|
puVar11 = puVar11 + 2;
|
|
|
|
*puVar4 = ((ushort)((uVar9 & 0x83e0) + (uVar12 & 0x83e0) + (uVar7 & 0x83e0) + 0x10040 +
|
|
|
|
(uVar6 & 0x83e0) >> 2) ^
|
|
|
|
(ushort)((uVar9 & 0x7c1f) + (uVar12 & 0x7c1f) + (uVar7 & 0x7c1f) + 0x802 +
|
|
|
|
(uVar6 & 0x7c1f) >> 2)) & 0x7c1f ^
|
|
|
|
(ushort)((uVar9 & 0x83e0) + (uVar12 & 0x83e0) + (uVar7 & 0x83e0) + 0x10040 +
|
|
|
|
(uVar6 & 0x83e0) >> 2);
|
|
|
|
puVar4 = puVar4 + 1;
|
|
|
|
}
|
|
|
|
puVar10 = (ushort *)((int)puVar10 + *(int *)(param_1[1] + 0x60));
|
|
|
|
iVar1 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f08a6 at 0x005F08A6 (size: 311) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f08a6(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
int iVar4;
|
|
|
|
ushort *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
ushort *puVar7;
|
|
|
|
uint uVar8;
|
|
|
|
ushort *puVar9;
|
|
|
|
ushort *puVar10;
|
|
|
|
ushort *puVar11;
|
|
|
|
ushort *puVar12;
|
|
|
|
|
|
|
|
iVar4 = *param_1;
|
|
|
|
puVar9 = *(ushort **)(param_1[1] + 0x20);
|
|
|
|
puVar5 = *(ushort **)(iVar4 + 0x20);
|
|
|
|
puVar11 = (ushort *)(*(int *)(iVar4 + 0x6c) * *(int *)(iVar4 + 0x60) + (int)puVar5);
|
|
|
|
for (; puVar5 < puVar11; puVar5 = puVar5 + *(int *)(iVar4 + 0x60)) {
|
|
|
|
iVar6 = *(int *)(iVar4 + 0x68);
|
|
|
|
puVar12 = (ushort *)(*(int *)(iVar4 + 0x60) + (int)puVar5);
|
|
|
|
puVar7 = puVar9;
|
|
|
|
for (puVar10 = puVar5; puVar10 < puVar5 + iVar6; puVar10 = puVar10 + 2) {
|
|
|
|
uVar8 = (uint)*puVar12;
|
|
|
|
uVar1 = puVar12[1];
|
|
|
|
uVar2 = puVar10[1];
|
|
|
|
uVar3 = *puVar10;
|
|
|
|
*puVar7 = ((ushort)((uint)(uVar1 & 0xf0f0) + (uint)(uVar3 & 0xf0f0) + (uVar8 & 0xfffff0f0) +
|
|
|
|
0x2020 + (uint)(uVar2 & 0xf0f0) >> 2) ^
|
|
|
|
(ushort)((uVar1 & 0xffff0f0f) + (uVar3 & 0xffff0f0f) + (uVar8 & 0xffff0f0f) + 0x202
|
|
|
|
+ (uVar2 & 0xffff0f0f) >> 2)) & 0xf0f ^
|
|
|
|
(ushort)((uVar1 & 0xf0f0) + (uVar3 & 0xf0f0) + (uVar8 & 0xf0f0) + 0x2020 +
|
|
|
|
(uVar2 & 0xf0f0) >> 2);
|
|
|
|
puVar12 = puVar12 + 2;
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
}
|
|
|
|
puVar9 = (ushort *)((int)puVar9 + *(int *)(param_1[1] + 0x60));
|
|
|
|
iVar4 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f09dd at 0x005F09DD (size: 286) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f09dd(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte bVar1;
|
|
|
|
byte bVar2;
|
|
|
|
byte bVar3;
|
|
|
|
int iVar4;
|
|
|
|
byte *pbVar5;
|
|
|
|
int iVar6;
|
|
|
|
byte *pbVar7;
|
|
|
|
uint uVar8;
|
|
|
|
byte *pbVar9;
|
|
|
|
byte *pbVar10;
|
|
|
|
byte *pbVar11;
|
|
|
|
byte *pbVar12;
|
|
|
|
|
|
|
|
pbVar9 = *(byte **)(param_1[1] + 0x20);
|
|
|
|
iVar4 = *param_1;
|
|
|
|
pbVar5 = *(byte **)(iVar4 + 0x20);
|
|
|
|
pbVar12 = pbVar5 + *(int *)(iVar4 + 0x6c) * *(int *)(iVar4 + 0x60);
|
|
|
|
for (; pbVar5 < pbVar12; pbVar5 = pbVar5 + *(int *)(iVar4 + 0x60) * 2) {
|
|
|
|
iVar6 = *(int *)(iVar4 + 0x68);
|
|
|
|
pbVar10 = pbVar5 + *(int *)(iVar4 + 0x60);
|
|
|
|
pbVar7 = pbVar9;
|
|
|
|
for (pbVar11 = pbVar5; pbVar11 < pbVar5 + iVar6; pbVar11 = pbVar11 + 2) {
|
|
|
|
uVar8 = (uint)*pbVar10;
|
|
|
|
bVar1 = pbVar10[1];
|
|
|
|
bVar2 = pbVar11[1];
|
|
|
|
bVar3 = *pbVar11;
|
|
|
|
*pbVar7 = ((byte)((bVar1 & 0x1c) + (bVar3 & 0x1c) + (uVar8 & 0x1c) + 8 + (bVar2 & 0x1c) >> 2)
|
|
|
|
^ (byte)((uint)(bVar1 & 0xe3) + (uint)(bVar3 & 0xe3) + (uVar8 & 0xffff00e3) + 0x42 +
|
|
|
|
(uint)(bVar2 & 0xe3) >> 2)) & 0x1c ^
|
|
|
|
(byte)((uint)(bVar1 & 0xe3) + (bVar3 & 0xffff00e3) + (uVar8 & 0xffff00e3) + 0x42 +
|
|
|
|
(uint)(bVar2 & 0xe3) >> 2);
|
|
|
|
pbVar10 = pbVar10 + 2;
|
|
|
|
pbVar7 = pbVar7 + 1;
|
|
|
|
}
|
|
|
|
pbVar9 = pbVar9 + *(int *)(param_1[1] + 0x60);
|
|
|
|
iVar4 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f0afb at 0x005F0AFB (size: 140) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f0afb(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
byte *pbVar2;
|
|
|
|
byte bVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined1 *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
byte *pbVar7;
|
|
|
|
undefined1 *puVar8;
|
|
|
|
byte *pbVar9;
|
|
|
|
byte *pbVar10;
|
|
|
|
|
|
|
|
puVar8 = *(undefined1 **)(param_1[1] + 0x20);
|
|
|
|
iVar6 = *param_1;
|
|
|
|
pbVar9 = *(byte **)(iVar6 + 0x20);
|
|
|
|
pbVar10 = pbVar9 + *(int *)(iVar6 + 0x6c) * *(int *)(iVar6 + 0x60);
|
|
|
|
for (; pbVar9 < pbVar10; pbVar9 = pbVar9 + *(int *)(iVar6 + 0x60) * 2) {
|
|
|
|
iVar4 = *(int *)(iVar6 + 0x68);
|
|
|
|
pbVar7 = pbVar9 + *(int *)(iVar6 + 0x60);
|
|
|
|
puVar5 = puVar8;
|
|
|
|
for (pbVar2 = pbVar9; pbVar2 < pbVar9 + iVar4; pbVar2 = pbVar2 + 2) {
|
|
|
|
pbVar1 = pbVar7 + 1;
|
|
|
|
bVar3 = *pbVar7;
|
|
|
|
pbVar7 = pbVar7 + 2;
|
|
|
|
*puVar5 = (char)((uint)*pbVar1 + (uint)pbVar2[1] + (uint)bVar3 + 2 + (uint)*pbVar2 >> 2);
|
|
|
|
puVar5 = puVar5 + 1;
|
|
|
|
}
|
|
|
|
puVar8 = puVar8 + *(int *)(param_1[1] + 0x60);
|
|
|
|
iVar6 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f0b87 at 0x005F0B87 (size: 302) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f0b87(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
int iVar4;
|
|
|
|
ushort *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
ushort *puVar7;
|
|
|
|
uint uVar8;
|
|
|
|
ushort *puVar9;
|
|
|
|
ushort *puVar10;
|
|
|
|
ushort *puVar11;
|
|
|
|
ushort *puVar12;
|
|
|
|
|
|
|
|
puVar9 = *(ushort **)(param_1[1] + 0x20);
|
|
|
|
iVar4 = *param_1;
|
|
|
|
puVar5 = *(ushort **)(iVar4 + 0x20);
|
|
|
|
puVar12 = (ushort *)(*(int *)(iVar4 + 0x6c) * *(int *)(iVar4 + 0x60) + (int)puVar5);
|
|
|
|
for (; puVar5 < puVar12; puVar5 = puVar5 + *(int *)(iVar4 + 0x60)) {
|
|
|
|
iVar6 = *(int *)(iVar4 + 0x68);
|
|
|
|
puVar10 = (ushort *)(*(int *)(iVar4 + 0x60) + (int)puVar5);
|
|
|
|
puVar7 = puVar9;
|
|
|
|
for (puVar11 = puVar5; puVar11 < puVar5 + iVar6; puVar11 = puVar11 + 2) {
|
|
|
|
uVar1 = puVar10[1];
|
|
|
|
uVar8 = (uint)*puVar10;
|
|
|
|
uVar2 = *puVar11;
|
|
|
|
uVar3 = puVar11[1];
|
|
|
|
*puVar7 = (byte)((byte)((uint)(uVar1 & 0xe3) + (uint)(uVar2 & 0xe3) + (uVar8 & 0xffff00e3) +
|
|
|
|
0x42 + (uint)(uVar3 & 0xe3) >> 2) ^
|
|
|
|
(byte)((uint)(uVar1 & 0xff1c) + (uVar2 & 0xffffff1c) + (uVar8 & 0xffffff1c) +
|
|
|
|
0x208 + (uint)(uVar3 & 0xff1c) >> 2)) & 0xe3 ^
|
|
|
|
(ushort)((uVar1 & 0xff1c) + (uVar2 & 0xff1c) + (uVar8 & 0xff1c) + 0x208 +
|
|
|
|
(uVar3 & 0xff1c) >> 2);
|
|
|
|
puVar10 = puVar10 + 2;
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
}
|
|
|
|
puVar9 = (ushort *)((int)puVar9 + *(int *)(param_1[1] + 0x60));
|
|
|
|
iVar4 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f0cb5 at 0x005F0CB5 (size: 265) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f0cb5(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
int iVar3;
|
|
|
|
ushort *puVar4;
|
|
|
|
int iVar5;
|
|
|
|
ushort *puVar6;
|
|
|
|
ushort *puVar7;
|
|
|
|
ushort *puVar8;
|
|
|
|
ushort *puVar9;
|
|
|
|
ushort *puVar10;
|
|
|
|
|
|
|
|
puVar10 = *(ushort **)(param_1[1] + 0x20);
|
|
|
|
iVar3 = *param_1;
|
|
|
|
puVar4 = *(ushort **)(iVar3 + 0x20);
|
|
|
|
puVar7 = (ushort *)(*(int *)(iVar3 + 0x6c) * *(int *)(iVar3 + 0x60) + (int)puVar4);
|
|
|
|
for (; puVar4 < puVar7; puVar4 = puVar4 + *(int *)(iVar3 + 0x60)) {
|
|
|
|
iVar5 = *(int *)(iVar3 + 0x68);
|
|
|
|
puVar9 = (ushort *)(*(int *)(iVar3 + 0x60) + (int)puVar4);
|
|
|
|
puVar6 = puVar10;
|
|
|
|
for (puVar8 = puVar4; puVar8 < puVar4 + iVar5; puVar8 = puVar8 + 2) {
|
|
|
|
puVar1 = puVar9 + 1;
|
|
|
|
uVar2 = *puVar9;
|
|
|
|
puVar9 = puVar9 + 2;
|
|
|
|
*puVar6 = (ushort)((*puVar1 & 0xffff00f0) + (*puVar8 & 0xffff00f0) + (uVar2 & 0xffff00f0) +
|
|
|
|
0x20 + (puVar8[1] & 0xffff00f0) >> 2) & 0xf0 |
|
|
|
|
(ushort)((*puVar1 & 0xffff0f0f) + (*puVar8 & 0xffff0f0f) + (uint)(uVar2 & 0xf0f) +
|
|
|
|
0x202 + (uint)(puVar8[1] & 0xf0f) >> 2) & 0xf0f;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
}
|
|
|
|
puVar10 = (ushort *)((int)puVar10 + *(int *)(param_1[1] + 0x60));
|
|
|
|
iVar3 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f0dbe at 0x005F0DBE (size: 302) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f0dbe(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
int iVar4;
|
|
|
|
ushort *puVar5;
|
|
|
|
int iVar6;
|
|
|
|
ushort *puVar7;
|
|
|
|
uint uVar8;
|
|
|
|
ushort *puVar9;
|
|
|
|
ushort *puVar10;
|
|
|
|
ushort *puVar11;
|
|
|
|
ushort *puVar12;
|
|
|
|
|
|
|
|
puVar9 = *(ushort **)(param_1[1] + 0x20);
|
|
|
|
iVar4 = *param_1;
|
|
|
|
puVar5 = *(ushort **)(iVar4 + 0x20);
|
|
|
|
puVar12 = (ushort *)(*(int *)(iVar4 + 0x6c) * *(int *)(iVar4 + 0x60) + (int)puVar5);
|
|
|
|
for (; puVar5 < puVar12; puVar5 = puVar5 + *(int *)(iVar4 + 0x60)) {
|
|
|
|
iVar6 = *(int *)(iVar4 + 0x68);
|
|
|
|
puVar10 = (ushort *)(*(int *)(iVar4 + 0x60) + (int)puVar5);
|
|
|
|
puVar7 = puVar9;
|
|
|
|
for (puVar11 = puVar5; puVar11 < puVar5 + iVar6; puVar11 = puVar11 + 2) {
|
|
|
|
uVar1 = puVar10[1];
|
|
|
|
uVar8 = (uint)*puVar10;
|
|
|
|
uVar2 = *puVar11;
|
|
|
|
uVar3 = puVar11[1];
|
|
|
|
*puVar7 = (ushort)(byte)((byte)((uint)(uVar1 & 0xff) + (uint)(uVar2 & 0xff) +
|
|
|
|
(uVar8 & 0xffff00ff) + 2 + (uint)(uVar3 & 0xff) >> 2) ^
|
|
|
|
(byte)((uint)(uVar1 & 0xff00) + (uVar2 & 0xffffff00) +
|
|
|
|
(uVar8 & 0xffffff00) + 0x200 + (uint)(uVar3 & 0xff00) >> 2)) ^
|
|
|
|
(ushort)((uVar1 & 0xff00) + (uVar2 & 0xff00) + (uVar8 & 0xff00) + 0x200 +
|
|
|
|
(uVar3 & 0xff00) >> 2);
|
|
|
|
puVar10 = puVar10 + 2;
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
}
|
|
|
|
puVar9 = (ushort *)((int)puVar9 + *(int *)(param_1[1] + 0x60));
|
|
|
|
iVar4 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f0eec at 0x005F0EEC (size: 286) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f0eec(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte bVar1;
|
|
|
|
byte bVar2;
|
|
|
|
byte bVar3;
|
|
|
|
int iVar4;
|
|
|
|
byte *pbVar5;
|
|
|
|
int iVar6;
|
|
|
|
byte *pbVar7;
|
|
|
|
uint uVar8;
|
|
|
|
byte *pbVar9;
|
|
|
|
byte *pbVar10;
|
|
|
|
byte *pbVar11;
|
|
|
|
byte *pbVar12;
|
|
|
|
|
|
|
|
pbVar9 = *(byte **)(param_1[1] + 0x20);
|
|
|
|
iVar4 = *param_1;
|
|
|
|
pbVar5 = *(byte **)(iVar4 + 0x20);
|
|
|
|
pbVar12 = pbVar5 + *(int *)(iVar4 + 0x6c) * *(int *)(iVar4 + 0x60);
|
|
|
|
for (; pbVar5 < pbVar12; pbVar5 = pbVar5 + *(int *)(iVar4 + 0x60) * 2) {
|
|
|
|
iVar6 = *(int *)(iVar4 + 0x68);
|
|
|
|
pbVar10 = pbVar5 + *(int *)(iVar4 + 0x60);
|
|
|
|
pbVar7 = pbVar9;
|
|
|
|
for (pbVar11 = pbVar5; pbVar11 < pbVar5 + iVar6; pbVar11 = pbVar11 + 2) {
|
|
|
|
uVar8 = (uint)*pbVar10;
|
|
|
|
bVar1 = pbVar10[1];
|
|
|
|
bVar2 = pbVar11[1];
|
|
|
|
bVar3 = *pbVar11;
|
|
|
|
*pbVar7 = ((byte)((bVar1 & 0xf) + (bVar3 & 0xf) + (uVar8 & 0xf) + 2 + (bVar2 & 0xf) >> 2) ^
|
|
|
|
(byte)((uint)(bVar1 & 0xf0) + (uint)(bVar3 & 0xf0) + (uVar8 & 0xffff00f0) + 0x20 +
|
|
|
|
(uint)(bVar2 & 0xf0) >> 2)) & 0xf ^
|
|
|
|
(byte)((uint)(bVar1 & 0xf0) + (bVar3 & 0xffff00f0) + (uVar8 & 0xffff00f0) + 0x20 +
|
|
|
|
(uint)(bVar2 & 0xf0) >> 2);
|
|
|
|
pbVar10 = pbVar10 + 2;
|
|
|
|
pbVar7 = pbVar7 + 1;
|
|
|
|
}
|
|
|
|
pbVar9 = pbVar9 + *(int *)(param_1[1] + 0x60);
|
|
|
|
iVar4 = *param_1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f100a at 0x005F100A (size: 266) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f100a(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
undefined4 *puVar7;
|
|
|
|
int *piVar8;
|
|
|
|
undefined4 *puVar9;
|
|
|
|
int iVar10;
|
|
|
|
int *piVar11;
|
|
|
|
undefined4 *puVar12;
|
|
|
|
bool bVar13;
|
|
|
|
uint local_c;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
iVar4 = param_1[1];
|
|
|
|
iVar10 = *param_1;
|
|
|
|
if ((*(int *)(iVar4 + 4) != *(int *)(iVar10 + 4)) || (*(int *)(iVar10 + 0x18) != 0)) {
|
|
|
|
return 0x80004005;
|
|
|
|
}
|
|
|
|
if ((((*(int *)(iVar4 + 0x68) == *(int *)(iVar10 + 0x68)) &&
|
|
|
|
(*(int *)(iVar4 + 0x6c) == *(int *)(iVar10 + 0x6c))) &&
|
|
|
|
(*(int *)(iVar4 + 0x70) == *(int *)(iVar10 + 0x70))) &&
|
|
|
|
(*(int *)(iVar4 + 0x10) == *(int *)(iVar10 + 0x10))) {
|
|
|
|
if (*(int *)(iVar4 + 0xc) == 0) {
|
|
|
|
uVar1 = FUN_005f000d();
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
if (*(int *)(iVar4 + 0x1c) != 0) {
|
|
|
|
if (*(int **)(iVar4 + 0x38) != *(int **)(iVar10 + 0x38)) {
|
|
|
|
iVar3 = 0x100;
|
|
|
|
bVar13 = true;
|
|
|
|
piVar8 = *(int **)(iVar4 + 0x38);
|
|
|
|
piVar11 = *(int **)(iVar10 + 0x38);
|
|
|
|
do {
|
|
|
|
if (iVar3 == 0) break;
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
bVar13 = *piVar8 == *piVar11;
|
|
|
|
piVar8 = piVar8 + 1;
|
|
|
|
piVar11 = piVar11 + 1;
|
|
|
|
} while (bVar13);
|
|
|
|
if (!bVar13) goto LAB_005f110a;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(undefined4 *)(iVar4 + 0x10) = 0;
|
|
|
|
*(undefined4 *)(*param_1 + 0x10) = 0;
|
|
|
|
iVar4 = param_1[1];
|
|
|
|
local_8 = 0;
|
|
|
|
if (*(int *)(iVar4 + 0x70) != 0) {
|
|
|
|
iVar10 = *param_1;
|
|
|
|
uVar6 = *(uint *)(iVar4 + 0x6c);
|
|
|
|
do {
|
|
|
|
puVar2 = (undefined4 *)(*(int *)(param_1[1] + 100) * local_8 + *(int *)(param_1[1] + 0x20));
|
|
|
|
puVar7 = (undefined4 *)(*(int *)(iVar10 + 100) * local_8 + *(int *)(iVar10 + 0x20));
|
|
|
|
local_c = 0;
|
|
|
|
if (uVar6 != 0) {
|
|
|
|
do {
|
|
|
|
uVar6 = *(uint *)(iVar4 + 0x74);
|
|
|
|
puVar9 = puVar7;
|
|
|
|
puVar12 = puVar2;
|
|
|
|
for (uVar5 = uVar6 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) {
|
|
|
|
*puVar12 = *puVar9;
|
|
|
|
puVar9 = puVar9 + 1;
|
|
|
|
puVar12 = puVar12 + 1;
|
|
|
|
}
|
|
|
|
for (uVar6 = uVar6 & 3; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
|
|
*(undefined1 *)puVar12 = *(undefined1 *)puVar9;
|
|
|
|
puVar9 = (undefined4 *)((int)puVar9 + 1);
|
|
|
|
puVar12 = (undefined4 *)((int)puVar12 + 1);
|
|
|
|
}
|
|
|
|
iVar4 = param_1[1];
|
|
|
|
iVar10 = *param_1;
|
|
|
|
puVar2 = (undefined4 *)((int)puVar2 + *(int *)(iVar4 + 0x60));
|
|
|
|
puVar7 = (undefined4 *)((int)puVar7 + *(int *)(iVar10 + 0x60));
|
|
|
|
local_c = local_c + 1;
|
|
|
|
uVar6 = *(uint *)(iVar4 + 0x6c);
|
|
|
|
} while (local_c < uVar6);
|
|
|
|
}
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
iVar4 = param_1[1];
|
|
|
|
} while (local_8 < *(uint *)(iVar4 + 0x70));
|
|
|
|
}
|
|
|
|
uVar1 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
LAB_005f110a:
|
|
|
|
uVar1 = 0x80004005;
|
|
|
|
}
|
|
|
|
return uVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f1114 at 0x005F1114 (size: 211) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f1114(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
void *local_8;
|
|
|
|
|
|
|
|
iVar1 = param_1[1];
|
|
|
|
iVar2 = *param_1;
|
|
|
|
iVar3 = *(int *)(iVar1 + 0x68);
|
|
|
|
if (((iVar3 == *(int *)(iVar2 + 0x68)) && (*(int *)(iVar1 + 0x6c) == *(int *)(iVar2 + 0x6c))) &&
|
|
|
|
(*(int *)(iVar1 + 0x70) == *(int *)(iVar2 + 0x70))) {
|
|
|
|
local_8 = (void *)FUN_005df0f5(iVar3 << 4);
|
|
|
|
if (local_8 == (void *)0x0) {
|
|
|
|
local_8 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_8,0x10,iVar3,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_8 != (void *)0x0) {
|
|
|
|
if ((*(int *)(param_1[1] + 0x10) != 0) && (*(int *)(*param_1 + 0x10) != 0)) {
|
|
|
|
*(undefined4 *)(param_1[1] + 0x10) = 0;
|
|
|
|
*(undefined4 *)(*param_1 + 0x10) = 0;
|
|
|
|
}
|
|
|
|
uVar5 = 0;
|
|
|
|
if (*(int *)(param_1[1] + 0x70) != 0) {
|
|
|
|
uVar4 = *(uint *)(param_1[1] + 0x6c);
|
|
|
|
do {
|
|
|
|
uVar6 = 0;
|
|
|
|
if (uVar4 != 0) {
|
|
|
|
do {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(uVar6,uVar5,local_8);
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(uVar6,uVar5,local_8);
|
|
|
|
uVar4 = *(uint *)(param_1[1] + 0x6c);
|
|
|
|
uVar6 = uVar6 + 1;
|
|
|
|
} while (uVar6 < uVar4);
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
} while (uVar5 < *(uint *)(param_1[1] + 0x70));
|
|
|
|
}
|
|
|
|
operator_delete(local_8);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0x80004005;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f11e7 at 0x005F11E7 (size: 467) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f11e7(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint local_18;
|
|
|
|
uint local_14;
|
|
|
|
undefined4 *local_10;
|
|
|
|
uint local_c;
|
|
|
|
undefined4 *local_8;
|
|
|
|
|
|
|
|
if ((char)param_1[2] == '\x01') {
|
|
|
|
iVar3 = param_1[1];
|
|
|
|
iVar1 = *param_1;
|
|
|
|
local_10 = (undefined4 *)*(uint *)(iVar3 + 0x68);
|
|
|
|
if (*(uint *)(iVar3 + 0x68) <= *(uint *)(iVar1 + 0x68)) {
|
|
|
|
local_10 = (undefined4 *)*(uint *)(iVar1 + 0x68);
|
|
|
|
}
|
|
|
|
local_18 = *(uint *)(iVar3 + 0x6c);
|
|
|
|
if (*(uint *)(iVar1 + 0x6c) <= *(uint *)(iVar3 + 0x6c)) {
|
|
|
|
local_18 = *(uint *)(iVar1 + 0x6c);
|
|
|
|
}
|
|
|
|
local_14 = *(uint *)(iVar3 + 0x70);
|
|
|
|
if (*(uint *)(iVar1 + 0x70) <= *(uint *)(iVar3 + 0x70)) {
|
|
|
|
local_14 = *(uint *)(iVar1 + 0x70);
|
|
|
|
}
|
|
|
|
uVar4 = (int)local_10 << 4;
|
|
|
|
local_8 = (undefined4 *)FUN_005df0f5(uVar4);
|
|
|
|
if (local_8 == (undefined4 *)0x0) {
|
|
|
|
local_8 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_8,0x10,local_10,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_8 == (undefined4 *)0x0) {
|
|
|
|
uVar2 = 0x80004005;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = *(int *)(param_1[1] + 0x68);
|
|
|
|
local_10 = (undefined4 *)FUN_005df0f5(iVar3 << 4);
|
|
|
|
if (local_10 == (undefined4 *)0x0) {
|
|
|
|
local_10 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_10,0x10,iVar3,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_10 == (undefined4 *)0x0) {
|
|
|
|
operator_delete(local_8);
|
|
|
|
uVar2 = 0x80004005;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar5 = local_8;
|
|
|
|
for (uVar4 = uVar4 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*puVar5 = 0;
|
|
|
|
puVar5 = puVar5 + 1;
|
|
|
|
}
|
|
|
|
for (iVar3 = 0; iVar3 != 0; iVar3 = iVar3 + -1) {
|
|
|
|
*(undefined1 *)puVar5 = 0;
|
|
|
|
puVar5 = (undefined4 *)((int)puVar5 + 1);
|
|
|
|
}
|
|
|
|
puVar5 = local_10;
|
|
|
|
for (uVar4 = (uint)(*(int *)(param_1[1] + 0x68) << 4) >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*puVar5 = 0;
|
|
|
|
puVar5 = puVar5 + 1;
|
|
|
|
}
|
|
|
|
for (iVar3 = 0; iVar3 != 0; iVar3 = iVar3 + -1) {
|
|
|
|
*(undefined1 *)puVar5 = 0;
|
|
|
|
puVar5 = (undefined4 *)((int)puVar5 + 1);
|
|
|
|
}
|
|
|
|
if ((*(int *)(param_1[1] + 0x10) != 0) && (*(int *)(*param_1 + 0x10) != 0)) {
|
|
|
|
*(undefined4 *)(param_1[1] + 0x10) = 0;
|
|
|
|
*(undefined4 *)(*param_1 + 0x10) = 0;
|
|
|
|
}
|
|
|
|
local_c = 0;
|
|
|
|
if (local_14 != 0) {
|
|
|
|
do {
|
|
|
|
uVar4 = 0;
|
|
|
|
if (local_18 != 0) {
|
|
|
|
do {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(uVar4,local_c,local_8);
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(uVar4,local_c,local_8);
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < local_18);
|
|
|
|
}
|
|
|
|
uVar4 = local_18;
|
|
|
|
if (local_18 < *(uint *)(param_1[1] + 0x6c)) {
|
|
|
|
do {
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(uVar4,local_c,local_10);
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < *(uint *)(param_1[1] + 0x6c));
|
|
|
|
}
|
|
|
|
local_c = local_c + 1;
|
|
|
|
} while (local_c < local_14);
|
|
|
|
}
|
|
|
|
if (local_14 < *(uint *)(param_1[1] + 0x70)) {
|
|
|
|
uVar4 = *(uint *)(param_1[1] + 0x6c);
|
|
|
|
do {
|
|
|
|
uVar6 = 0;
|
|
|
|
if (uVar4 != 0) {
|
|
|
|
do {
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(uVar6,local_14,local_10);
|
|
|
|
uVar4 = *(uint *)(param_1[1] + 0x6c);
|
|
|
|
uVar6 = uVar6 + 1;
|
|
|
|
} while (uVar6 < uVar4);
|
|
|
|
}
|
|
|
|
local_14 = local_14 + 1;
|
|
|
|
} while (local_14 < *(uint *)(param_1[1] + 0x70));
|
|
|
|
}
|
|
|
|
operator_delete(local_8);
|
|
|
|
operator_delete(local_10);
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar2 = 0x80004005;
|
|
|
|
}
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f13ba at 0x005F13BA (size: 470) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f13ba(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
undefined4 uVar7;
|
|
|
|
int iVar8;
|
|
|
|
undefined4 *puVar9;
|
|
|
|
undefined4 *puVar10;
|
|
|
|
uint local_28;
|
|
|
|
uint local_24;
|
|
|
|
uint local_20;
|
|
|
|
uint local_1c;
|
|
|
|
uint local_18;
|
|
|
|
uint local_14;
|
|
|
|
uint local_10;
|
|
|
|
undefined4 *local_c;
|
|
|
|
void *local_8;
|
|
|
|
|
|
|
|
if ((char)param_1[2] == '\x02') {
|
|
|
|
iVar1 = *(int *)(*param_1 + 0x68);
|
|
|
|
local_8 = (void *)FUN_005df0f5(iVar1 << 4);
|
|
|
|
if (local_8 == (void *)0x0) {
|
|
|
|
local_8 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_8,0x10,iVar1,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_8 == (void *)0x0) {
|
|
|
|
uVar7 = 0x8007000e;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = *(int *)(param_1[1] + 0x68);
|
|
|
|
local_c = (undefined4 *)FUN_005df0f5(iVar1 << 4);
|
|
|
|
if (local_c == (undefined4 *)0x0) {
|
|
|
|
local_c = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_c,0x10,iVar1,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_c == (undefined4 *)0x0) {
|
|
|
|
operator_delete(local_8);
|
|
|
|
uVar7 = 0x8007000e;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((*(int *)(param_1[1] + 0x10) != 0) && (*(int *)(*param_1 + 0x10) != 0)) {
|
|
|
|
*(undefined4 *)(param_1[1] + 0x10) = 0;
|
|
|
|
*(undefined4 *)(*param_1 + 0x10) = 0;
|
|
|
|
}
|
|
|
|
iVar1 = *param_1;
|
|
|
|
iVar8 = param_1[1];
|
|
|
|
iVar2 = *(int *)(iVar1 + 0x68);
|
|
|
|
uVar3 = *(uint *)(iVar8 + 0x68);
|
|
|
|
local_20 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
iVar4 = *(int *)(iVar1 + 0x6c);
|
|
|
|
uVar5 = *(uint *)(iVar8 + 0x6c);
|
|
|
|
iVar1 = *(int *)(iVar1 + 0x70);
|
|
|
|
uVar6 = *(uint *)(iVar8 + 0x70);
|
|
|
|
if (*(int *)(iVar8 + 0x70) != 0) {
|
|
|
|
do {
|
|
|
|
local_24 = 0xffffffff;
|
|
|
|
local_28 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
if (*(int *)(iVar8 + 0x6c) != 0) {
|
|
|
|
do {
|
|
|
|
local_18 = 0;
|
|
|
|
local_1c = 0;
|
|
|
|
if (((local_24 ^ local_28) & 0xffff0000) != 0) {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(local_28 >> 0x10,local_20 >> 0x10,local_8);
|
|
|
|
local_24 = local_28;
|
|
|
|
}
|
|
|
|
puVar9 = local_c;
|
|
|
|
if (*(int *)(param_1[1] + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
puVar10 = (undefined4 *)((local_18 >> 0x10) * 0x10 + (int)local_8);
|
|
|
|
local_1c = local_1c + 1;
|
|
|
|
*puVar9 = *puVar10;
|
|
|
|
puVar9[1] = puVar10[1];
|
|
|
|
puVar9[2] = puVar10[2];
|
|
|
|
puVar9[3] = puVar10[3];
|
|
|
|
puVar9 = puVar9 + 4;
|
|
|
|
local_18 = local_18 + (uint)(iVar2 << 0x10) / uVar3;
|
|
|
|
} while (local_1c < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(local_10,local_14,local_c);
|
|
|
|
local_28 = local_28 + (uint)(iVar4 << 0x10) / uVar5;
|
|
|
|
local_10 = local_10 + 1;
|
|
|
|
} while (local_10 < *(uint *)(param_1[1] + 0x6c));
|
|
|
|
}
|
|
|
|
local_20 = local_20 + (uint)(iVar1 << 0x10) / uVar6;
|
|
|
|
local_14 = local_14 + 1;
|
|
|
|
iVar8 = param_1[1];
|
|
|
|
} while (local_14 < *(uint *)(iVar8 + 0x70));
|
|
|
|
}
|
|
|
|
operator_delete(local_8);
|
|
|
|
operator_delete(local_c);
|
|
|
|
uVar7 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar7 = 0x80004005;
|
|
|
|
}
|
|
|
|
return uVar7;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f1590 at 0x005F1590 (size: 932) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __fastcall FUN_005f1590(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
float fVar13;
|
|
|
|
float fVar14;
|
|
|
|
int iVar15;
|
|
|
|
float fVar16;
|
|
|
|
undefined4 uVar17;
|
|
|
|
void *pvVar18;
|
|
|
|
void *pvVar19;
|
|
|
|
float *pfVar20;
|
|
|
|
float *pfVar21;
|
|
|
|
float *pfVar22;
|
|
|
|
float *pfVar23;
|
|
|
|
uint uVar24;
|
|
|
|
int iVar25;
|
|
|
|
void *local_1c;
|
|
|
|
float *local_18;
|
|
|
|
float *local_14;
|
|
|
|
uint local_10;
|
|
|
|
void *local_8;
|
|
|
|
|
|
|
|
if ((char)param_1[2] != '\x05') {
|
|
|
|
return 0x80004005;
|
|
|
|
}
|
|
|
|
iVar25 = *param_1;
|
|
|
|
uVar24 = *(uint *)(iVar25 + 0x68);
|
|
|
|
iVar15 = param_1[1];
|
|
|
|
if ((((*(uint *)(iVar15 + 0x68) != uVar24 >> 1) &&
|
|
|
|
((*(uint *)(iVar15 + 0x68) != 1 || (uVar24 != 1)))) ||
|
|
|
|
((*(uint *)(iVar15 + 0x6c) != *(uint *)(iVar25 + 0x6c) >> 1 &&
|
|
|
|
((*(uint *)(iVar15 + 0x6c) != 1 || (*(int *)(iVar25 + 0x6c) != 1)))))) ||
|
|
|
|
((*(int *)(iVar15 + 0x70) != 1 || (*(int *)(iVar25 + 0x70) != 1)))) {
|
|
|
|
return 0x80004005;
|
|
|
|
}
|
|
|
|
if ((1 < uVar24) && ((uVar24 & 1) != 0)) {
|
|
|
|
*(uint *)(iVar25 + 0x68) = *(uint *)(iVar25 + 0x68) & 0xfffffffe;
|
|
|
|
piVar1 = (int *)(*param_1 + 0x74);
|
|
|
|
*piVar1 = *piVar1 - *(int *)(*param_1 + 0x78);
|
|
|
|
}
|
|
|
|
if (1 < *(uint *)(*param_1 + 0x6c)) {
|
|
|
|
puVar2 = (uint *)(*param_1 + 0x6c);
|
|
|
|
*puVar2 = *puVar2 & 0xfffffffe;
|
|
|
|
}
|
|
|
|
if ((*(byte *)((int)param_1 + 10) & 8) != 0) goto switchD_005f167b_caseD_14;
|
|
|
|
iVar25 = *param_1;
|
|
|
|
iVar15 = *(int *)(iVar25 + 4);
|
|
|
|
if ((((iVar15 != *(int *)(param_1[1] + 4)) || (*(uint *)(iVar25 + 0x68) < 2)) ||
|
|
|
|
(*(uint *)(iVar25 + 0x6c) < 2)) ||
|
|
|
|
((*(int *)(param_1[1] + 0x10) != 0 || (*(int *)(iVar25 + 0x10) != 0))))
|
|
|
|
goto switchD_005f167b_caseD_14;
|
|
|
|
if (iVar15 < 0x1e) {
|
|
|
|
if (iVar15 == 0x1d) {
|
|
|
|
iVar25 = FUN_005f0b87();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
switch(iVar15) {
|
|
|
|
default:
|
|
|
|
goto switchD_005f167b_caseD_14;
|
|
|
|
case 0x15:
|
|
|
|
switchD_005f167b_caseD_15:
|
|
|
|
iVar25 = FUN_005f028f();
|
|
|
|
break;
|
|
|
|
case 0x16:
|
|
|
|
switchD_005f167b_caseD_16:
|
|
|
|
iVar25 = FUN_005f0522();
|
|
|
|
break;
|
|
|
|
case 0x17:
|
|
|
|
iVar25 = FUN_005f0544();
|
|
|
|
break;
|
|
|
|
case 0x18:
|
|
|
|
iVar25 = FUN_005f0678();
|
|
|
|
break;
|
|
|
|
case 0x19:
|
|
|
|
iVar25 = FUN_005f077d();
|
|
|
|
break;
|
|
|
|
case 0x1a:
|
|
|
|
iVar25 = FUN_005f08a6();
|
|
|
|
break;
|
|
|
|
case 0x1b:
|
|
|
|
iVar25 = FUN_005f09dd();
|
|
|
|
break;
|
|
|
|
case 0x1c:
|
|
|
|
switchD_005f167b_caseD_1c:
|
|
|
|
iVar25 = FUN_005f0afb();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar15 < 0x2a) {
|
|
|
|
if (iVar15 == 0x29) goto switchD_005f167b_caseD_14;
|
|
|
|
if (iVar15 != 0x1e) {
|
|
|
|
if (iVar15 != 0x20) {
|
|
|
|
if (iVar15 != 0x21) goto switchD_005f167b_caseD_14;
|
|
|
|
goto switchD_005f167b_caseD_16;
|
|
|
|
}
|
|
|
|
goto switchD_005f167b_caseD_15;
|
|
|
|
}
|
|
|
|
iVar25 = FUN_005f0cb5();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar15 == 0x32) goto switchD_005f167b_caseD_1c;
|
|
|
|
if (iVar15 == 0x33) {
|
|
|
|
iVar25 = FUN_005f0dbe();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar15 != 0x34) goto switchD_005f167b_caseD_14;
|
|
|
|
iVar25 = FUN_005f0eec();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (-1 < iVar25) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
switchD_005f167b_caseD_14:
|
|
|
|
iVar25 = *(int *)(param_1[1] + 0x68);
|
|
|
|
local_14 = (float *)FUN_005df0f5(iVar25 << 4);
|
|
|
|
if (local_14 == (float *)0x0) {
|
|
|
|
local_14 = (float *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_14,0x10,iVar25,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_14 == (float *)0x0) {
|
|
|
|
uVar17 = 0x8007000e;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar25 = *(int *)(*param_1 + 0x68);
|
|
|
|
if (*(int *)(*param_1 + 0x6c) == 1) {
|
|
|
|
local_8 = (void *)FUN_005df0f5(iVar25 << 4);
|
|
|
|
if (local_8 == (void *)0x0) {
|
|
|
|
local_8 = (void *)0x0;
|
|
|
|
pvVar18 = local_8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_8,0x10,iVar25,&LAB_005eda5e);
|
|
|
|
pvVar18 = local_8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = (void *)FUN_005df0f5(iVar25 << 5);
|
|
|
|
if (local_8 == (void *)0x0) {
|
|
|
|
local_8 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_8,0x10,iVar25 << 1,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
pvVar18 = (void *)(*(int *)(*param_1 + 0x68) * 0x10 + (int)local_8);
|
|
|
|
}
|
|
|
|
if (local_8 == (void *)0x0) {
|
|
|
|
uVar17 = 0x8007000e;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pvVar19 = pvVar18;
|
|
|
|
local_1c = local_8;
|
|
|
|
if (*(int *)(*param_1 + 0x68) != 1) {
|
|
|
|
local_1c = (void *)((int)local_8 + 0x10);
|
|
|
|
pvVar19 = (void *)((int)pvVar18 + 0x10);
|
|
|
|
}
|
|
|
|
local_10 = 0;
|
|
|
|
if (*(int *)(param_1[1] + 0x6c) != 0) {
|
|
|
|
do {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(local_10 * 2,0,local_8);
|
|
|
|
if (pvVar18 != local_8) {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(local_10 * 2 + 1,0,pvVar18);
|
|
|
|
}
|
|
|
|
fVar16 = _DAT_007c97cc;
|
|
|
|
uVar24 = 0;
|
|
|
|
if (*(int *)(param_1[1] + 0x68) != 0) {
|
|
|
|
local_18 = local_14;
|
|
|
|
do {
|
|
|
|
iVar25 = uVar24 * 0x20;
|
|
|
|
pfVar20 = (float *)((int)local_1c + iVar25);
|
|
|
|
pfVar23 = (float *)((int)local_8 + iVar25);
|
|
|
|
fVar3 = pfVar20[1];
|
|
|
|
fVar4 = pfVar23[1];
|
|
|
|
fVar5 = pfVar20[2];
|
|
|
|
fVar6 = pfVar23[2];
|
|
|
|
fVar7 = pfVar20[3];
|
|
|
|
fVar8 = pfVar23[3];
|
|
|
|
pfVar21 = (float *)((int)pvVar18 + iVar25);
|
|
|
|
fVar9 = pfVar21[1];
|
|
|
|
fVar10 = pfVar21[2];
|
|
|
|
fVar11 = pfVar21[3];
|
|
|
|
pfVar22 = (float *)((int)pvVar19 + iVar25);
|
|
|
|
uVar24 = uVar24 + 1;
|
|
|
|
fVar12 = pfVar22[1];
|
|
|
|
fVar13 = pfVar22[2];
|
|
|
|
fVar14 = pfVar22[3];
|
|
|
|
*local_18 = (*pfVar20 + *pfVar23 + *pfVar21 + *pfVar22) * fVar16;
|
|
|
|
local_18[1] = (fVar3 + fVar4 + fVar9 + fVar12) * fVar16;
|
|
|
|
local_18[2] = (fVar5 + fVar6 + fVar10 + fVar13) * fVar16;
|
|
|
|
local_18[3] = (fVar7 + fVar8 + fVar11 + fVar14) * fVar16;
|
|
|
|
local_18 = local_18 + 4;
|
|
|
|
} while (uVar24 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(local_10,0,local_14);
|
|
|
|
local_10 = local_10 + 1;
|
|
|
|
} while (local_10 < *(uint *)(param_1[1] + 0x6c));
|
|
|
|
}
|
|
|
|
operator_delete(local_8);
|
|
|
|
uVar17 = 0;
|
|
|
|
}
|
|
|
|
operator_delete(local_14);
|
|
|
|
}
|
|
|
|
return uVar17;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f1958 at 0x005F1958 (size: 1032) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __fastcall FUN_005f1958(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float *pfVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
float fVar13;
|
|
|
|
float fVar14;
|
|
|
|
float fVar15;
|
|
|
|
float fVar16;
|
|
|
|
float fVar17;
|
|
|
|
float fVar18;
|
|
|
|
float fVar19;
|
|
|
|
float fVar20;
|
|
|
|
float fVar21;
|
|
|
|
float fVar22;
|
|
|
|
float fVar23;
|
|
|
|
float fVar24;
|
|
|
|
float fVar25;
|
|
|
|
float fVar26;
|
|
|
|
uint uVar27;
|
|
|
|
int iVar28;
|
|
|
|
float fVar29;
|
|
|
|
undefined4 uVar30;
|
|
|
|
void *pvVar31;
|
|
|
|
void *pvVar32;
|
|
|
|
int iVar33;
|
|
|
|
float *pfVar34;
|
|
|
|
int *piVar35;
|
|
|
|
float *pfVar36;
|
|
|
|
float *pfVar37;
|
|
|
|
float *pfVar38;
|
|
|
|
float *pfVar39;
|
|
|
|
float *pfVar40;
|
|
|
|
void *pvVar41;
|
|
|
|
float *pfVar42;
|
|
|
|
void *pvVar43;
|
|
|
|
void *local_34;
|
|
|
|
void *local_30;
|
|
|
|
float *local_2c;
|
|
|
|
uint local_20;
|
|
|
|
void *local_1c;
|
|
|
|
uint local_18;
|
|
|
|
float *local_14;
|
|
|
|
uint local_c;
|
|
|
|
void *local_8;
|
|
|
|
|
|
|
|
if ((char)param_1[2] == '\x05') {
|
|
|
|
iVar33 = *param_1;
|
|
|
|
uVar27 = *(uint *)(iVar33 + 0x68);
|
|
|
|
iVar28 = param_1[1];
|
|
|
|
if ((((*(uint *)(iVar28 + 0x68) == uVar27 >> 1) ||
|
|
|
|
((*(uint *)(iVar28 + 0x68) == 1 && (uVar27 == 1)))) &&
|
|
|
|
((*(uint *)(iVar28 + 0x6c) == *(uint *)(iVar33 + 0x6c) >> 1 ||
|
|
|
|
((*(uint *)(iVar28 + 0x6c) == 1 && (*(int *)(iVar33 + 0x6c) == 1)))))) &&
|
|
|
|
(*(uint *)(iVar28 + 0x70) == *(uint *)(iVar33 + 0x70) >> 1)) {
|
|
|
|
if ((1 < uVar27) && ((uVar27 & 1) != 0)) {
|
|
|
|
*(uint *)(iVar33 + 0x68) = *(uint *)(iVar33 + 0x68) & 0xfffffffe;
|
|
|
|
piVar35 = (int *)(*param_1 + 0x74);
|
|
|
|
*piVar35 = *piVar35 - *(int *)(*param_1 + 0x78);
|
|
|
|
}
|
|
|
|
if (1 < *(uint *)(*param_1 + 0x6c)) {
|
|
|
|
puVar1 = (uint *)(*param_1 + 0x6c);
|
|
|
|
*puVar1 = *puVar1 & 0xfffffffe;
|
|
|
|
}
|
|
|
|
if (1 < *(uint *)(*param_1 + 0x70)) {
|
|
|
|
puVar1 = (uint *)(*param_1 + 0x70);
|
|
|
|
*puVar1 = *puVar1 & 0xfffffffe;
|
|
|
|
}
|
|
|
|
iVar33 = *(int *)(param_1[1] + 0x68);
|
|
|
|
local_14 = (float *)FUN_005df0f5(iVar33 << 4);
|
|
|
|
if (local_14 == (float *)0x0) {
|
|
|
|
local_14 = (float *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_14,0x10,iVar33,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_14 == (float *)0x0) {
|
|
|
|
uVar30 = 0x8007000e;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar33 = *(int *)(*param_1 + 0x68);
|
|
|
|
if (*(int *)(*param_1 + 0x6c) == 1) {
|
|
|
|
local_8 = (void *)FUN_005df0f5(iVar33 << 5);
|
|
|
|
if (local_8 == (void *)0x0) {
|
|
|
|
local_8 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_8,0x10,iVar33 << 1,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
piVar35 = (int *)(*param_1 + 0x68);
|
|
|
|
pvVar43 = (void *)(*piVar35 * 0x10 + (int)local_8);
|
|
|
|
local_1c = local_8;
|
|
|
|
pvVar31 = pvVar43;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = (void *)FUN_005df0f5(iVar33 << 6);
|
|
|
|
if (local_8 == (void *)0x0) {
|
|
|
|
local_8 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_8,0x10,iVar33 << 2,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
piVar35 = (int *)(*param_1 + 0x68);
|
|
|
|
iVar33 = *piVar35;
|
|
|
|
pvVar31 = (void *)(iVar33 * 0x10 + (int)local_8);
|
|
|
|
local_1c = (void *)(iVar33 * 0x20 + (int)local_8);
|
|
|
|
pvVar43 = (void *)(iVar33 * 0x30 + (int)local_8);
|
|
|
|
}
|
|
|
|
if (local_8 == (void *)0x0) {
|
|
|
|
uVar30 = 0x8007000e;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (*piVar35 == 1) {
|
|
|
|
local_34 = local_8;
|
|
|
|
pvVar32 = local_1c;
|
|
|
|
pvVar41 = pvVar43;
|
|
|
|
local_30 = pvVar31;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_34 = (void *)((int)local_8 + 0x10);
|
|
|
|
local_30 = (void *)((int)pvVar31 + 0x10);
|
|
|
|
pvVar32 = (void *)((int)local_1c + 0x10);
|
|
|
|
pvVar41 = (void *)((int)pvVar43 + 0x10);
|
|
|
|
}
|
|
|
|
local_18 = 0;
|
|
|
|
iVar33 = param_1[1];
|
|
|
|
if (*(int *)(iVar33 + 0x70) != 0) {
|
|
|
|
do {
|
|
|
|
local_c = 0;
|
|
|
|
if (*(int *)(iVar33 + 0x6c) != 0) {
|
|
|
|
do {
|
|
|
|
iVar33 = local_18 * 2;
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(local_c * 2,iVar33,local_8);
|
|
|
|
if (pvVar31 != local_8) {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(local_c * 2,iVar33 + 1,pvVar31);
|
|
|
|
}
|
|
|
|
if (local_1c != local_8) {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(local_c * 2 + 1,iVar33,local_1c);
|
|
|
|
}
|
|
|
|
if ((pvVar43 != pvVar31) && (pvVar43 != local_1c)) {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(local_c * 2 + 1,iVar33 + 1,pvVar43);
|
|
|
|
}
|
|
|
|
fVar29 = _DAT_007c7624;
|
|
|
|
local_20 = 0;
|
|
|
|
if (*(int *)(param_1[1] + 0x68) != 0) {
|
|
|
|
local_2c = local_14;
|
|
|
|
do {
|
|
|
|
iVar33 = local_20 * 0x20;
|
|
|
|
pfVar36 = (float *)((int)local_34 + iVar33);
|
|
|
|
pfVar42 = (float *)((int)local_8 + iVar33);
|
|
|
|
fVar3 = pfVar36[1];
|
|
|
|
fVar4 = pfVar42[1];
|
|
|
|
fVar5 = pfVar36[2];
|
|
|
|
fVar6 = pfVar42[2];
|
|
|
|
fVar7 = pfVar36[3];
|
|
|
|
pfVar2 = (float *)(iVar33 + (int)pvVar31);
|
|
|
|
fVar8 = pfVar42[3];
|
|
|
|
fVar9 = pfVar2[1];
|
|
|
|
fVar10 = pfVar2[2];
|
|
|
|
fVar11 = pfVar2[3];
|
|
|
|
pfVar37 = (float *)((int)local_30 + iVar33);
|
|
|
|
fVar12 = pfVar37[1];
|
|
|
|
fVar13 = pfVar37[2];
|
|
|
|
fVar14 = pfVar37[3];
|
|
|
|
pfVar38 = (float *)((int)local_1c + iVar33);
|
|
|
|
fVar15 = pfVar38[1];
|
|
|
|
fVar16 = pfVar38[2];
|
|
|
|
fVar17 = pfVar38[3];
|
|
|
|
pfVar39 = (float *)((int)pvVar32 + iVar33);
|
|
|
|
fVar18 = pfVar39[1];
|
|
|
|
fVar19 = pfVar39[2];
|
|
|
|
fVar20 = pfVar39[3];
|
|
|
|
pfVar40 = (float *)((int)pvVar43 + iVar33);
|
|
|
|
fVar21 = pfVar40[1];
|
|
|
|
fVar22 = pfVar40[2];
|
|
|
|
fVar23 = pfVar40[3];
|
|
|
|
pfVar34 = (float *)(iVar33 + (int)pvVar41);
|
|
|
|
local_20 = local_20 + 1;
|
|
|
|
fVar24 = pfVar34[1];
|
|
|
|
fVar25 = pfVar34[2];
|
|
|
|
fVar26 = pfVar34[3];
|
|
|
|
*local_2c = (*pfVar36 + *pfVar42 + *pfVar2 + *pfVar37 + *pfVar38 + *pfVar39 +
|
|
|
|
*pfVar40 + *pfVar34) * fVar29;
|
|
|
|
local_2c[1] = (fVar3 + fVar4 + fVar9 + fVar12 + fVar15 + fVar18 + fVar21 +
|
|
|
|
fVar24) * fVar29;
|
|
|
|
local_2c[2] = (fVar5 + fVar6 + fVar10 + fVar13 + fVar16 + fVar19 + fVar22 +
|
|
|
|
fVar25) * fVar29;
|
|
|
|
local_2c[3] = (fVar7 + fVar8 + fVar11 + fVar14 + fVar17 + fVar20 + fVar23 +
|
|
|
|
fVar26) * fVar29;
|
|
|
|
local_2c = local_2c + 4;
|
|
|
|
} while (local_20 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(local_c,local_18,local_14);
|
|
|
|
local_c = local_c + 1;
|
|
|
|
} while (local_c < *(uint *)(param_1[1] + 0x6c));
|
|
|
|
}
|
|
|
|
local_18 = local_18 + 1;
|
|
|
|
iVar33 = param_1[1];
|
|
|
|
} while (local_18 < *(uint *)(iVar33 + 0x70));
|
|
|
|
}
|
|
|
|
operator_delete(local_8);
|
|
|
|
uVar30 = 0;
|
|
|
|
}
|
|
|
|
operator_delete(local_14);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar30 = 0x80004005;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar30 = 0x80004005;
|
|
|
|
}
|
|
|
|
return uVar30;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f1d60 at 0x005F1D60 (size: 236) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
uint * FUN_005f1d60(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
uint *puVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint *puVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint unaff_ESI;
|
|
|
|
uint unaff_EDI;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
puVar4 = (uint *)FUN_005df0f5(unaff_EDI << 4);
|
|
|
|
if (puVar4 != (uint *)0x0) {
|
|
|
|
fVar1 = (float)(int)unaff_ESI;
|
|
|
|
if ((int)unaff_ESI < 0) {
|
|
|
|
fVar1 = fVar1 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar2 = (float)(int)unaff_EDI;
|
|
|
|
if ((int)unaff_EDI < 0) {
|
|
|
|
fVar2 = fVar2 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
local_8 = 0;
|
|
|
|
puVar6 = puVar4;
|
|
|
|
if (unaff_EDI != 0) {
|
|
|
|
do {
|
|
|
|
fVar3 = (float)(int)local_8;
|
|
|
|
if ((int)local_8 < 0) {
|
|
|
|
fVar3 = fVar3 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar3 = (fVar3 + _DAT_007938b8) * (fVar1 / fVar2) + _DAT_007938b8;
|
|
|
|
uVar5 = (uint)ROUND(fVar3);
|
|
|
|
uVar7 = uVar5 - 1;
|
|
|
|
fVar3 = ((float)(int)uVar5 + _DAT_007938b0) - fVar3;
|
|
|
|
if ((int)uVar7 < 0) {
|
|
|
|
uVar7 = -(uint)(param_1 != 0) & unaff_ESI - 1;
|
|
|
|
}
|
|
|
|
if (unaff_ESI <= uVar5) {
|
|
|
|
uVar5 = ~-(uint)(param_1 != 0) & unaff_ESI - 1;
|
|
|
|
}
|
|
|
|
puVar6[1] = (uint)fVar3;
|
|
|
|
*puVar6 = uVar7;
|
|
|
|
puVar6[2] = uVar5;
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
puVar6[3] = (uint)(1.0 - fVar3);
|
|
|
|
puVar6 = puVar6 + 4;
|
|
|
|
} while (local_8 < unaff_EDI);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return puVar4;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f1e4c at 0x005F1E4C (size: 930) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f1e4c(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float *pfVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
float fVar13;
|
|
|
|
float fVar14;
|
|
|
|
float fVar15;
|
|
|
|
float fVar16;
|
|
|
|
float fVar17;
|
|
|
|
float fVar18;
|
|
|
|
float fVar19;
|
|
|
|
float fVar20;
|
|
|
|
uint uVar21;
|
|
|
|
int iVar22;
|
|
|
|
int iVar23;
|
|
|
|
void *pvVar24;
|
|
|
|
void *pvVar25;
|
|
|
|
int *piVar26;
|
|
|
|
float *pfVar27;
|
|
|
|
int *piVar28;
|
|
|
|
float *pfVar29;
|
|
|
|
undefined4 uVar30;
|
|
|
|
void *pvVar31;
|
|
|
|
void *pvVar32;
|
|
|
|
uint local_34;
|
|
|
|
int local_30;
|
|
|
|
float *local_2c;
|
|
|
|
void *local_24;
|
|
|
|
uint local_20;
|
|
|
|
int local_1c;
|
|
|
|
void *local_14;
|
|
|
|
void *local_10;
|
|
|
|
float *local_c;
|
|
|
|
|
|
|
|
local_c = (float *)0x0;
|
|
|
|
local_14 = (void *)0x0;
|
|
|
|
uVar21 = param_1[2];
|
|
|
|
if ((char)uVar21 != '\x03') {
|
|
|
|
return 0x80004005;
|
|
|
|
}
|
|
|
|
if ((*(int *)(param_1[1] + 0x70) != 1) || (*(int *)(*param_1 + 0x70) != 1)) {
|
|
|
|
return 0x80004005;
|
|
|
|
}
|
|
|
|
pvVar24 = (void *)FUN_005f1d60(~(uVar21 >> 0x10) & 1);
|
|
|
|
pvVar25 = (void *)FUN_005f1d60(~(uVar21 >> 0x11) & 1);
|
|
|
|
if ((pvVar24 != (void *)0x0) && (pvVar25 != (void *)0x0)) {
|
|
|
|
iVar22 = *(int *)(param_1[1] + 0x68);
|
|
|
|
local_c = (float *)FUN_005df0f5(iVar22 << 4);
|
|
|
|
if (local_c == (float *)0x0) {
|
|
|
|
local_c = (float *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_c,0x10,iVar22,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_c != (float *)0x0) {
|
|
|
|
iVar22 = *(int *)(*param_1 + 0x68);
|
|
|
|
local_14 = (void *)FUN_005df0f5(iVar22 << 5);
|
|
|
|
if (local_14 == (void *)0x0) {
|
|
|
|
local_14 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_14,0x10,iVar22 << 1,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_14 != (void *)0x0) {
|
|
|
|
local_20 = 0;
|
|
|
|
local_30 = -1;
|
|
|
|
local_1c = -1;
|
|
|
|
pvVar31 = (void *)(*(int *)(*param_1 + 0x68) * 0x10 + (int)local_14);
|
|
|
|
local_24 = local_14;
|
|
|
|
if (*(int *)(param_1[1] + 0x6c) != 0) {
|
|
|
|
piVar28 = (int *)((int)pvVar25 + 8);
|
|
|
|
local_10 = pvVar31;
|
|
|
|
do {
|
|
|
|
iVar23 = local_1c;
|
|
|
|
iVar22 = piVar28[-2];
|
|
|
|
local_34 = 0;
|
|
|
|
pvVar32 = pvVar31;
|
|
|
|
if (iVar22 != local_30) {
|
|
|
|
if (iVar22 == local_1c) {
|
|
|
|
local_1c = -1;
|
|
|
|
local_30 = iVar23;
|
|
|
|
local_10 = local_24;
|
|
|
|
pvVar32 = local_24;
|
|
|
|
local_24 = pvVar31;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(iVar22,0,local_24);
|
|
|
|
local_30 = iVar22;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar22 = *piVar28;
|
|
|
|
if (iVar22 != local_1c) {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(iVar22,0,pvVar32);
|
|
|
|
local_1c = iVar22;
|
|
|
|
}
|
|
|
|
pvVar31 = pvVar32;
|
|
|
|
if (*(int *)(param_1[1] + 0x68) != 0) {
|
|
|
|
piVar26 = (int *)((int)pvVar24 + 8);
|
|
|
|
local_2c = local_c;
|
|
|
|
do {
|
|
|
|
fVar3 = (float)piVar26[1];
|
|
|
|
pfVar1 = (float *)(*piVar26 * 0x10 + (int)pvVar32);
|
|
|
|
fVar4 = pfVar1[1];
|
|
|
|
fVar5 = pfVar1[2];
|
|
|
|
fVar6 = pfVar1[3];
|
|
|
|
fVar7 = (float)piVar26[-1];
|
|
|
|
pfVar2 = (float *)(piVar26[-2] * 0x10 + (int)pvVar32);
|
|
|
|
pfVar27 = (float *)(*piVar26 * 0x10 + (int)local_24);
|
|
|
|
fVar8 = pfVar2[1];
|
|
|
|
pfVar29 = (float *)(piVar26[-2] * 0x10 + (int)local_24);
|
|
|
|
fVar9 = pfVar2[2];
|
|
|
|
fVar10 = pfVar2[3];
|
|
|
|
fVar11 = (float)piVar28[1];
|
|
|
|
fVar12 = (float)piVar26[1];
|
|
|
|
fVar13 = pfVar27[1];
|
|
|
|
fVar14 = pfVar27[2];
|
|
|
|
fVar15 = pfVar27[3];
|
|
|
|
fVar16 = (float)piVar26[-1];
|
|
|
|
fVar17 = pfVar29[1];
|
|
|
|
fVar18 = pfVar29[2];
|
|
|
|
fVar19 = pfVar29[3];
|
|
|
|
piVar26 = piVar26 + 4;
|
|
|
|
local_34 = local_34 + 1;
|
|
|
|
fVar20 = (float)piVar28[-1];
|
|
|
|
*local_2c = (fVar16 * *pfVar29 + fVar12 * *pfVar27) * fVar20 +
|
|
|
|
(fVar7 * *pfVar2 + fVar3 * *pfVar1) * fVar11;
|
|
|
|
local_2c[1] = (fVar16 * fVar17 + fVar12 * fVar13) * fVar20 +
|
|
|
|
(fVar7 * fVar8 + fVar3 * fVar4) * fVar11;
|
|
|
|
local_2c[2] = (fVar16 * fVar18 + fVar12 * fVar14) * fVar20 +
|
|
|
|
(fVar7 * fVar9 + fVar3 * fVar5) * fVar11;
|
|
|
|
local_2c[3] = (fVar12 * fVar15 + fVar16 * fVar19) * fVar20 +
|
|
|
|
(fVar3 * fVar6 + fVar7 * fVar10) * fVar11;
|
|
|
|
pvVar32 = local_10;
|
|
|
|
pvVar31 = local_10;
|
|
|
|
local_2c = local_2c + 4;
|
|
|
|
} while (local_34 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(local_20,0,local_c);
|
|
|
|
piVar28 = piVar28 + 4;
|
|
|
|
local_20 = local_20 + 1;
|
|
|
|
} while (local_20 < *(uint *)(param_1[1] + 0x6c));
|
|
|
|
}
|
|
|
|
uVar30 = 0;
|
|
|
|
goto LAB_005f21bd;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar30 = 0x8007000e;
|
|
|
|
LAB_005f21bd:
|
|
|
|
operator_delete(pvVar24);
|
|
|
|
operator_delete(pvVar25);
|
|
|
|
operator_delete(local_c);
|
|
|
|
operator_delete(local_14);
|
|
|
|
return uVar30;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f21ee at 0x005F21EE (size: 1730) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f21ee(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
float fVar13;
|
|
|
|
float fVar14;
|
|
|
|
float fVar15;
|
|
|
|
float fVar16;
|
|
|
|
float fVar17;
|
|
|
|
float fVar18;
|
|
|
|
float fVar19;
|
|
|
|
float fVar20;
|
|
|
|
float fVar21;
|
|
|
|
float fVar22;
|
|
|
|
float fVar23;
|
|
|
|
float fVar24;
|
|
|
|
float fVar25;
|
|
|
|
float fVar26;
|
|
|
|
float fVar27;
|
|
|
|
float fVar28;
|
|
|
|
float fVar29;
|
|
|
|
float fVar30;
|
|
|
|
float fVar31;
|
|
|
|
float fVar32;
|
|
|
|
float fVar33;
|
|
|
|
float fVar34;
|
|
|
|
float fVar35;
|
|
|
|
float fVar36;
|
|
|
|
float fVar37;
|
|
|
|
float fVar38;
|
|
|
|
float fVar39;
|
|
|
|
uint uVar40;
|
|
|
|
void *pvVar41;
|
|
|
|
void *pvVar42;
|
|
|
|
void *pvVar43;
|
|
|
|
void *pvVar44;
|
|
|
|
int iVar45;
|
|
|
|
int *piVar46;
|
|
|
|
int iVar47;
|
|
|
|
float *pfVar48;
|
|
|
|
float *pfVar49;
|
|
|
|
float *pfVar50;
|
|
|
|
float *pfVar51;
|
|
|
|
void *pvVar52;
|
|
|
|
void *pvVar53;
|
|
|
|
float *pfVar54;
|
|
|
|
float *pfVar55;
|
|
|
|
float *pfVar56;
|
|
|
|
undefined4 uVar57;
|
|
|
|
int *piVar58;
|
|
|
|
uint local_48;
|
|
|
|
float *local_3c;
|
|
|
|
void *local_38;
|
|
|
|
void *local_30;
|
|
|
|
void *local_2c;
|
|
|
|
void *local_28;
|
|
|
|
uint local_24;
|
|
|
|
uint local_20;
|
|
|
|
int local_1c;
|
|
|
|
void *local_18;
|
|
|
|
int local_14;
|
|
|
|
float *local_10;
|
|
|
|
undefined4 *local_c;
|
|
|
|
|
|
|
|
local_10 = (float *)0x0;
|
|
|
|
local_28 = (void *)0x0;
|
|
|
|
uVar40 = param_1[2];
|
|
|
|
if ((char)uVar40 != '\x03') {
|
|
|
|
return 0x80004005;
|
|
|
|
}
|
|
|
|
pvVar42 = (void *)FUN_005f1d60(~(uVar40 >> 0x10) & 1);
|
|
|
|
pvVar43 = (void *)FUN_005f1d60(~(uVar40 >> 0x11) & 1);
|
|
|
|
pvVar44 = (void *)FUN_005f1d60(~(uVar40 >> 0x12) & 1);
|
|
|
|
if (((pvVar42 != (void *)0x0) && (pvVar43 != (void *)0x0)) && (pvVar44 != (void *)0x0)) {
|
|
|
|
iVar47 = *(int *)(param_1[1] + 0x68);
|
|
|
|
local_10 = (float *)FUN_005df0f5(iVar47 << 4);
|
|
|
|
if (local_10 == (float *)0x0) {
|
|
|
|
local_10 = (float *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_10,0x10,iVar47,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_10 != (float *)0x0) {
|
|
|
|
iVar47 = *(int *)(*param_1 + 0x68);
|
|
|
|
local_28 = (void *)FUN_005df0f5(iVar47 << 6);
|
|
|
|
if (local_28 == (void *)0x0) {
|
|
|
|
local_28 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_28,0x10,iVar47 << 2,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_28 != (void *)0x0) {
|
|
|
|
iVar47 = *(int *)(*param_1 + 0x68);
|
|
|
|
local_24 = 0;
|
|
|
|
local_18 = (void *)(iVar47 * 0x10 + (int)local_28);
|
|
|
|
iVar45 = param_1[1];
|
|
|
|
local_2c = (void *)(iVar47 * 0x20 + (int)local_28);
|
|
|
|
pvVar52 = (void *)(iVar47 * 0x30 + (int)local_28);
|
|
|
|
local_38 = local_28;
|
|
|
|
if (*(int *)(iVar45 + 0x70) != 0) {
|
|
|
|
local_c = (undefined4 *)((int)pvVar44 + 8);
|
|
|
|
local_30 = pvVar52;
|
|
|
|
do {
|
|
|
|
local_20 = 0;
|
|
|
|
local_1c = -1;
|
|
|
|
local_14 = -1;
|
|
|
|
if (*(int *)(iVar45 + 0x6c) != 0) {
|
|
|
|
piVar58 = (int *)((int)pvVar43 + 8);
|
|
|
|
do {
|
|
|
|
iVar45 = local_14;
|
|
|
|
pvVar41 = local_18;
|
|
|
|
iVar47 = piVar58[-2];
|
|
|
|
local_48 = 0;
|
|
|
|
pvVar53 = pvVar52;
|
|
|
|
if (iVar47 != local_1c) {
|
|
|
|
if (iVar47 == local_14) {
|
|
|
|
local_14 = -1;
|
|
|
|
local_1c = iVar45;
|
|
|
|
local_18 = local_38;
|
|
|
|
local_38 = pvVar41;
|
|
|
|
local_30 = local_2c;
|
|
|
|
pvVar53 = local_2c;
|
|
|
|
local_2c = pvVar52;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(iVar47,local_c[-2],local_38);
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(iVar47,*local_c,local_2c);
|
|
|
|
local_1c = iVar47;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar47 = *piVar58;
|
|
|
|
if (iVar47 != local_14) {
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(iVar47,local_c[-2],local_18);
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(iVar47,*local_c,pvVar53);
|
|
|
|
local_14 = iVar47;
|
|
|
|
}
|
|
|
|
pvVar52 = pvVar53;
|
|
|
|
if (*(int *)(param_1[1] + 0x68) != 0) {
|
|
|
|
piVar46 = (int *)((int)pvVar42 + 8);
|
|
|
|
local_3c = local_10;
|
|
|
|
do {
|
|
|
|
fVar2 = (float)piVar46[1];
|
|
|
|
pfVar1 = (float *)(*piVar46 * 0x10 + (int)local_30);
|
|
|
|
fVar3 = pfVar1[1];
|
|
|
|
fVar4 = pfVar1[2];
|
|
|
|
fVar5 = pfVar1[3];
|
|
|
|
fVar6 = (float)piVar46[-1];
|
|
|
|
iVar47 = piVar46[-2] * 0x10;
|
|
|
|
pfVar49 = (float *)((int)local_30 + iVar47);
|
|
|
|
fVar7 = pfVar49[1];
|
|
|
|
fVar8 = pfVar49[2];
|
|
|
|
fVar9 = pfVar49[3];
|
|
|
|
pfVar54 = (float *)(*piVar46 * 0x10 + (int)local_2c);
|
|
|
|
pfVar50 = (float *)((int)local_2c + iVar47);
|
|
|
|
fVar10 = (float)piVar58[1];
|
|
|
|
fVar11 = (float)piVar46[1];
|
|
|
|
fVar12 = pfVar54[1];
|
|
|
|
fVar13 = pfVar54[2];
|
|
|
|
fVar14 = pfVar54[3];
|
|
|
|
fVar15 = (float)piVar46[-1];
|
|
|
|
fVar16 = pfVar50[1];
|
|
|
|
fVar17 = pfVar50[2];
|
|
|
|
fVar18 = pfVar50[3];
|
|
|
|
fVar19 = (float)piVar58[-1];
|
|
|
|
fVar20 = (float)local_c[1];
|
|
|
|
pfVar55 = (float *)((int)local_18 + *piVar46 * 0x10);
|
|
|
|
fVar21 = (float)piVar46[1];
|
|
|
|
fVar22 = pfVar55[1];
|
|
|
|
fVar23 = pfVar55[2];
|
|
|
|
fVar24 = pfVar55[3];
|
|
|
|
fVar25 = (float)piVar46[-1];
|
|
|
|
pfVar56 = (float *)((int)local_18 + iVar47);
|
|
|
|
fVar26 = pfVar56[1];
|
|
|
|
fVar27 = pfVar56[2];
|
|
|
|
fVar28 = pfVar56[3];
|
|
|
|
pfVar51 = (float *)(*piVar46 * 0x10 + (int)local_38);
|
|
|
|
pfVar48 = (float *)(iVar47 + (int)local_38);
|
|
|
|
fVar29 = (float)piVar58[1];
|
|
|
|
fVar30 = (float)piVar46[1];
|
|
|
|
fVar31 = pfVar51[1];
|
|
|
|
fVar32 = pfVar51[2];
|
|
|
|
fVar33 = pfVar51[3];
|
|
|
|
fVar34 = (float)piVar46[-1];
|
|
|
|
fVar35 = pfVar48[1];
|
|
|
|
fVar36 = pfVar48[2];
|
|
|
|
fVar37 = pfVar48[3];
|
|
|
|
fVar38 = (float)piVar58[-1];
|
|
|
|
fVar39 = (float)local_c[-1];
|
|
|
|
piVar46 = piVar46 + 4;
|
|
|
|
local_48 = local_48 + 1;
|
|
|
|
*local_3c = ((fVar34 * *pfVar48 + fVar30 * *pfVar51) * fVar38 +
|
|
|
|
(fVar25 * *pfVar56 + fVar21 * *pfVar55) * fVar29) * fVar39 +
|
|
|
|
((fVar15 * *pfVar50 + fVar11 * *pfVar54) * fVar19 +
|
|
|
|
(fVar6 * *pfVar49 + fVar2 * *pfVar1) * fVar10) * fVar20;
|
|
|
|
local_3c[1] = ((fVar34 * fVar35 + fVar30 * fVar31) * fVar38 +
|
|
|
|
(fVar25 * fVar26 + fVar21 * fVar22) * fVar29) * fVar39 +
|
|
|
|
((fVar15 * fVar16 + fVar11 * fVar12) * fVar19 +
|
|
|
|
(fVar6 * fVar7 + fVar2 * fVar3) * fVar10) * fVar20;
|
|
|
|
local_3c[2] = ((fVar34 * fVar36 + fVar30 * fVar32) * fVar38 +
|
|
|
|
(fVar25 * fVar27 + fVar21 * fVar23) * fVar29) * fVar39 +
|
|
|
|
((fVar15 * fVar17 + fVar11 * fVar13) * fVar19 +
|
|
|
|
(fVar6 * fVar8 + fVar2 * fVar4) * fVar10) * fVar20;
|
|
|
|
local_3c[3] = ((fVar30 * fVar33 + fVar34 * fVar37) * fVar38 +
|
|
|
|
(fVar21 * fVar24 + fVar25 * fVar28) * fVar29) * fVar39 +
|
|
|
|
((fVar11 * fVar14 + fVar15 * fVar18) * fVar19 +
|
|
|
|
(fVar2 * fVar5 + fVar6 * fVar9) * fVar10) * fVar20;
|
|
|
|
pvVar52 = local_30;
|
|
|
|
local_3c = local_3c + 4;
|
|
|
|
} while (local_48 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(local_20,local_24,local_10);
|
|
|
|
piVar58 = piVar58 + 4;
|
|
|
|
local_20 = local_20 + 1;
|
|
|
|
} while (local_20 < *(uint *)(param_1[1] + 0x6c));
|
|
|
|
}
|
|
|
|
local_c = local_c + 4;
|
|
|
|
local_24 = local_24 + 1;
|
|
|
|
iVar45 = param_1[1];
|
|
|
|
} while (local_24 < *(uint *)(iVar45 + 0x70));
|
|
|
|
}
|
|
|
|
uVar57 = 0;
|
|
|
|
goto LAB_005f287e;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar57 = 0x8007000e;
|
|
|
|
LAB_005f287e:
|
|
|
|
operator_delete(pvVar42);
|
|
|
|
operator_delete(pvVar43);
|
|
|
|
operator_delete(pvVar44);
|
|
|
|
operator_delete(local_10);
|
|
|
|
operator_delete(local_28);
|
|
|
|
return uVar57;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f28b0 at 0x005F28B0 (size: 79) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005f28b0(undefined4 *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
|
|
|
|
if ((param_2 & 2) == 0) {
|
|
|
|
operator_delete((void *)*param_1);
|
|
|
|
puVar1 = param_1;
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar1 = param_1 + -1;
|
|
|
|
FUN_00401030(param_1,0xc,*puVar1,&LAB_005efd46);
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(puVar1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return puVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f28ff at 0x005F28FF (size: 1670) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __fastcall FUN_005f28ff(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int *piVar6;
|
|
|
|
int *piVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int *piVar10;
|
|
|
|
uint uVar11;
|
|
|
|
int iVar12;
|
|
|
|
int *piVar13;
|
|
|
|
int *piVar14;
|
|
|
|
float *pfVar15;
|
|
|
|
int *piVar16;
|
|
|
|
int *piVar17;
|
|
|
|
undefined4 uVar18;
|
|
|
|
undefined4 *puVar19;
|
|
|
|
float *pfVar20;
|
|
|
|
int local_38;
|
|
|
|
int local_2c;
|
|
|
|
int *local_28;
|
|
|
|
int *local_20;
|
|
|
|
int *local_1c;
|
|
|
|
int *local_18;
|
|
|
|
void *local_10;
|
|
|
|
int *local_c;
|
|
|
|
int *local_8;
|
|
|
|
|
|
|
|
uVar11 = param_1[2];
|
|
|
|
local_20 = (int *)0x0;
|
|
|
|
local_1c = (int *)0x0;
|
|
|
|
local_c = (int *)0x0;
|
|
|
|
local_18 = (int *)0x0;
|
|
|
|
local_10 = (void *)0x0;
|
|
|
|
piVar6 = (int *)FUN_005efd4f(*(undefined4 *)(*param_1 + 0x68),*(undefined4 *)(param_1[1] + 0x68),
|
|
|
|
~(uVar11 >> 0x10) & 1);
|
|
|
|
if (((piVar6 == (int *)0x0) ||
|
|
|
|
(local_20 = (int *)FUN_005efd4f(*(undefined4 *)(*param_1 + 0x6c),
|
|
|
|
*(undefined4 *)(param_1[1] + 0x6c),~(uVar11 >> 0x11) & 1),
|
|
|
|
local_20 == (int *)0x0)) ||
|
|
|
|
(local_1c = (int *)FUN_005efd4f(*(undefined4 *)(*param_1 + 0x70),
|
|
|
|
*(undefined4 *)(param_1[1] + 0x70),~(uVar11 >> 0x12) & 1),
|
|
|
|
local_1c == (int *)0x0)) {
|
|
|
|
uVar18 = 0x80004005;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = *piVar6;
|
|
|
|
iVar4 = *local_20;
|
|
|
|
iVar5 = *local_1c;
|
|
|
|
iVar12 = *(int *)(param_1[1] + 0x70);
|
|
|
|
local_c = (int *)FUN_005df0f5(iVar12 * 0xc + 4);
|
|
|
|
if (local_c == (int *)0x0) {
|
|
|
|
local_c = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*local_c = iVar12;
|
|
|
|
local_c = local_c + 1;
|
|
|
|
FUN_00401000(local_c,0xc,iVar12,&LAB_005efd39);
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
iVar12 = *(int *)(*param_1 + 0x68);
|
|
|
|
local_10 = (void *)FUN_005df0f5(iVar12 << 4);
|
|
|
|
if (local_10 == (void *)0x0) {
|
|
|
|
local_10 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_10,0x10,iVar12,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_10 != (void *)0x0) {
|
|
|
|
piVar17 = local_1c + 1;
|
|
|
|
while (piVar17 < (int *)(iVar5 + (int)local_1c)) {
|
|
|
|
piVar14 = (int *)(*piVar17 + (int)piVar17);
|
|
|
|
for (piVar10 = piVar17 + 1; piVar17 = piVar14, piVar10 < piVar14; piVar10 = piVar10 + 2) {
|
|
|
|
local_c[*piVar10 * 3 + 2] = local_c[*piVar10 * 3 + 2] + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_38 = 0;
|
|
|
|
piVar17 = local_1c + 1;
|
|
|
|
fVar2 = _DAT_0079a1a0;
|
|
|
|
while (piVar17 < (int *)(iVar5 + (int)local_1c)) {
|
|
|
|
piVar14 = (int *)(*piVar17 + (int)piVar17);
|
|
|
|
piVar17 = piVar17 + 1;
|
|
|
|
for (piVar10 = piVar17; piVar10 < piVar14; piVar10 = piVar10 + 2) {
|
|
|
|
piVar7 = local_c + *piVar10 * 3;
|
|
|
|
if (*piVar7 == 0) {
|
|
|
|
if (local_18 == (int *)0x0) {
|
|
|
|
iVar8 = *(int *)(param_1[1] + 0x6c) * *(int *)(param_1[1] + 0x68);
|
|
|
|
iVar12 = FUN_005df0f5(iVar8 * 0x10);
|
|
|
|
if (iVar12 == 0) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(iVar12,0x10,iVar8,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
*piVar7 = iVar12;
|
|
|
|
fVar2 = _DAT_0079a1a0;
|
|
|
|
if (iVar12 == 0) goto LAB_005f2f3a;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*piVar7 = *local_18;
|
|
|
|
*local_18 = 0;
|
|
|
|
local_18 = (int *)local_18[1];
|
|
|
|
}
|
|
|
|
puVar19 = (undefined4 *)*piVar7;
|
|
|
|
for (uVar11 = (uint)(*(int *)(param_1[1] + 0x6c) * *(int *)(param_1[1] + 0x68) * 0x10)
|
|
|
|
>> 2; uVar11 != 0; uVar11 = uVar11 - 1) {
|
|
|
|
*puVar19 = 0;
|
|
|
|
puVar19 = puVar19 + 1;
|
|
|
|
}
|
|
|
|
for (iVar12 = 0; iVar12 != 0; iVar12 = iVar12 + -1) {
|
|
|
|
*(undefined1 *)puVar19 = 0;
|
|
|
|
puVar19 = (undefined4 *)((int)puVar19 + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_2c = 0;
|
|
|
|
piVar10 = local_20 + 1;
|
|
|
|
while (piVar10 < (int *)(iVar4 + (int)local_20)) {
|
|
|
|
iVar12 = *piVar10;
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(local_2c,local_38,local_10);
|
|
|
|
if (piVar6 + 1 < (int *)(iVar3 + (int)piVar6)) {
|
|
|
|
pfVar15 = (float *)((int)local_10 + 8);
|
|
|
|
local_28 = piVar6 + 1;
|
|
|
|
do {
|
|
|
|
piVar7 = (int *)(*local_28 + (int)local_28);
|
|
|
|
for (local_8 = piVar17; local_8 < piVar14; local_8 = local_8 + 2) {
|
|
|
|
for (piVar16 = piVar10 + 1; piVar16 < (int *)(iVar12 + (int)piVar10);
|
|
|
|
piVar16 = piVar16 + 2) {
|
|
|
|
iVar8 = *(int *)(param_1[1] + 0x68) * *piVar16 * 0x10 + local_c[*local_8 * 3];
|
|
|
|
for (piVar13 = local_28 + 1; piVar13 < piVar7; piVar13 = piVar13 + 2) {
|
|
|
|
pfVar20 = (float *)(*piVar13 * 0x10 + iVar8);
|
|
|
|
fVar2 = (float)piVar13[1] * (float)local_8[1] * (float)piVar16[1];
|
|
|
|
*pfVar20 = fVar2 * pfVar15[-2] + *pfVar20;
|
|
|
|
pfVar20 = (float *)(*piVar13 * 0x10 + 4 + iVar8);
|
|
|
|
*pfVar20 = fVar2 * pfVar15[-1] + *pfVar20;
|
|
|
|
pfVar20 = (float *)(*piVar13 * 0x10 + 8 + iVar8);
|
|
|
|
*pfVar20 = fVar2 * *pfVar15 + *pfVar20;
|
|
|
|
pfVar20 = (float *)(*piVar13 * 0x10 + 0xc + iVar8);
|
|
|
|
*pfVar20 = fVar2 * pfVar15[1] + *pfVar20;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pfVar15 = pfVar15 + 4;
|
|
|
|
local_28 = piVar7;
|
|
|
|
} while (piVar7 < (int *)(iVar3 + (int)piVar6));
|
|
|
|
}
|
|
|
|
local_2c = local_2c + 1;
|
|
|
|
piVar10 = (int *)(iVar12 + (int)piVar10);
|
|
|
|
fVar2 = _DAT_0079a1a0;
|
|
|
|
}
|
|
|
|
for (; piVar17 < piVar14; piVar17 = piVar17 + 2) {
|
|
|
|
piVar7 = local_c + *piVar17 * 3;
|
|
|
|
piVar10 = piVar7 + 2;
|
|
|
|
*piVar10 = *piVar10 + -1;
|
|
|
|
if (*piVar10 == 0) {
|
|
|
|
iVar12 = param_1[1];
|
|
|
|
local_8 = (int *)0x0;
|
|
|
|
if (*(int *)(iVar12 + 0x6c) != 0) {
|
|
|
|
do {
|
|
|
|
fVar1 = _DAT_007938b0;
|
|
|
|
iVar12 = *(int *)(iVar12 + 0x68);
|
|
|
|
iVar8 = *(int *)(*param_1 + 8);
|
|
|
|
iVar9 = iVar12 * (int)local_8 * 0x10 + *piVar7;
|
|
|
|
if (iVar8 == 1) {
|
|
|
|
uVar11 = 0;
|
|
|
|
if (iVar12 != 0) {
|
|
|
|
pfVar15 = (float *)(iVar9 + 8);
|
|
|
|
do {
|
|
|
|
if (0.0 <= pfVar15[-2]) {
|
|
|
|
if (fVar1 <= pfVar15[-2]) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = pfVar15[-2];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = 0.0;
|
|
|
|
}
|
|
|
|
pfVar15[-2] = fVar2;
|
|
|
|
if (0.0 <= pfVar15[-1]) {
|
|
|
|
if (fVar1 <= pfVar15[-1]) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = pfVar15[-1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = 0.0;
|
|
|
|
}
|
|
|
|
pfVar15[-1] = fVar2;
|
|
|
|
if (0.0 <= *pfVar15) {
|
|
|
|
if (fVar1 <= *pfVar15) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = *pfVar15;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = 0.0;
|
|
|
|
}
|
|
|
|
*pfVar15 = fVar2;
|
|
|
|
if (0.0 <= pfVar15[1]) {
|
|
|
|
if (fVar1 <= pfVar15[1]) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = pfVar15[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = 0.0;
|
|
|
|
}
|
|
|
|
pfVar15[1] = fVar2;
|
|
|
|
uVar11 = uVar11 + 1;
|
|
|
|
pfVar15 = pfVar15 + 4;
|
|
|
|
} while (uVar11 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar8 == 2) {
|
|
|
|
uVar11 = 0;
|
|
|
|
if (iVar12 != 0) {
|
|
|
|
pfVar15 = (float *)(iVar9 + 8);
|
|
|
|
do {
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= pfVar15[-2]) {
|
|
|
|
if (_DAT_007938b0 <= pfVar15[-2]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar15[-2];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pfVar15[-2] = fVar1;
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= pfVar15[-1]) {
|
|
|
|
if (_DAT_007938b0 <= pfVar15[-1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar15[-1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pfVar15[-1] = fVar1;
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= *pfVar15) {
|
|
|
|
if (_DAT_007938b0 <= *pfVar15) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar15;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar15 = fVar1;
|
|
|
|
if (0.0 <= pfVar15[1]) {
|
|
|
|
if (_DAT_007938b0 <= pfVar15[1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar15[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 0.0;
|
|
|
|
}
|
|
|
|
pfVar15[1] = fVar1;
|
|
|
|
uVar11 = uVar11 + 1;
|
|
|
|
pfVar15 = pfVar15 + 4;
|
|
|
|
} while (uVar11 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar8 == 3) && (uVar11 = 0, iVar12 != 0)) {
|
|
|
|
pfVar15 = (float *)(iVar9 + 8);
|
|
|
|
do {
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= pfVar15[-2]) {
|
|
|
|
if (_DAT_007938b0 <= pfVar15[-2]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar15[-2];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pfVar15[-2] = fVar1;
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= pfVar15[-1]) {
|
|
|
|
if (_DAT_007938b0 <= pfVar15[-1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar15[-1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pfVar15[-1] = fVar1;
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= *pfVar15) {
|
|
|
|
if (_DAT_007938b0 <= *pfVar15) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar15;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar15 = fVar1;
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= pfVar15[1]) {
|
|
|
|
if (_DAT_007938b0 <= pfVar15[1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar15[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pfVar15[1] = fVar1;
|
|
|
|
uVar11 = uVar11 + 1;
|
|
|
|
pfVar15 = pfVar15 + 4;
|
|
|
|
} while (uVar11 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))
|
|
|
|
(local_8,*piVar17,
|
|
|
|
((int *)param_1[1])[0x1a] * (int)local_8 * 0x10 + *piVar7);
|
|
|
|
local_8 = (int *)((int)local_8 + 1);
|
|
|
|
iVar12 = param_1[1];
|
|
|
|
fVar2 = _DAT_0079a1a0;
|
|
|
|
} while (local_8 < *(uint *)(iVar12 + 0x6c));
|
|
|
|
}
|
|
|
|
piVar7[1] = (int)local_18;
|
|
|
|
local_18 = piVar7;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_38 = local_38 + 1;
|
|
|
|
piVar17 = piVar14;
|
|
|
|
}
|
|
|
|
uVar18 = 0;
|
|
|
|
goto LAB_005f2f46;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_005f2f3a:
|
|
|
|
uVar18 = 0x8007000e;
|
|
|
|
}
|
|
|
|
LAB_005f2f46:
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_005f28b0(3);
|
|
|
|
}
|
|
|
|
operator_delete(local_1c);
|
|
|
|
operator_delete(local_20);
|
|
|
|
operator_delete(piVar6);
|
|
|
|
operator_delete(local_10);
|
|
|
|
operator_delete((void *)0x0);
|
|
|
|
return uVar18;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f2f85 at 0x005F2F85 (size: 1472) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __fastcall FUN_005f2f85(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
float fVar5;
|
|
|
|
int *piVar6;
|
|
|
|
int iVar7;
|
|
|
|
int *piVar8;
|
|
|
|
int *piVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int iVar11;
|
|
|
|
int *piVar12;
|
|
|
|
float *pfVar13;
|
|
|
|
float *pfVar14;
|
|
|
|
undefined4 uVar15;
|
|
|
|
undefined4 *puVar16;
|
|
|
|
int *piVar17;
|
|
|
|
int *piVar18;
|
|
|
|
int local_20;
|
|
|
|
int *local_1c;
|
|
|
|
int *local_18;
|
|
|
|
void *local_10;
|
|
|
|
int *local_c;
|
|
|
|
int *local_8;
|
|
|
|
|
|
|
|
local_1c = (int *)0x0;
|
|
|
|
local_c = (int *)0x0;
|
|
|
|
local_18 = (int *)0x0;
|
|
|
|
local_10 = (void *)0x0;
|
|
|
|
if ((*(int *)(param_1[1] + 0x70) != 1) || (*(int *)(*param_1 + 0x70) != 1)) {
|
|
|
|
return 0x80004005;
|
|
|
|
}
|
|
|
|
uVar10 = param_1[2];
|
|
|
|
piVar6 = (int *)FUN_005efd4f(*(undefined4 *)(*param_1 + 0x68),*(undefined4 *)(param_1[1] + 0x68),
|
|
|
|
~(uVar10 >> 0x10) & 1);
|
|
|
|
if ((piVar6 == (int *)0x0) ||
|
|
|
|
(local_1c = (int *)FUN_005efd4f(*(undefined4 *)(*param_1 + 0x6c),
|
|
|
|
*(undefined4 *)(param_1[1] + 0x6c),~(uVar10 >> 0x11) & 1),
|
|
|
|
local_1c == (int *)0x0)) {
|
|
|
|
uVar15 = 0x80004005;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar3 = *piVar6;
|
|
|
|
iVar4 = *local_1c;
|
|
|
|
iVar11 = *(int *)(param_1[1] + 0x6c);
|
|
|
|
local_c = (int *)FUN_005df0f5(iVar11 * 0xc + 4);
|
|
|
|
if (local_c == (int *)0x0) {
|
|
|
|
local_c = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*local_c = iVar11;
|
|
|
|
local_c = local_c + 1;
|
|
|
|
FUN_00401000(local_c,0xc,iVar11,&LAB_005efd39);
|
|
|
|
}
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
iVar11 = *(int *)(*param_1 + 0x68);
|
|
|
|
local_10 = (void *)FUN_005df0f5(iVar11 << 4);
|
|
|
|
if (local_10 == (void *)0x0) {
|
|
|
|
local_10 = (void *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_10,0x10,iVar11,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
if (local_10 != (void *)0x0) {
|
|
|
|
piVar18 = local_1c + 1;
|
|
|
|
while (piVar18 < (int *)(iVar4 + (int)local_1c)) {
|
|
|
|
piVar12 = (int *)(*piVar18 + (int)piVar18);
|
|
|
|
for (piVar8 = piVar18 + 1; piVar18 = piVar12, piVar8 < piVar12; piVar8 = piVar8 + 2) {
|
|
|
|
local_c[*piVar8 * 3 + 2] = local_c[*piVar8 * 3 + 2] + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_20 = 0;
|
|
|
|
piVar18 = local_1c + 1;
|
|
|
|
while (piVar18 < (int *)(iVar4 + (int)local_1c)) {
|
|
|
|
piVar12 = (int *)(*piVar18 + (int)piVar18);
|
|
|
|
piVar18 = piVar18 + 1;
|
|
|
|
for (piVar8 = piVar18; piVar8 < piVar12; piVar8 = piVar8 + 2) {
|
|
|
|
piVar17 = local_c + *piVar8 * 3;
|
|
|
|
if (*piVar17 == 0) {
|
|
|
|
if (local_18 == (int *)0x0) {
|
|
|
|
iVar11 = *(int *)(param_1[1] + 0x68);
|
|
|
|
iVar7 = FUN_005df0f5(iVar11 << 4);
|
|
|
|
if (iVar7 == 0) {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(iVar7,0x10,iVar11,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
*piVar17 = iVar7;
|
|
|
|
if (iVar7 == 0) goto LAB_005f34fb;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*piVar17 = *local_18;
|
|
|
|
*local_18 = 0;
|
|
|
|
local_18 = (int *)local_18[1];
|
|
|
|
}
|
|
|
|
puVar16 = (undefined4 *)*piVar17;
|
|
|
|
for (uVar10 = (uint)(*(int *)(param_1[1] + 0x68) << 4) >> 2; uVar10 != 0;
|
|
|
|
uVar10 = uVar10 - 1) {
|
|
|
|
*puVar16 = 0;
|
|
|
|
puVar16 = puVar16 + 1;
|
|
|
|
}
|
|
|
|
for (iVar11 = 0; iVar11 != 0; iVar11 = iVar11 + -1) {
|
|
|
|
*(undefined1 *)puVar16 = 0;
|
|
|
|
puVar16 = (undefined4 *)((int)puVar16 + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(**(code **)(*(int *)*param_1 + 4))(local_20,0,local_10);
|
|
|
|
if (piVar6 + 1 < (int *)(iVar3 + (int)piVar6)) {
|
|
|
|
pfVar13 = (float *)((int)local_10 + 8);
|
|
|
|
piVar8 = piVar6 + 1;
|
|
|
|
do {
|
|
|
|
piVar17 = (int *)(*piVar8 + (int)piVar8);
|
|
|
|
if (piVar18 < piVar12) {
|
|
|
|
local_8 = piVar18;
|
|
|
|
do {
|
|
|
|
iVar11 = local_c[*local_8 * 3];
|
|
|
|
for (piVar9 = piVar8 + 1; piVar9 < piVar17; piVar9 = piVar9 + 2) {
|
|
|
|
fVar5 = (float)piVar9[1] * (float)local_8[1];
|
|
|
|
pfVar14 = (float *)(*piVar9 * 0x10 + iVar11);
|
|
|
|
*pfVar14 = fVar5 * pfVar13[-2] + *pfVar14;
|
|
|
|
pfVar14 = (float *)(*piVar9 * 0x10 + 4 + iVar11);
|
|
|
|
*pfVar14 = fVar5 * pfVar13[-1] + *pfVar14;
|
|
|
|
pfVar14 = (float *)(*piVar9 * 0x10 + 8 + iVar11);
|
|
|
|
*pfVar14 = fVar5 * *pfVar13 + *pfVar14;
|
|
|
|
pfVar14 = (float *)(*piVar9 * 0x10 + 0xc + iVar11);
|
|
|
|
*pfVar14 = fVar5 * pfVar13[1] + *pfVar14;
|
|
|
|
}
|
|
|
|
local_8 = local_8 + 2;
|
|
|
|
} while (local_8 < piVar12);
|
|
|
|
}
|
|
|
|
pfVar13 = pfVar13 + 4;
|
|
|
|
piVar8 = piVar17;
|
|
|
|
} while (piVar17 < (int *)(iVar3 + (int)piVar6));
|
|
|
|
}
|
|
|
|
for (; piVar18 < piVar12; piVar18 = piVar18 + 2) {
|
|
|
|
piVar17 = local_c + *piVar18 * 3;
|
|
|
|
piVar8 = piVar17 + 2;
|
|
|
|
*piVar8 = *piVar8 + -1;
|
|
|
|
fVar2 = _DAT_0079a1a0;
|
|
|
|
fVar5 = _DAT_007938b0;
|
|
|
|
if (*piVar8 == 0) {
|
|
|
|
iVar11 = *(int *)(*param_1 + 8);
|
|
|
|
if (iVar11 == 1) {
|
|
|
|
iVar11 = 0;
|
|
|
|
uVar10 = 0;
|
|
|
|
if (*(int *)(param_1[1] + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
pfVar13 = (float *)(*piVar17 + iVar11);
|
|
|
|
if (0.0 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = 0.0;
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar2;
|
|
|
|
pfVar13 = (float *)(*piVar17 + 4 + iVar11);
|
|
|
|
if (0.0 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = 0.0;
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar2;
|
|
|
|
pfVar13 = (float *)(*piVar17 + 8 + iVar11);
|
|
|
|
if (0.0 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = 0.0;
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar2;
|
|
|
|
pfVar13 = (float *)(*piVar17 + 0xc + iVar11);
|
|
|
|
if (0.0 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = 0.0;
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar2;
|
|
|
|
uVar10 = uVar10 + 1;
|
|
|
|
iVar11 = iVar11 + 0x10;
|
|
|
|
} while (uVar10 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar11 == 2) {
|
|
|
|
iVar11 = 0;
|
|
|
|
uVar10 = 0;
|
|
|
|
if (*(int *)(param_1[1] + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
pfVar13 = (float *)(*piVar17 + iVar11);
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar1;
|
|
|
|
pfVar13 = (float *)(*piVar17 + 4 + iVar11);
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar1;
|
|
|
|
pfVar13 = (float *)(*piVar17 + 8 + iVar11);
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar1;
|
|
|
|
pfVar13 = (float *)(*piVar17 + 0xc + iVar11);
|
|
|
|
if (0.0 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 0.0;
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar1;
|
|
|
|
uVar10 = uVar10 + 1;
|
|
|
|
iVar11 = iVar11 + 0x10;
|
|
|
|
} while (uVar10 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar11 == 3) {
|
|
|
|
iVar11 = 0;
|
|
|
|
uVar10 = 0;
|
|
|
|
if (*(int *)(param_1[1] + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
pfVar13 = (float *)(*piVar17 + iVar11);
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar1;
|
|
|
|
pfVar13 = (float *)(*piVar17 + 4 + iVar11);
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar1;
|
|
|
|
pfVar13 = (float *)(*piVar17 + 8 + iVar11);
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar1;
|
|
|
|
pfVar13 = (float *)(*piVar17 + 0xc + iVar11);
|
|
|
|
fVar1 = fVar2;
|
|
|
|
if (fVar2 <= *pfVar13) {
|
|
|
|
if (fVar5 <= *pfVar13) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar13 = fVar1;
|
|
|
|
uVar10 = uVar10 + 1;
|
|
|
|
iVar11 = iVar11 + 0x10;
|
|
|
|
} while (uVar10 < *(uint *)(param_1[1] + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
(**(code **)(*(int *)param_1[1] + 8))(*piVar18,0,*piVar17);
|
|
|
|
piVar17[1] = (int)local_18;
|
|
|
|
local_18 = piVar17;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_20 = local_20 + 1;
|
|
|
|
piVar18 = piVar12;
|
|
|
|
}
|
|
|
|
uVar15 = 0;
|
|
|
|
goto LAB_005f3507;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_005f34fb:
|
|
|
|
uVar15 = 0x8007000e;
|
|
|
|
}
|
|
|
|
LAB_005f3507:
|
|
|
|
if (local_c != (int *)0x0) {
|
|
|
|
FUN_005f28b0(3);
|
|
|
|
}
|
|
|
|
operator_delete(local_1c);
|
|
|
|
operator_delete(piVar6);
|
|
|
|
operator_delete(local_10);
|
|
|
|
operator_delete((void *)0x0);
|
|
|
|
return uVar15;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f3545 at 0x005F3545 (size: 317) ---
|
|
|
|
|
|
int __thiscall FUN_005f3545(int *param_1,int param_2,int param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
param_1[1] = 0;
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[2] = param_4;
|
|
|
|
if ((((param_4 & 0xffff) == 0) || (5 < (param_4 & 0xffff))) || ((param_4 & 0xff800000) != 0)) {
|
|
|
|
return -0x7789f794;
|
|
|
|
}
|
|
|
|
*(uint *)(param_3 + 0x48) = param_4 & 0x200000;
|
|
|
|
*(uint *)(param_2 + 0x48) = param_4 & 0x400000;
|
|
|
|
*(uint *)(param_2 + 0x40) = param_4 & 0x80000;
|
|
|
|
*(uint *)(param_2 + 0x44) = param_4 & 0x100000;
|
|
|
|
iVar1 = FUN_005fe6c1(param_2);
|
|
|
|
param_1[1] = iVar1;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_005fe6c1(param_3);
|
|
|
|
*param_1 = iVar1;
|
|
|
|
if (iVar1 != 0) {
|
|
|
|
iVar1 = FUN_005f535b(iVar1);
|
|
|
|
if (iVar1 < 0) goto LAB_005f3653;
|
|
|
|
iVar1 = FUN_005f100a();
|
|
|
|
if ((((-1 < iVar1) || (iVar1 = FUN_005f1114(), -1 < iVar1)) ||
|
|
|
|
((iVar1 = FUN_005f11e7(), -1 < iVar1 ||
|
|
|
|
((iVar1 = FUN_005f13ba(), -1 < iVar1 || (iVar1 = FUN_005f1590(), -1 < iVar1)))))) ||
|
|
|
|
((iVar1 = FUN_005f1958(), -1 < iVar1 ||
|
|
|
|
((((iVar1 = FUN_005f1e4c(), -1 < iVar1 || (iVar1 = FUN_005f21ee(), -1 < iVar1)) ||
|
|
|
|
(iVar1 = FUN_005f2f85(), -1 < iVar1)) || (iVar1 = FUN_005f28ff(), -1 < iVar1)))))) {
|
|
|
|
iVar1 = 0;
|
|
|
|
goto LAB_005f3653;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = -0x7fffbffb;
|
|
|
|
LAB_005f3653:
|
|
|
|
if ((undefined4 *)param_1[1] != (undefined4 *)0x0) {
|
|
|
|
(*(code *)**(undefined4 **)param_1[1])(1);
|
|
|
|
param_1[1] = 0;
|
|
|
|
}
|
|
|
|
if ((undefined4 *)*param_1 != (undefined4 *)0x0) {
|
|
|
|
(*(code *)**(undefined4 **)*param_1)(1);
|
|
|
|
*param_1 = 0;
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f3682 at 0x005F3682 (size: 19) ---
|
|
|
|
|
|
void __fastcall FUN_005f3682(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f3695 at 0x005F3695 (size: 223) ---
|
|
|
|
|
|
int FUN_005f3695(int *param_1,int *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
int local_3c [7];
|
|
|
|
uint local_20;
|
|
|
|
uint local_1c;
|
|
|
|
undefined4 *local_18;
|
|
|
|
uint local_14;
|
|
|
|
undefined4 *local_10;
|
|
|
|
uint local_c;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
(**(code **)(*param_1 + 0x30))(param_1,local_3c);
|
|
|
|
iVar1 = (**(code **)(*param_1 + 0x34))(param_1,&local_14,0,0);
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
iVar1 = (**(code **)(*param_2 + 0x34))(param_2,&local_1c,0,0);
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
if ((((local_3c[0] == 0x31545844) || (local_3c[0] == 0x32545844)) ||
|
|
|
|
(local_3c[0] == 0x33545844)) ||
|
|
|
|
((local_3c[0] == 0x34545844 || (local_3c[0] == 0x35545844)))) {
|
|
|
|
local_20 = local_20 + 3 >> 2;
|
|
|
|
}
|
|
|
|
local_c = local_1c;
|
|
|
|
if ((int)local_14 <= (int)local_1c) {
|
|
|
|
local_c = local_14;
|
|
|
|
}
|
|
|
|
local_8 = 0;
|
|
|
|
if (local_20 != 0) {
|
|
|
|
do {
|
|
|
|
puVar3 = local_10;
|
|
|
|
puVar4 = local_18;
|
|
|
|
for (uVar2 = local_c >> 2; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
|
|
*puVar4 = *puVar3;
|
|
|
|
puVar3 = puVar3 + 1;
|
|
|
|
puVar4 = puVar4 + 1;
|
|
|
|
}
|
|
|
|
for (uVar2 = local_c & 3; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
|
|
*(undefined1 *)puVar4 = *(undefined1 *)puVar3;
|
|
|
|
puVar3 = (undefined4 *)((int)puVar3 + 1);
|
|
|
|
puVar4 = (undefined4 *)((int)puVar4 + 1);
|
|
|
|
}
|
|
|
|
local_10 = (undefined4 *)((int)local_10 + local_14);
|
|
|
|
local_18 = (undefined4 *)((int)local_18 + local_1c);
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
} while (local_8 < local_20);
|
|
|
|
}
|
|
|
|
iVar1 = 0;
|
|
|
|
(**(code **)(*param_2 + 0x38))(param_2);
|
|
|
|
}
|
|
|
|
(**(code **)(*param_1 + 0x38))(param_1);
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f3774 at 0x005F3774 (size: 179) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f3774(byte *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
piVar1 = *(int **)(param_1 + 8);
|
|
|
|
if ((piVar1 != (int *)0x0) || (piVar1 = *(int **)(param_1 + 4), piVar1 != (int *)0x0)) {
|
|
|
|
(**(code **)(*piVar1 + 0x38))(piVar1);
|
|
|
|
}
|
|
|
|
if ((((*(int *)(param_1 + 4) != 0) && (*(int *)(param_1 + 8) != 0)) &&
|
|
|
|
(*(int *)(param_1 + 0x10) != 0)) && ((*param_1 & 1) == 0)) {
|
|
|
|
FUN_005efb7f(1);
|
|
|
|
iVar2 = (**(code **)(**(int **)(param_1 + 0x10) + 0x78))
|
|
|
|
(*(int **)(param_1 + 0x10),*(undefined4 *)(param_1 + 8),0,
|
|
|
|
*(undefined4 *)(param_1 + 4),0);
|
|
|
|
FUN_005efb7f(0);
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
FUN_005efb7f(1);
|
|
|
|
FUN_005f3695(*(undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 4));
|
|
|
|
FUN_005efb7f(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(param_1 + 8);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[9] = 0;
|
|
|
|
param_1[10] = 0;
|
|
|
|
param_1[0xb] = 0;
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(param_1 + 0xc);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
param_1[0xc] = 0;
|
|
|
|
param_1[0xd] = 0;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(param_1 + 0x10);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(param_1 + 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f3827 at 0x005F3827 (size: 6) ---
|
|
|
|
|
|
void __fastcall FUN_005f3827(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = 0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f382d at 0x005F382D (size: 36) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_005f382d(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
piVar1 = (int *)*param_1;
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0x28))(piVar1);
|
|
|
|
piVar1 = (int *)*param_1;
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
*param_1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- thunk_FUN_005f3774 at 0x005F3851 (size: 5) ---
|
|
|
|
|
|
undefined4 __fastcall thunk_FUN_005f3774(byte *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
piVar1 = *(int **)(param_1 + 8);
|
|
|
|
if ((piVar1 != (int *)0x0) || (piVar1 = *(int **)(param_1 + 4), piVar1 != (int *)0x0)) {
|
|
|
|
(**(code **)(*piVar1 + 0x38))(piVar1);
|
|
|
|
}
|
|
|
|
if ((((*(int *)(param_1 + 4) != 0) && (*(int *)(param_1 + 8) != 0)) &&
|
|
|
|
(*(int *)(param_1 + 0x10) != 0)) && ((*param_1 & 1) == 0)) {
|
|
|
|
FUN_005efb7f(1);
|
|
|
|
iVar2 = (**(code **)(**(int **)(param_1 + 0x10) + 0x78))
|
|
|
|
(*(int **)(param_1 + 0x10),*(undefined4 *)(param_1 + 8),0,
|
|
|
|
*(undefined4 *)(param_1 + 4),0);
|
|
|
|
FUN_005efb7f(0);
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
FUN_005efb7f(1);
|
|
|
|
FUN_005f3695(*(undefined4 *)(param_1 + 8),*(undefined4 *)(param_1 + 4));
|
|
|
|
FUN_005efb7f(0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(param_1 + 8);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[9] = 0;
|
|
|
|
param_1[10] = 0;
|
|
|
|
param_1[0xb] = 0;
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(param_1 + 0xc);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
param_1[0xc] = 0;
|
|
|
|
param_1[0xd] = 0;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(param_1 + 0x10);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x11] = 0;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
}
|
|
|
|
piVar1 = *(int **)(param_1 + 4);
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = 0;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f3856 at 0x005F3856 (size: 1263) ---
|
|
|
|
|
|
int FUN_005f3856(undefined4 *param_1,int *param_2,undefined4 param_3,uint *param_4,
|
|
|
|
undefined4 param_5,uint param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint *puVar5;
|
|
|
|
uint *puVar6;
|
|
|
|
int local_74 [2];
|
|
|
|
byte local_6b;
|
|
|
|
int local_68;
|
|
|
|
uint local_5c;
|
|
|
|
uint local_58;
|
|
|
|
uint local_54;
|
|
|
|
uint local_50;
|
|
|
|
uint local_4c;
|
|
|
|
uint local_48;
|
|
|
|
uint local_44;
|
|
|
|
uint local_40;
|
|
|
|
uint local_3c;
|
|
|
|
uint local_38;
|
|
|
|
undefined4 local_34;
|
|
|
|
undefined4 local_30;
|
|
|
|
uint local_2c;
|
|
|
|
uint local_28;
|
|
|
|
uint local_24;
|
|
|
|
int *local_20;
|
|
|
|
uint local_1c;
|
|
|
|
uint *local_18;
|
|
|
|
int *local_14;
|
|
|
|
int local_10;
|
|
|
|
int local_c;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
FUN_005f3774();
|
|
|
|
(**(code **)(*param_2 + 0x30))(param_2,local_74);
|
|
|
|
puVar5 = local_18;
|
|
|
|
if (param_4 == (uint *)0x0) {
|
|
|
|
local_3c = local_5c;
|
|
|
|
local_38 = local_58;
|
|
|
|
local_44 = 0;
|
|
|
|
local_40 = 0;
|
|
|
|
local_8 = 0;
|
|
|
|
local_1c = ~param_6 & 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_44 = *param_4;
|
|
|
|
local_40 = param_4[1];
|
|
|
|
local_3c = param_4[2];
|
|
|
|
local_38 = param_4[3];
|
|
|
|
if (((((int)local_44 < 0) || (local_5c < local_3c)) || ((int)local_3c < (int)local_44)) ||
|
|
|
|
((((int)local_40 < 0 || (local_58 < local_38)) || ((int)local_38 < (int)local_40)))) {
|
|
|
|
return -0x7789f794;
|
|
|
|
}
|
|
|
|
local_1c = 1;
|
|
|
|
if (((local_44 != 0) || (local_3c != local_5c)) ||
|
|
|
|
((local_40 != 0 || (local_8 = 0, local_38 != local_58)))) {
|
|
|
|
local_8 = 1;
|
|
|
|
}
|
|
|
|
if (((param_6 & 1) != 0) || (local_8 != 0)) {
|
|
|
|
local_1c = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_2c = param_6 & 0x10000;
|
|
|
|
if (local_2c != 0) {
|
|
|
|
local_28 = local_5c;
|
|
|
|
local_24 = local_58;
|
|
|
|
local_10 = 0;
|
|
|
|
if ((((local_74[0] == 0x31545844) || (local_74[0] == 0x32545844)) || (local_74[0] == 0x33545844)
|
|
|
|
) || ((local_74[0] == 0x34545844 || (local_74[0] == 0x35545844)))) {
|
|
|
|
uVar4 = local_58 | local_5c;
|
|
|
|
while ((uVar4 & 3) != 0) {
|
|
|
|
local_10 = local_10 + 1;
|
|
|
|
uVar4 = (local_58 | local_5c) << ((byte)local_10 & 0x1f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar1 = local_18 + 4;
|
|
|
|
(**(code **)(*param_2 + 0xc))(param_2,puVar1);
|
|
|
|
puVar5 = puVar5 + 3;
|
|
|
|
local_c = (**(code **)(*(int *)*puVar1 + 0x5c))
|
|
|
|
((int *)*puVar1,local_28 << ((byte)local_10 & 0x1f),
|
|
|
|
local_24 << ((byte)local_10 & 0x1f),local_10 + 1,0,local_74[0],
|
|
|
|
(local_68 == 3) + '\x02',puVar5,0);
|
|
|
|
if (-1 < local_c) {
|
|
|
|
puVar6 = local_18 + 2;
|
|
|
|
local_c = (**(code **)(*(int *)*puVar5 + 0x48))((int *)*puVar5,local_10,puVar6);
|
|
|
|
if (-1 < local_c) {
|
|
|
|
if (local_1c == 0) {
|
|
|
|
local_14 = (int *)0x0;
|
|
|
|
FUN_005efb7f(1);
|
|
|
|
local_c = FUN_005f3695(param_2,*puVar6);
|
|
|
|
FUN_005efb7f(0);
|
|
|
|
if (local_c < 0) {
|
|
|
|
if ((local_10 == 0) &&
|
|
|
|
(local_c = (**(code **)(*(int *)*puVar1 + 0x70))
|
|
|
|
((int *)*puVar1,local_28,local_24,local_74[0],0,0,1,&local_14,0)
|
|
|
|
, -1 < local_c)) {
|
|
|
|
local_c = (**(code **)(*(int *)*puVar1 + 0x88))((int *)*puVar1,param_2,0,local_14,0,0)
|
|
|
|
;
|
|
|
|
if (local_c < 0) {
|
|
|
|
(**(code **)(*local_14 + 8))(local_14);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_c = FUN_005f3695(local_14,*puVar6);
|
|
|
|
(**(code **)(*local_14 + 8))(local_14);
|
|
|
|
if (-1 < local_c) goto LAB_005f3a9e;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar2 = (int *)*puVar6;
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 8))(piVar2);
|
|
|
|
*puVar6 = 0;
|
|
|
|
}
|
|
|
|
goto LAB_005f3a78;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_005f3a9e:
|
|
|
|
local_14 = (int *)*puVar6;
|
|
|
|
goto LAB_005f3abe;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar2 = (int *)local_18[2];
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 8))(piVar2);
|
|
|
|
local_18[2] = 0;
|
|
|
|
}
|
|
|
|
LAB_005f3a78:
|
|
|
|
piVar2 = (int *)*puVar5;
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar2 + 8))(piVar2);
|
|
|
|
*puVar5 = 0;
|
|
|
|
}
|
|
|
|
piVar2 = (int *)*puVar1;
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
return local_c;
|
|
|
|
}
|
|
|
|
(**(code **)(*piVar2 + 8))(piVar2);
|
|
|
|
*puVar1 = 0;
|
|
|
|
return local_c;
|
|
|
|
}
|
|
|
|
local_14 = param_2;
|
|
|
|
LAB_005f3abe:
|
|
|
|
uVar4 = (param_6 & 1 | 0x80) << 4;
|
|
|
|
if (((local_1c == 0) || (local_2c != 0)) || ((local_6b & 2) == 0)) {
|
|
|
|
LAB_005f3b41:
|
|
|
|
if (local_8 != 0) {
|
|
|
|
if (local_74[0] < 0x34545845) {
|
|
|
|
if (((local_74[0] == 0x34545844) || (local_74[0] == 0x31545844)) ||
|
|
|
|
(local_74[0] == 0x32545844)) {
|
|
|
|
LAB_005f3b79:
|
|
|
|
local_4c = local_3c + 3 & 0xfffffffc;
|
|
|
|
local_54 = local_44 & 0xfffffffc;
|
|
|
|
local_50 = local_40 & 0xfffffffc;
|
|
|
|
local_48 = local_38 + 3 & 0xfffffffc;
|
|
|
|
if (local_5c < local_4c) {
|
|
|
|
local_4c = local_5c;
|
|
|
|
}
|
|
|
|
if (local_58 < local_48) {
|
|
|
|
local_48 = local_58;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (local_74[0] != 0x32595559) {
|
|
|
|
if (local_74[0] != 0x33545844) goto LAB_005f3bec;
|
|
|
|
goto LAB_005f3b79;
|
|
|
|
}
|
|
|
|
LAB_005f3bf8:
|
|
|
|
local_54 = local_44 & 0xfffffffe;
|
|
|
|
local_4c = local_3c + 1 & 0xfffffffe;
|
|
|
|
local_50 = local_40;
|
|
|
|
local_48 = local_38;
|
|
|
|
if (local_5c < local_4c) {
|
|
|
|
local_4c = local_5c;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((((local_54 == 0) && (local_4c == local_5c)) && (local_50 == 0)) &&
|
|
|
|
(local_48 == local_58)) {
|
|
|
|
local_8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (local_74[0] == 0x35545844) goto LAB_005f3b79;
|
|
|
|
if (((local_74[0] == 0x42475247) || (local_74[0] == 0x47424752)) ||
|
|
|
|
(local_74[0] == 0x59565955)) goto LAB_005f3bf8;
|
|
|
|
LAB_005f3bec:
|
|
|
|
local_54 = local_44;
|
|
|
|
local_50 = local_40;
|
|
|
|
local_4c = local_3c;
|
|
|
|
local_48 = local_38;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_2c != 0) {
|
|
|
|
iVar3 = (**(code **)(*local_14 + 0x34))
|
|
|
|
(local_14,&local_34,-(uint)(local_8 != 0) & (uint)&local_54,uVar4);
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
goto LAB_005f3cb8;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((param_6 & 0x20000) == 0) {
|
|
|
|
FUN_005efb7f(1);
|
|
|
|
iVar3 = (**(code **)(*param_2 + 0x2c))(param_2,&DAT_007f14f8,&local_20);
|
|
|
|
if (-1 < iVar3) {
|
|
|
|
iVar3 = (**(code **)(*local_20 + 0x34))(local_20);
|
|
|
|
if (iVar3 == 1) {
|
|
|
|
uVar4 = uVar4 | 0x2000;
|
|
|
|
local_8 = 0;
|
|
|
|
}
|
|
|
|
if (local_20 != (int *)0x0) {
|
|
|
|
(**(code **)(*local_20 + 8))(local_20);
|
|
|
|
local_20 = (int *)0x0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_005efb7f(0);
|
|
|
|
goto LAB_005f3b41;
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 | 0x2000;
|
|
|
|
local_8 = 0;
|
|
|
|
}
|
|
|
|
FUN_005efb7f(1);
|
|
|
|
iVar3 = (**(code **)(*local_14 + 0x34))
|
|
|
|
(local_14,&local_34,-(uint)(local_8 != 0) & (uint)&local_54,uVar4);
|
|
|
|
FUN_005efb7f(0);
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = FUN_005f3856(param_1,param_2,param_3,param_4,param_5,param_6 | 0x10000);
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
LAB_005f3cb8:
|
|
|
|
if (local_8 != 0) {
|
|
|
|
local_44 = local_44 - local_54;
|
|
|
|
local_3c = local_3c - local_54;
|
|
|
|
local_40 = local_40 - local_50;
|
|
|
|
local_38 = local_38 - local_50;
|
|
|
|
}
|
|
|
|
*param_1 = local_30;
|
|
|
|
param_1[1] = local_74[0];
|
|
|
|
param_1[2] = local_34;
|
|
|
|
param_1[6] = local_5c;
|
|
|
|
param_1[7] = local_58;
|
|
|
|
param_1[10] = local_44;
|
|
|
|
param_1[9] = 1;
|
|
|
|
param_1[0xb] = local_40;
|
|
|
|
param_1[0xf] = 1;
|
|
|
|
param_1[0x10] = 1;
|
|
|
|
param_1[0x13] = param_5;
|
|
|
|
param_1[0xc] = local_3c;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[8] = 0;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[0x11] = 0;
|
|
|
|
param_1[0x12] = 0;
|
|
|
|
param_1[0x14] = param_3;
|
|
|
|
param_1[0xd] = local_38;
|
|
|
|
local_18[1] = (uint)param_2;
|
|
|
|
*local_18 = param_6;
|
|
|
|
(**(code **)(*param_2 + 4))(param_2);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- thunk_FUN_005f382d at 0x005F3D45 (size: 5) ---
|
|
|
|
|
|
undefined4 __fastcall thunk_FUN_005f382d(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
|
|
|
|
piVar1 = (int *)*param_1;
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 0x28))(piVar1);
|
|
|
|
piVar1 = (int *)*param_1;
|
|
|
|
if (piVar1 != (int *)0x0) {
|
|
|
|
(**(code **)(*piVar1 + 8))(piVar1);
|
|
|
|
*param_1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f3d4a at 0x005F3D4A (size: 885) ---
|
|
|
|
|
|
int __thiscall
|
|
|
|
FUN_005f3d4a(int *param_1,undefined4 *param_2,int *param_3,undefined4 param_4,uint *param_5,
|
|
|
|
undefined4 param_6,uint param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
bool bVar1;
|
|
|
|
uint uVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint *puVar6;
|
|
|
|
uint *puVar7;
|
|
|
|
int local_68 [2];
|
|
|
|
uint local_60;
|
|
|
|
int local_5c;
|
|
|
|
uint local_58;
|
|
|
|
uint local_54;
|
|
|
|
uint local_50;
|
|
|
|
uint local_4c [4];
|
|
|
|
uint local_3c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34 [4];
|
|
|
|
uint local_24;
|
|
|
|
uint local_20;
|
|
|
|
undefined4 local_1c;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
int *local_10;
|
|
|
|
uint local_c;
|
|
|
|
int *local_8;
|
|
|
|
|
|
|
|
local_10 = param_1;
|
|
|
|
if (*param_1 != 0) {
|
|
|
|
FUN_005f382d();
|
|
|
|
}
|
|
|
|
(**(code **)(*param_3 + 0x20))(param_3,local_68);
|
|
|
|
if (param_5 == (uint *)0x0) {
|
|
|
|
bVar1 = false;
|
|
|
|
local_34[2] = local_58;
|
|
|
|
local_34[3] = local_54;
|
|
|
|
uVar3 = ~param_7 & 1;
|
|
|
|
local_34[0] = 0;
|
|
|
|
local_34[1] = 0;
|
|
|
|
local_24 = 0;
|
|
|
|
local_20 = local_50;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar6 = local_34;
|
|
|
|
for (iVar4 = 6; iVar4 != 0; iVar4 = iVar4 + -1) {
|
|
|
|
*puVar6 = *param_5;
|
|
|
|
param_5 = param_5 + 1;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
}
|
|
|
|
if (local_58 < local_34[2]) {
|
|
|
|
return -0x7789f794;
|
|
|
|
}
|
|
|
|
if (local_34[2] < local_34[0]) {
|
|
|
|
return -0x7789f794;
|
|
|
|
}
|
|
|
|
if (local_54 < local_34[3]) {
|
|
|
|
return -0x7789f794;
|
|
|
|
}
|
|
|
|
if (local_34[3] < local_34[1]) {
|
|
|
|
return -0x7789f794;
|
|
|
|
}
|
|
|
|
if (local_50 < local_20) {
|
|
|
|
return -0x7789f794;
|
|
|
|
}
|
|
|
|
if (local_20 < local_24) {
|
|
|
|
return -0x7789f794;
|
|
|
|
}
|
|
|
|
if (((((local_34[0] != 0) || (local_34[2] != local_58)) || (local_34[1] != 0)) ||
|
|
|
|
((local_34[3] != local_54 || (local_24 != 0)))) || (bVar1 = false, local_20 != local_50)) {
|
|
|
|
bVar1 = true;
|
|
|
|
}
|
|
|
|
if (((param_7 & 1) != 0) || (bVar1)) {
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar3 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar2 = local_20;
|
|
|
|
if ((local_5c == 0) && ((local_60 & 0x200) == 0)) {
|
|
|
|
return -0x7789f794;
|
|
|
|
}
|
|
|
|
uVar5 = (param_7 & 1 | 0x80) << 4;
|
|
|
|
local_c = uVar5;
|
|
|
|
if ((uVar3 == 0) || ((local_60 & 0x200) == 0)) {
|
|
|
|
LAB_005f3eb2:
|
|
|
|
if (bVar1) {
|
|
|
|
if (local_68[0] < 0x34545845) {
|
|
|
|
if (((local_68[0] != 0x34545844) && (local_68[0] != 0x31545844)) &&
|
|
|
|
(local_68[0] != 0x32545844)) {
|
|
|
|
if (local_68[0] == 0x32595559) {
|
|
|
|
LAB_005f3fba:
|
|
|
|
local_4c[3] = local_34[3];
|
|
|
|
local_4c[1] = local_34[1];
|
|
|
|
local_4c[0] = local_34[0] & 0xfffffffe;
|
|
|
|
local_4c[2] = local_34[2] + 1 & 0xfffffffe;
|
|
|
|
local_3c = local_24;
|
|
|
|
if (local_58 < local_4c[2]) {
|
|
|
|
local_4c[2] = local_58;
|
|
|
|
}
|
|
|
|
local_38 = uVar2;
|
|
|
|
if (((local_4c[0] != 0) || (local_4c[2] != local_58)) ||
|
|
|
|
((local_34[1] != 0 ||
|
|
|
|
(((local_34[3] != local_54 || (local_24 != 0)) || (uVar2 != local_50))))))
|
|
|
|
goto LAB_005f4014;
|
|
|
|
goto LAB_005f3f6c;
|
|
|
|
}
|
|
|
|
if (local_68[0] != 0x33545844) goto LAB_005f3fad;
|
|
|
|
}
|
|
|
|
LAB_005f3ef5:
|
|
|
|
local_4c[0] = local_34[0] & 0xfffffffc;
|
|
|
|
local_4c[2] = local_34[2] + 3 & 0xfffffffc;
|
|
|
|
local_4c[1] = local_34[1] & 0xfffffffc;
|
|
|
|
local_4c[3] = local_34[3] + 3 & 0xfffffffc;
|
|
|
|
local_3c = local_24;
|
|
|
|
if (local_58 < local_4c[2]) {
|
|
|
|
local_4c[2] = local_58;
|
|
|
|
}
|
|
|
|
if (local_54 < local_4c[3]) {
|
|
|
|
local_4c[3] = local_54;
|
|
|
|
}
|
|
|
|
uVar5 = local_c;
|
|
|
|
local_38 = uVar2;
|
|
|
|
if (((local_4c[0] == 0) && (local_4c[2] == local_58)) &&
|
|
|
|
(((local_4c[1] == 0 && ((local_4c[3] == local_54 && (local_24 == 0)))) &&
|
|
|
|
(uVar2 == local_50)))) goto LAB_005f3f6c;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (local_68[0] == 0x35545844) goto LAB_005f3ef5;
|
|
|
|
if (((local_68[0] == 0x42475247) || (local_68[0] == 0x47424752)) ||
|
|
|
|
(local_68[0] == 0x59565955)) goto LAB_005f3fba;
|
|
|
|
LAB_005f3fad:
|
|
|
|
puVar6 = local_34;
|
|
|
|
puVar7 = local_4c;
|
|
|
|
for (iVar4 = 6; uVar5 = local_c, iVar4 != 0; iVar4 = iVar4 + -1) {
|
|
|
|
*puVar7 = *puVar6;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_005f4014:
|
|
|
|
iVar4 = (**(code **)(*param_3 + 0x24))(param_3,&local_1c,local_4c,uVar5);
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
return iVar4;
|
|
|
|
}
|
|
|
|
local_34[0] = local_34[0] - local_4c[0];
|
|
|
|
local_34[2] = local_34[2] - local_4c[0];
|
|
|
|
local_34[1] = local_34[1] - local_4c[1];
|
|
|
|
local_34[3] = local_34[3] - local_4c[1];
|
|
|
|
local_24 = local_24 - local_3c;
|
|
|
|
local_20 = uVar2 - local_3c;
|
|
|
|
goto LAB_005f404b;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((param_7 & 0x20000) == 0) {
|
|
|
|
FUN_005efb7f(1);
|
|
|
|
iVar4 = (**(code **)(*param_3 + 0x1c))(param_3,&DAT_007f14e8,&local_8);
|
|
|
|
if (-1 < iVar4) {
|
|
|
|
iVar4 = (**(code **)(*local_8 + 0x34))(local_8);
|
|
|
|
if (iVar4 == 1) {
|
|
|
|
uVar5 = uVar5 | 0x2000;
|
|
|
|
bVar1 = false;
|
|
|
|
local_c = uVar5;
|
|
|
|
}
|
|
|
|
if (local_8 != (int *)0x0) {
|
|
|
|
(**(code **)(*local_8 + 8))(local_8);
|
|
|
|
local_8 = (int *)0x0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
FUN_005efb7f(0);
|
|
|
|
goto LAB_005f3eb2;
|
|
|
|
}
|
|
|
|
uVar5 = uVar5 | 0x2000;
|
|
|
|
}
|
|
|
|
LAB_005f3f6c:
|
|
|
|
iVar4 = (**(code **)(*param_3 + 0x24))(param_3,&local_1c,0,uVar5);
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
return iVar4;
|
|
|
|
}
|
|
|
|
LAB_005f404b:
|
|
|
|
*param_2 = local_14;
|
|
|
|
param_2[0x11] = 0;
|
|
|
|
param_2[0x12] = 0;
|
|
|
|
param_2[1] = local_68[0];
|
|
|
|
param_2[2] = local_1c;
|
|
|
|
param_2[3] = local_18;
|
|
|
|
param_2[4] = 0;
|
|
|
|
param_2[5] = 0;
|
|
|
|
param_2[8] = 0;
|
|
|
|
param_2[9] = local_50;
|
|
|
|
puVar6 = local_34;
|
|
|
|
puVar7 = param_2 + 10;
|
|
|
|
for (iVar4 = 6; iVar4 != 0; iVar4 = iVar4 + -1) {
|
|
|
|
*puVar7 = *puVar6;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
puVar7 = puVar7 + 1;
|
|
|
|
}
|
|
|
|
param_2[0x13] = param_6;
|
|
|
|
param_2[6] = local_58;
|
|
|
|
param_2[0x14] = param_4;
|
|
|
|
param_2[7] = local_54;
|
|
|
|
param_2[0x10] = 1;
|
|
|
|
*local_10 = (int)param_3;
|
|
|
|
(**(code **)(*param_3 + 4))(param_3);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f40bf at 0x005F40BF (size: 40) ---
|
|
|
|
|
|
void __fastcall FUN_005f40bf(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007ede98;
|
|
|
|
operator_delete((void *)param_1[0xe]);
|
|
|
|
operator_delete((void *)param_1[0x16]);
|
|
|
|
operator_delete((void *)param_1[0x17]);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f40ea at 0x005F40EA (size: 1304) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_005f40ea(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
float *pfVar6;
|
|
|
|
int iVar7;
|
|
|
|
uint uVar8;
|
|
|
|
|
|
|
|
fVar4 = _DAT_007c6bc4;
|
|
|
|
fVar3 = _DAT_0079a1a0;
|
|
|
|
fVar1 = _DAT_007938b8;
|
|
|
|
fVar2 = _DAT_007938b0;
|
|
|
|
iVar7 = *(int *)(param_1 + 8);
|
|
|
|
if (iVar7 == 1) {
|
|
|
|
iVar7 = *(int *)(param_1 + 0x54);
|
|
|
|
if (iVar7 == 2) {
|
|
|
|
uVar8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
pfVar6 = (float *)(param_2 + 8);
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(float *)(iVar7 + *(int *)(param_1 + 0x58)) = (pfVar6[-2] + fVar2) * fVar1;
|
|
|
|
*(float *)(iVar7 + 4 + *(int *)(param_1 + 0x58)) = (pfVar6[-1] + fVar2) * fVar1;
|
|
|
|
*(float *)(iVar7 + 8 + *(int *)(param_1 + 0x58)) = (*pfVar6 + fVar2) * fVar1;
|
|
|
|
*(float *)(iVar7 + 0xc + *(int *)(param_1 + 0x58)) = pfVar6[1];
|
|
|
|
pfVar6 = pfVar6 + 4;
|
|
|
|
iVar7 = iVar7 + 0x10;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar7 == 3) {
|
|
|
|
uVar8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
pfVar6 = (float *)(param_2 + 8);
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(float *)(iVar7 + *(int *)(param_1 + 0x58)) = (pfVar6[-2] + fVar2) * fVar1;
|
|
|
|
*(float *)(iVar7 + 4 + *(int *)(param_1 + 0x58)) = (pfVar6[-1] + fVar2) * fVar1;
|
|
|
|
*(float *)(iVar7 + 8 + *(int *)(param_1 + 0x58)) = (*pfVar6 + fVar2) * fVar1;
|
|
|
|
*(float *)(iVar7 + 0xc + *(int *)(param_1 + 0x58)) = (pfVar6[1] + fVar2) * fVar1;
|
|
|
|
pfVar6 = pfVar6 + 4;
|
|
|
|
iVar7 = iVar7 + 0x10;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar7 == 4) && (uVar8 = 0, *(int *)(param_1 + 0x68) != 0)) {
|
|
|
|
pfVar6 = (float *)(param_2 + 8);
|
|
|
|
param_2 = -param_2;
|
|
|
|
do {
|
|
|
|
if (0.0 <= pfVar6[-2]) {
|
|
|
|
if (fVar2 <= pfVar6[-2]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar6[-2];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 0.0;
|
|
|
|
}
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2 + -8) = fVar1;
|
|
|
|
if (0.0 <= pfVar6[-1]) {
|
|
|
|
if (fVar2 <= pfVar6[-1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar6[-1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 0.0;
|
|
|
|
}
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2 + -4) = fVar1;
|
|
|
|
if (0.0 <= *pfVar6) {
|
|
|
|
if (fVar2 <= *pfVar6) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar6;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 0.0;
|
|
|
|
}
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2) = fVar1;
|
|
|
|
if (0.0 <= pfVar6[1]) {
|
|
|
|
if (fVar2 <= pfVar6[1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar6[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 0.0;
|
|
|
|
}
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2 + 4) = fVar1;
|
|
|
|
pfVar6 = pfVar6 + 4;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar7 == 2) {
|
|
|
|
iVar7 = *(int *)(param_1 + 0x54);
|
|
|
|
if (iVar7 == 1) {
|
|
|
|
uVar8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
pfVar6 = (float *)(param_2 + 8);
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(float *)(iVar7 + *(int *)(param_1 + 0x58)) = pfVar6[-2] * fVar4 - fVar2;
|
|
|
|
*(float *)(iVar7 + 4 + *(int *)(param_1 + 0x58)) = pfVar6[-1] * fVar4 - fVar2;
|
|
|
|
*(float *)(iVar7 + 8 + *(int *)(param_1 + 0x58)) = *pfVar6 * fVar4 - fVar2;
|
|
|
|
*(float *)(iVar7 + 0xc + *(int *)(param_1 + 0x58)) = pfVar6[1];
|
|
|
|
pfVar6 = pfVar6 + 4;
|
|
|
|
iVar7 = iVar7 + 0x10;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar7 == 3) {
|
|
|
|
uVar8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
puVar5 = (undefined4 *)(param_2 + 8);
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(iVar7 + *(int *)(param_1 + 0x58)) = puVar5[-2];
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(undefined4 *)(iVar7 + 4 + *(int *)(param_1 + 0x58)) = puVar5[-1];
|
|
|
|
*(undefined4 *)(iVar7 + 8 + *(int *)(param_1 + 0x58)) = *puVar5;
|
|
|
|
pfVar6 = (float *)(puVar5 + 1);
|
|
|
|
puVar5 = puVar5 + 4;
|
|
|
|
*(float *)(iVar7 + 0xc + *(int *)(param_1 + 0x58)) =
|
|
|
|
(*pfVar6 + _DAT_007938b0) * _DAT_007938b8;
|
|
|
|
iVar7 = iVar7 + 0x10;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar7 == 4) && (uVar8 = 0, *(int *)(param_1 + 0x68) != 0)) {
|
|
|
|
pfVar6 = (float *)(param_2 + 8);
|
|
|
|
param_2 = -param_2;
|
|
|
|
do {
|
|
|
|
fVar1 = fVar3;
|
|
|
|
if (fVar3 <= pfVar6[-2]) {
|
|
|
|
if (fVar2 <= pfVar6[-2]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar6[-2];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2 + -8) = fVar1;
|
|
|
|
fVar1 = fVar3;
|
|
|
|
if (fVar3 <= pfVar6[-1]) {
|
|
|
|
if (fVar2 <= pfVar6[-1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar6[-1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2 + -4) = fVar1;
|
|
|
|
fVar1 = fVar3;
|
|
|
|
if (fVar3 <= *pfVar6) {
|
|
|
|
if (fVar2 <= *pfVar6) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar6;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2) = fVar1;
|
|
|
|
if (0.0 <= pfVar6[1]) {
|
|
|
|
if (fVar2 <= pfVar6[1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar6[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 0.0;
|
|
|
|
}
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2 + 4) = fVar1;
|
|
|
|
pfVar6 = pfVar6 + 4;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar7 == 3) {
|
|
|
|
iVar7 = *(int *)(param_1 + 0x54);
|
|
|
|
if (iVar7 == 1) {
|
|
|
|
uVar8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
pfVar6 = (float *)(param_2 + 8);
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(float *)(iVar7 + *(int *)(param_1 + 0x58)) = pfVar6[-2] * fVar4 - fVar2;
|
|
|
|
*(float *)(iVar7 + 4 + *(int *)(param_1 + 0x58)) = pfVar6[-1] * fVar4 - fVar2;
|
|
|
|
*(float *)(iVar7 + 8 + *(int *)(param_1 + 0x58)) = *pfVar6 * fVar4 - fVar2;
|
|
|
|
*(float *)(iVar7 + 0xc + *(int *)(param_1 + 0x58)) = pfVar6[1] * fVar4 - fVar2;
|
|
|
|
pfVar6 = pfVar6 + 4;
|
|
|
|
iVar7 = iVar7 + 0x10;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar7 == 2) {
|
|
|
|
uVar8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
puVar5 = (undefined4 *)(param_2 + 8);
|
|
|
|
iVar7 = 0;
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(iVar7 + *(int *)(param_1 + 0x58)) = puVar5[-2];
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(undefined4 *)(iVar7 + 4 + *(int *)(param_1 + 0x58)) = puVar5[-1];
|
|
|
|
*(undefined4 *)(iVar7 + 8 + *(int *)(param_1 + 0x58)) = *puVar5;
|
|
|
|
pfVar6 = (float *)(puVar5 + 1);
|
|
|
|
puVar5 = puVar5 + 4;
|
|
|
|
*(float *)(iVar7 + 0xc + *(int *)(param_1 + 0x58)) = (*pfVar6 + *pfVar6) - _DAT_007938b0;
|
|
|
|
iVar7 = iVar7 + 0x10;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((iVar7 == 4) && (uVar8 = 0, *(int *)(param_1 + 0x68) != 0)) {
|
|
|
|
pfVar6 = (float *)(param_2 + 8);
|
|
|
|
param_2 = -param_2;
|
|
|
|
do {
|
|
|
|
fVar1 = fVar3;
|
|
|
|
if (fVar3 <= pfVar6[-2]) {
|
|
|
|
if (fVar2 <= pfVar6[-2]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar6[-2];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2 + -8) = fVar1;
|
|
|
|
fVar1 = fVar3;
|
|
|
|
if (fVar3 <= pfVar6[-1]) {
|
|
|
|
if (fVar2 <= pfVar6[-1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar6[-1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2 + -4) = fVar1;
|
|
|
|
fVar1 = fVar3;
|
|
|
|
if (fVar3 <= *pfVar6) {
|
|
|
|
if (fVar2 <= *pfVar6) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = *pfVar6;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2) = fVar1;
|
|
|
|
fVar1 = fVar3;
|
|
|
|
if (fVar3 <= pfVar6[1]) {
|
|
|
|
if (fVar2 <= pfVar6[1]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = pfVar6[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*(float *)((int)pfVar6 + *(int *)(param_1 + 0x58) + param_2 + 4) = fVar1;
|
|
|
|
pfVar6 = pfVar6 + 4;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return *(undefined4 *)(param_1 + 0x58);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f4603 at 0x005F4603 (size: 771) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __fastcall FUN_005f4603(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float *pfVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
float *pfVar5;
|
|
|
|
int iVar6;
|
|
|
|
ushort *puVar7;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
undefined4 local_10;
|
|
|
|
int local_c;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xa0) == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0xa4) == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
pfVar5 = *(float **)(param_1 + 0x80);
|
|
|
|
puVar7 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x94) * *(int *)(param_1 + 100) +
|
|
|
|
*(int *)(param_1 + 0x88) * *(int *)(param_1 + 0x60) + *(int *)(param_1 + 0x84) * 2 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
local_10 = CONCAT22(local_10._2_2_,in_FPUControlWord);
|
|
|
|
*(undefined4 *)(param_1 + 0x7c) = local_10;
|
|
|
|
iVar3 = *(int *)(param_1 + 4);
|
|
|
|
if (iVar3 != 0x32595559) {
|
|
|
|
if ((iVar3 == 0x42475247) || (iVar3 == 0x47424752)) {
|
|
|
|
for (uVar4 = *(uint *)(param_1 + 0x84); uVar4 < *(uint *)(param_1 + 0x8c); uVar4 = uVar4 + 2)
|
|
|
|
{
|
|
|
|
*puVar7 = (ushort)((int)ROUND(pfVar5[1] * _DAT_00797188 + _DAT_007938b8) <<
|
|
|
|
((byte)*(undefined4 *)(param_1 + 0xa8) & 0x1f)) |
|
|
|
|
(ushort)((int)ROUND(*pfVar5 * _DAT_00797188 + _DAT_007938b8) <<
|
|
|
|
((byte)*(undefined4 *)(param_1 + 0xac) & 0x1f));
|
|
|
|
pfVar1 = pfVar5 + 5;
|
|
|
|
pfVar2 = pfVar5 + 2;
|
|
|
|
pfVar5 = pfVar5 + 8;
|
|
|
|
puVar7[1] = (ushort)((int)ROUND(*pfVar1 * _DAT_00797188 + _DAT_007938b8) <<
|
|
|
|
((byte)*(undefined4 *)(param_1 + 0xa8) & 0x1f)) |
|
|
|
|
(ushort)((int)ROUND(*pfVar2 * _DAT_00797188 + _DAT_007938b8) <<
|
|
|
|
((byte)*(undefined4 *)(param_1 + 0xac) & 0x1f));
|
|
|
|
puVar7 = puVar7 + 2;
|
|
|
|
}
|
|
|
|
goto LAB_005f48ef;
|
|
|
|
}
|
|
|
|
if (iVar3 != 0x59565955) goto LAB_005f48ef;
|
|
|
|
}
|
|
|
|
for (uVar4 = *(uint *)(param_1 + 0x84); uVar4 < *(uint *)(param_1 + 0x8c); uVar4 = uVar4 + 2) {
|
|
|
|
iVar3 = (int)ROUND(pfVar5[2] * _DAT_007edec0 +
|
|
|
|
pfVar5[1] * _DAT_007edebc + *pfVar5 * _DAT_007edec4 + _DAT_007938b8) + 0x10;
|
|
|
|
local_8 = (int)ROUND(pfVar5[5] * _DAT_007edebc +
|
|
|
|
pfVar5[6] * _DAT_007edec0 + pfVar5[4] * _DAT_007edec4 + _DAT_007938b8) +
|
|
|
|
0x10;
|
|
|
|
iVar6 = (int)ROUND(((pfVar5[2] * _DAT_007edeb8 - pfVar5[1] * _DAT_007edeb4) -
|
|
|
|
*pfVar5 * _DAT_007edeb0) + _DAT_007938b8) + 0x80;
|
|
|
|
local_c = (int)ROUND((*pfVar5 * _DAT_007edeb8 -
|
|
|
|
(pfVar5[2] * _DAT_007edea8 + pfVar5[1] * _DAT_007edeac)) + _DAT_007938b8) +
|
|
|
|
0x80;
|
|
|
|
if (iVar3 < 0) {
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
else if (0xff < iVar3) {
|
|
|
|
iVar3 = 0xff;
|
|
|
|
}
|
|
|
|
if (local_8 < 0) {
|
|
|
|
local_8 = 0;
|
|
|
|
}
|
|
|
|
else if (0xff < local_8) {
|
|
|
|
local_8 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar6 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
else if (0xff < iVar6) {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
if (local_c < 0) {
|
|
|
|
local_c = 0;
|
|
|
|
}
|
|
|
|
else if (0xff < local_c) {
|
|
|
|
local_c = 0xff;
|
|
|
|
}
|
|
|
|
pfVar5 = pfVar5 + 8;
|
|
|
|
*puVar7 = (ushort)(iVar3 << ((byte)*(undefined4 *)(param_1 + 0xa8) & 0x1f)) |
|
|
|
|
(ushort)(iVar6 << ((byte)*(undefined4 *)(param_1 + 0xac) & 0x1f));
|
|
|
|
puVar7[1] = (ushort)(local_8 << ((byte)*(undefined4 *)(param_1 + 0xa8) & 0x1f)) |
|
|
|
|
(ushort)(local_c << ((byte)*(undefined4 *)(param_1 + 0xac) & 0x1f));
|
|
|
|
puVar7 = puVar7 + 2;
|
|
|
|
}
|
|
|
|
LAB_005f48ef:
|
|
|
|
*(undefined4 *)(param_1 + 0xa0) = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f4906 at 0x005F4906 (size: 1671) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005f4c57) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005f4ced) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005f4e45) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005f4d95) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005f4bc0) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005f4ea5) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005f4c0b) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
int __thiscall FUN_005f4906(int param_1,uint param_2,uint param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
undefined2 uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
undefined2 uVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
byte bVar12;
|
|
|
|
int iVar13;
|
|
|
|
uint uVar14;
|
|
|
|
float *pfVar15;
|
|
|
|
ushort *puVar16;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0xa4) == 0) {
|
|
|
|
return -0x7ff8fff2;
|
|
|
|
}
|
|
|
|
if ((((param_2 < *(uint *)(param_1 + 0x88)) || (*(uint *)(param_1 + 0x90) <= param_2)) ||
|
|
|
|
(param_3 < *(uint *)(param_1 + 0x94))) || (*(uint *)(param_1 + 0x98) <= param_3)) {
|
|
|
|
iVar13 = FUN_005f4603();
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
return iVar13;
|
|
|
|
}
|
|
|
|
*(uint *)(param_1 + 0x90) = param_2 + 1;
|
|
|
|
*(uint *)(param_1 + 0x88) = param_2;
|
|
|
|
*(uint *)(param_1 + 0x94) = param_3;
|
|
|
|
*(uint *)(param_1 + 0x98) = param_3 + 1;
|
|
|
|
fVar11 = _DAT_007e6488;
|
|
|
|
fVar7 = _DAT_00799208;
|
|
|
|
fVar10 = DAT_00796344;
|
|
|
|
fVar9 = _DAT_007938b0;
|
|
|
|
if (param_4 != 0) {
|
|
|
|
param_4 = *(uint *)(param_1 + 0x84);
|
|
|
|
pfVar15 = *(float **)(param_1 + 0x80);
|
|
|
|
uVar14 = *(uint *)(param_1 + 0x68);
|
|
|
|
puVar16 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
param_4 * 2 + *(int *)(param_1 + 0x20));
|
|
|
|
if ((uVar14 & 1) != 0) {
|
|
|
|
uVar14 = uVar14 + 1;
|
|
|
|
}
|
|
|
|
iVar13 = *(int *)(param_1 + 4);
|
|
|
|
if (iVar13 != 0x32595559) {
|
|
|
|
if ((iVar13 == 0x42475247) || (iVar13 == 0x47424752)) {
|
|
|
|
param_3 = param_4;
|
|
|
|
if (*(uint *)(param_1 + 0x8c) <= param_4) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
uVar2 = *(undefined2 *)(param_1 + 0xa8);
|
|
|
|
uVar1 = *puVar16;
|
|
|
|
param_3 = param_3 + 2;
|
|
|
|
uVar3 = puVar16[1];
|
|
|
|
fVar9 = (float)(uVar1 >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff) * fVar7;
|
|
|
|
uVar4 = *(undefined2 *)(param_1 + 0xac);
|
|
|
|
pfVar15[5] = (float)(uVar3 >> ((byte)*(undefined2 *)(param_1 + 0xa8) & 0x1f) & 0xff) *
|
|
|
|
fVar7;
|
|
|
|
fVar10 = (float)(uVar3 >> ((byte)uVar4 & 0x1f) & 0xff) * fVar7;
|
|
|
|
*pfVar15 = fVar9;
|
|
|
|
pfVar15[1] = (float)(uVar1 >> ((byte)uVar2 & 0x1f) & 0xff) * fVar7;
|
|
|
|
pfVar15[2] = fVar10;
|
|
|
|
pfVar15[3] = 1.0;
|
|
|
|
pfVar15[4] = fVar9;
|
|
|
|
pfVar15[6] = fVar10;
|
|
|
|
pfVar15[7] = 1.0;
|
|
|
|
pfVar15 = pfVar15 + 8;
|
|
|
|
puVar16 = puVar16 + 2;
|
|
|
|
} while (param_3 < *(uint *)(param_1 + 0x8c));
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (iVar13 != 0x59565955) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_4 < *(uint *)(param_1 + 0x8c)) {
|
|
|
|
do {
|
|
|
|
uVar1 = *puVar16;
|
|
|
|
if ((param_4 & 1) == 0) {
|
|
|
|
bVar12 = (byte)*(undefined2 *)(param_1 + 0xac);
|
|
|
|
fVar7 = (float)(uVar1 >> (bVar12 & 0x1f) & 0xff) - fVar11;
|
|
|
|
fVar6 = (float)(puVar16[1] >> (bVar12 & 0x1f) & 0xff);
|
|
|
|
}
|
|
|
|
else if (((param_4 & 1) == 1) && (uVar14 == 2)) {
|
|
|
|
bVar12 = (byte)*(undefined2 *)(param_1 + 0xac);
|
|
|
|
fVar7 = (float)(puVar16[-1] >> (bVar12 & 0x1f) & 0xff) - fVar11;
|
|
|
|
fVar6 = (float)(uVar1 >> (bVar12 & 0x1f) & 0xff);
|
|
|
|
}
|
|
|
|
else if ((param_4 == 1) && (uVar14 == 4)) {
|
|
|
|
fVar7 = (float)((puVar16[1] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff) *
|
|
|
|
8 + (puVar16[-1] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) &
|
|
|
|
0xff) * 8 + 8 >> 4) - fVar11;
|
|
|
|
fVar6 = (float)((uVar1 >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff) * 8 +
|
|
|
|
(puVar16[2] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff) *
|
|
|
|
8 + 8 >> 4);
|
|
|
|
}
|
|
|
|
else if (param_4 == uVar14 - 1) {
|
|
|
|
bVar12 = (byte)*(undefined2 *)(param_1 + 0xac);
|
|
|
|
fVar7 = (float)(((puVar16[-1] >> (bVar12 & 0x1f) & 0xff) * 0x11 -
|
|
|
|
(puVar16[-3] >> (bVar12 & 0x1f) & 0xff)) + 8 >> 4) - fVar11;
|
|
|
|
bVar12 = (byte)*(undefined2 *)(param_1 + 0xac);
|
|
|
|
fVar6 = (float)(((uVar1 >> (bVar12 & 0x1f) & 0xff) * 0x11 -
|
|
|
|
(puVar16[-2] >> (bVar12 & 0x1f) & 0xff)) + 8 >> 4);
|
|
|
|
}
|
|
|
|
else if (param_4 == 1) {
|
|
|
|
fVar7 = (float)((((puVar16[1] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff)
|
|
|
|
* 9 + (puVar16[-1] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) &
|
|
|
|
0xff) * 8) -
|
|
|
|
(puVar16[3] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff)) +
|
|
|
|
8 >> 4) - fVar11;
|
|
|
|
fVar6 = (float)((((puVar16[2] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff)
|
|
|
|
* 9 + (uVar1 >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff)
|
|
|
|
* 8) -
|
|
|
|
(puVar16[4] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff)) +
|
|
|
|
8 >> 4);
|
|
|
|
}
|
|
|
|
else if (param_4 == uVar14 - 3) {
|
|
|
|
fVar7 = (float)((((puVar16[-1] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff)
|
|
|
|
* 9 + (puVar16[1] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) &
|
|
|
|
0xff) * 8) -
|
|
|
|
(puVar16[-3] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff))
|
|
|
|
+ 8 >> 4) - fVar11;
|
|
|
|
bVar12 = (byte)*(undefined2 *)(param_1 + 0xac);
|
|
|
|
fVar6 = (float)((((puVar16[2] >> (bVar12 & 0x1f) & 0xff) * 8 + 8) -
|
|
|
|
(puVar16[-2] >> (bVar12 & 0x1f) & 0xff)) +
|
|
|
|
(uVar1 >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff) * 9 >>
|
|
|
|
4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar12 = (byte)*(undefined2 *)(param_1 + 0xac);
|
|
|
|
fVar7 = (float)(((((puVar16[-1] >> (bVar12 & 0x1f) & 0xff) +
|
|
|
|
(puVar16[1] >> (bVar12 & 0x1f) & 0xff)) * 9 -
|
|
|
|
(puVar16[-3] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff))
|
|
|
|
- (puVar16[3] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff))
|
|
|
|
+ 8 >> 4) - fVar11;
|
|
|
|
bVar12 = (byte)*(undefined2 *)(param_1 + 0xac);
|
|
|
|
fVar6 = (float)(((((puVar16[2] >> (bVar12 & 0x1f) & 0xff) +
|
|
|
|
(uVar1 >> (bVar12 & 0x1f) & 0xff)) * 9 -
|
|
|
|
(puVar16[4] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff))
|
|
|
|
- (puVar16[-2] >> ((byte)*(undefined2 *)(param_1 + 0xac) & 0x1f) & 0xff)
|
|
|
|
) + 8 >> 4);
|
|
|
|
}
|
|
|
|
fVar8 = ((float)(uVar1 >> ((byte)*(undefined2 *)(param_1 + 0xa8) & 0x1f) & 0xff) -
|
|
|
|
_DAT_007ededc) * _DAT_007eded8;
|
|
|
|
fVar5 = (fVar6 - fVar11) * _DAT_007eded4 + fVar8;
|
|
|
|
*pfVar15 = fVar5;
|
|
|
|
fVar6 = (fVar8 - fVar7 * _DAT_007eded0) - (fVar6 - fVar11) * _DAT_007edecc;
|
|
|
|
pfVar15[1] = fVar6;
|
|
|
|
fVar8 = fVar7 * _DAT_007edec8 + fVar8;
|
|
|
|
pfVar15[2] = fVar8;
|
|
|
|
pfVar15[3] = 1.0;
|
|
|
|
if (fVar10 <= fVar5) {
|
|
|
|
if (fVar9 < fVar5) {
|
|
|
|
fVar5 = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar5 = 0.0;
|
|
|
|
}
|
|
|
|
*pfVar15 = fVar5;
|
|
|
|
if (fVar10 <= fVar6) {
|
|
|
|
if (fVar9 < fVar6) {
|
|
|
|
fVar6 = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar6 = 0.0;
|
|
|
|
}
|
|
|
|
pfVar15[1] = fVar6;
|
|
|
|
if (fVar10 <= fVar8) {
|
|
|
|
if (fVar9 < fVar8) {
|
|
|
|
fVar8 = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar8 = 0.0;
|
|
|
|
}
|
|
|
|
pfVar15[2] = fVar8;
|
|
|
|
puVar16 = puVar16 + 1;
|
|
|
|
param_4 = param_4 + 1;
|
|
|
|
pfVar15 = pfVar15 + 4;
|
|
|
|
} while (param_4 < *(uint *)(param_1 + 0x8c));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f4f8d at 0x005F4F8D (size: 133) ---
|
|
|
|
|
|
void __fastcall FUN_005f4f8d(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007ee1b4;
|
|
|
|
if (((param_1[0x3d] != 0) && (local_8 = param_1[0x3e], local_8 != 0)) &&
|
|
|
|
(uVar2 = param_1[0x35], uVar2 < (uint)param_1[0x36])) {
|
|
|
|
do {
|
|
|
|
for (uVar1 = param_1[0x32]; uVar1 < (uint)param_1[0x34]; uVar1 = uVar1 + 4) {
|
|
|
|
operator_delete(*(void **)(local_8 + 4));
|
|
|
|
local_8 = local_8 + 8;
|
|
|
|
}
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
} while (uVar2 < (uint)param_1[0x36]);
|
|
|
|
}
|
|
|
|
operator_delete((void *)param_1[0x3c]);
|
|
|
|
operator_delete((void *)param_1[0x3e]);
|
|
|
|
FUN_005f40bf();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f5012 at 0x005F5012 (size: 226) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_005f5012(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
|
|
|
|
fVar1 = _DAT_0079c6d8;
|
|
|
|
if ((*(int *)(param_1 + 4) != 0x32545844) && (*(int *)(param_1 + 4) != 0x33545844)) {
|
|
|
|
fVar1 = _DAT_00797188;
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + 0x80) = fVar1;
|
|
|
|
*(float *)(param_1 + 0x84) = 1.0 / fVar1;
|
|
|
|
*(float *)(param_1 + 0x24) =
|
|
|
|
(float)(int)ROUND(*(float *)(param_1 + 0x24) * _DAT_007edeec + _DAT_007938b8) * _DAT_007edee8
|
|
|
|
;
|
|
|
|
*(float *)(param_1 + 0x28) =
|
|
|
|
(float)(int)ROUND(*(float *)(param_1 + 0x28) * _DAT_007edee4 + _DAT_007938b8) * _DAT_007edee0
|
|
|
|
;
|
|
|
|
*(float *)(param_1 + 0x2c) =
|
|
|
|
(float)(int)ROUND(*(float *)(param_1 + 0x2c) * _DAT_007edeec + _DAT_007938b8) * _DAT_007edee8
|
|
|
|
;
|
|
|
|
*(float *)(param_1 + 0x30) =
|
|
|
|
(float)(int)ROUND(*(float *)(param_1 + 0x80) * *(float *)(param_1 + 0x30) + _DAT_007938b8) *
|
|
|
|
*(float *)(param_1 + 0x84);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f50f4 at 0x005F50F4 (size: 82) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 FUN_005f50f4(float param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
float fVar2;
|
|
|
|
float10 fVar3;
|
|
|
|
|
|
|
|
fVar3 = (float10)FUN_006005ca(param_1);
|
|
|
|
fVar2 = (float)(fVar3 * (float10)param_1 * (float10)_DAT_007edef0);
|
|
|
|
iVar1 = (int)ROUND(fVar2);
|
|
|
|
fVar3 = (float10)iVar1;
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
fVar3 = fVar3 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
return ((float10)fVar2 - fVar3) *
|
|
|
|
((float10)*(float *)(&DAT_007ed69c + iVar1 * 4) -
|
|
|
|
(float10)*(float *)(&DAT_007ed698 + iVar1 * 4)) +
|
|
|
|
(float10)*(float *)(&DAT_007ed698 + iVar1 * 4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f5146 at 0x005F5146 (size: 73) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float10 FUN_005f5146(float param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
float fVar2;
|
|
|
|
float10 fVar3;
|
|
|
|
|
|
|
|
fVar2 = param_1 * param_1 * _DAT_007edef0;
|
|
|
|
iVar1 = (int)ROUND(fVar2);
|
|
|
|
fVar3 = (float10)iVar1;
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
fVar3 = fVar3 + (float10)_DAT_0079920c;
|
|
|
|
}
|
|
|
|
return ((float10)fVar2 - fVar3) *
|
|
|
|
((float10)*(float *)(&DAT_007eda9c + iVar1 * 4) -
|
|
|
|
(float10)*(float *)(&DAT_007eda98 + iVar1 * 4)) +
|
|
|
|
(float10)*(float *)(&DAT_007eda98 + iVar1 * 4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f518f at 0x005F518F (size: 460) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 * __thiscall
|
|
|
|
FUN_005f518f(undefined4 *param_1,undefined4 *param_2,uint param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
undefined *puVar5;
|
|
|
|
uint uVar6;
|
|
|
|
undefined4 uVar7;
|
|
|
|
undefined4 *puVar8;
|
|
|
|
int iVar9;
|
|
|
|
undefined4 *puVar10;
|
|
|
|
|
|
|
|
*param_1 = &PTR_FUN_007ede98;
|
|
|
|
param_1[8] = *param_2;
|
|
|
|
param_1[1] = param_2[1];
|
|
|
|
param_1[0x18] = param_2[2];
|
|
|
|
param_1[0x19] = param_2[3];
|
|
|
|
puVar8 = param_2 + 10;
|
|
|
|
puVar10 = param_1 + 0xf;
|
|
|
|
for (iVar9 = 6; iVar9 != 0; iVar9 = iVar9 + -1) {
|
|
|
|
*puVar10 = *puVar8;
|
|
|
|
puVar8 = puVar8 + 1;
|
|
|
|
puVar10 = puVar10 + 1;
|
|
|
|
}
|
|
|
|
puVar5 = &DAT_00825cf8;
|
|
|
|
if (param_2[0x10] == 0) {
|
|
|
|
puVar5 = &DAT_00825c78;
|
|
|
|
}
|
|
|
|
param_1[0xd] = puVar5;
|
|
|
|
uVar6 = param_3 >> 3;
|
|
|
|
param_1[0x1e] = uVar6;
|
|
|
|
param_1[0x15] = 0;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
param_1[3] = (uint)(param_3 != 0);
|
|
|
|
param_1[2] = param_4;
|
|
|
|
param_1[6] = param_2[0x13];
|
|
|
|
if ((param_1[1] == 0x29) || (param_1[1] == 0x28)) {
|
|
|
|
uVar7 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar7 = 0;
|
|
|
|
}
|
|
|
|
param_1[7] = uVar7;
|
|
|
|
param_1[0xe] = 0;
|
|
|
|
param_1[4] = param_2[0x12];
|
|
|
|
param_1[5] = 0;
|
|
|
|
param_1[0x17] = 0;
|
|
|
|
if (param_1[6] != 0) {
|
|
|
|
uVar1 = param_2[0x13];
|
|
|
|
fVar2 = (float)(uVar1 >> 8 & 0xff) * _DAT_00799208;
|
|
|
|
fVar3 = (float)(uVar1 & 0xff) * _DAT_00799208;
|
|
|
|
fVar4 = (float)(uVar1 >> 0x18) * _DAT_00799208;
|
|
|
|
param_1[9] = (float)(uVar1 >> 0x10 & 0xff) * _DAT_00799208;
|
|
|
|
param_1[10] = fVar2;
|
|
|
|
param_1[0xb] = fVar3;
|
|
|
|
param_1[0xc] = fVar4;
|
|
|
|
}
|
|
|
|
if (param_4 == 2) {
|
|
|
|
if (param_1[1] == 0x3d) goto LAB_005f52a3;
|
|
|
|
param_1[4] = 0;
|
|
|
|
}
|
|
|
|
if (param_4 == 3) {
|
|
|
|
param_1[4] = 0;
|
|
|
|
}
|
|
|
|
LAB_005f52a3:
|
|
|
|
iVar9 = param_1[0x11] - param_1[0xf];
|
|
|
|
param_1[0x1a] = iVar9;
|
|
|
|
param_1[0x1b] = param_1[0x12] - param_1[0x10];
|
|
|
|
param_1[0x1d] = iVar9 * uVar6;
|
|
|
|
param_1[0x1c] = param_1[0x14] - param_1[0x13];
|
|
|
|
if ((param_3 != 0) != 0) {
|
|
|
|
param_1[8] = param_1[8] +
|
|
|
|
param_1[0xf] * uVar6 + param_1[0x18] * param_1[0x10] +
|
|
|
|
param_1[0x19] * param_1[0x13];
|
|
|
|
param_1[0x11] = param_1[0x1a];
|
|
|
|
param_1[0x12] = param_1[0x1b];
|
|
|
|
param_1[0xf] = 0;
|
|
|
|
param_1[0x10] = 0;
|
|
|
|
param_1[0x13] = 0;
|
|
|
|
param_1[0x14] = param_1[0x1c];
|
|
|
|
}
|
|
|
|
if (param_2[0x11] != 0) {
|
|
|
|
iVar9 = param_1[0x1a];
|
|
|
|
puVar8 = (undefined4 *)FUN_005df0f5((iVar9 + 2) * 0x10);
|
|
|
|
if (puVar8 == (undefined4 *)0x0) {
|
|
|
|
puVar8 = (undefined4 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(puVar8,0x10,iVar9 + 2,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
param_1[0x17] = puVar8;
|
|
|
|
if (puVar8 != (undefined4 *)0x0) {
|
|
|
|
for (uVar6 = (uint)((param_1[0x1a] + 2) * 0x10) >> 2; uVar6 != 0; uVar6 = uVar6 - 1) {
|
|
|
|
*puVar8 = 0;
|
|
|
|
puVar8 = puVar8 + 1;
|
|
|
|
}
|
|
|
|
for (iVar9 = 0; iVar9 != 0; iVar9 = iVar9 + -1) {
|
|
|
|
*(undefined1 *)puVar8 = 0;
|
|
|
|
puVar8 = (undefined4 *)((int)puVar8 + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f535b at 0x005F535B (size: 131) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005f535b(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
if ((*(int *)(param_1 + 8) != *(int *)(param_2 + 8)) && (*(int *)(param_1 + 8) != 4)) {
|
|
|
|
*(int *)(param_1 + 0x54) = *(int *)(param_2 + 8);
|
|
|
|
}
|
|
|
|
if ((*(int *)(param_1 + 0x54) != 0) || (*(int *)(param_1 + 0x10) != 0)) {
|
|
|
|
iVar1 = *(int *)(param_1 + 0x68);
|
|
|
|
iVar2 = FUN_005df0f5(iVar1 << 4);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(iVar2,0x10,iVar1,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0x58) = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return 0x8007000e;
|
|
|
|
}
|
|
|
|
if ((*(int *)(param_1 + 0x10) != 0) && (*(int *)(param_2 + 0x10) != 0)) {
|
|
|
|
*(undefined4 *)(param_2 + 0x14) = 1;
|
|
|
|
*(undefined4 *)(param_1 + 0x14) = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f53de at 0x005F53DE (size: 245) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 __thiscall FUN_005f53de(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
|
|
|
|
iVar2 = FUN_005df0f5(0x1000);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(iVar2,0x10,0x100,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
iVar6 = 0;
|
|
|
|
*(int *)(param_1 + 0x38) = iVar2;
|
|
|
|
fVar1 = _DAT_00799208;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
uVar3 = 0x8007000e;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = 0;
|
|
|
|
if (*(int *)(param_2 + 0x50) == 0) {
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(uVar4 + 0xc + *(int *)(param_1 + 0x38)) = 0x3f800000;
|
|
|
|
*(undefined4 *)(uVar4 + 8 + *(int *)(param_1 + 0x38)) = 0x3f800000;
|
|
|
|
*(undefined4 *)(uVar4 + 4 + *(int *)(param_1 + 0x38)) = 0x3f800000;
|
|
|
|
*(undefined4 *)(uVar4 + *(int *)(param_1 + 0x38)) = 0x3f800000;
|
|
|
|
uVar4 = uVar4 + 0x10;
|
|
|
|
} while (uVar4 < 0x1000);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
do {
|
|
|
|
uVar5 = uVar4 + 4;
|
|
|
|
*(float *)(iVar6 + *(int *)(param_1 + 0x38)) =
|
|
|
|
(float)*(byte *)(uVar4 + *(int *)(param_2 + 0x50)) * fVar1;
|
|
|
|
*(float *)(iVar6 + 4 + *(int *)(param_1 + 0x38)) =
|
|
|
|
(float)*(byte *)(uVar4 + 1 + *(int *)(param_2 + 0x50)) * fVar1;
|
|
|
|
*(float *)(iVar6 + 8 + *(int *)(param_1 + 0x38)) =
|
|
|
|
(float)*(byte *)(uVar4 + 2 + *(int *)(param_2 + 0x50)) * fVar1;
|
|
|
|
*(float *)(iVar6 + 0xc + *(int *)(param_1 + 0x38)) =
|
|
|
|
(float)*(byte *)(uVar4 + 3 + *(int *)(param_2 + 0x50)) * fVar1;
|
|
|
|
uVar4 = uVar5;
|
|
|
|
iVar6 = iVar6 + 0x10;
|
|
|
|
} while (uVar5 < 0x400);
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
}
|
|
|
|
return uVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f54d3 at 0x005F54D3 (size: 194) ---
|
|
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
|
|
|
|
void __fastcall FUN_005f54d3(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
undefined1 local_18 [16];
|
|
|
|
undefined4 local_8;
|
|
|
|
|
|
|
|
local_8 = DAT_00836f40;
|
|
|
|
iVar1 = param_1[8];
|
|
|
|
iVar2 = param_1[0x1d];
|
|
|
|
iVar3 = param_1[0xd];
|
|
|
|
iVar4 = param_1[6];
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[0x1d] = param_1[0x1e];
|
|
|
|
param_1[8] = (int)local_18;
|
|
|
|
iVar5 = param_1[0x1a];
|
|
|
|
param_1[0x1a] = 1;
|
|
|
|
param_1[0xd] = (int)&DAT_00825c78;
|
|
|
|
if ((param_1[2] != 1) && (param_1[2] != 4)) {
|
|
|
|
iVar6 = param_1[0x15];
|
|
|
|
iVar7 = param_1[0x16];
|
|
|
|
param_1[0x15] = 1;
|
|
|
|
param_1[0x16] = (int)(param_1 + 9);
|
|
|
|
FUN_005f40ea(param_1 + 9);
|
|
|
|
param_1[0x15] = iVar6;
|
|
|
|
param_1[0x16] = iVar7;
|
|
|
|
}
|
|
|
|
(**(code **)(*param_1 + 8))(0,0,param_1 + 9);
|
|
|
|
(**(code **)(*param_1 + 4))(0,0,param_1 + 9);
|
|
|
|
param_1[8] = iVar1;
|
|
|
|
param_1[0xd] = iVar3;
|
|
|
|
param_1[0x1a] = iVar5;
|
|
|
|
param_1[0x1d] = iVar2;
|
|
|
|
param_1[6] = iVar4;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f5595 at 0x005F5595 (size: 122) ---
|
|
|
|
|
|
void __thiscall FUN_005f5595(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
float *pfVar3;
|
|
|
|
|
|
|
|
uVar1 = *(int *)(param_1 + 0x68) * 0x10 + param_2;
|
|
|
|
if (param_2 < uVar1) {
|
|
|
|
iVar2 = ((uVar1 - param_2) - 1 >> 4) + 1;
|
|
|
|
pfVar3 = (float *)(param_2 + 8);
|
|
|
|
do {
|
|
|
|
if ((((pfVar3[-2] == *(float *)(param_1 + 0x24)) && (pfVar3[-1] == *(float *)(param_1 + 0x28))
|
|
|
|
) && (*pfVar3 == *(float *)(param_1 + 0x2c))) &&
|
|
|
|
(pfVar3[1] == *(float *)(param_1 + 0x30))) {
|
|
|
|
pfVar3[1] = 0.0;
|
|
|
|
*pfVar3 = 0.0;
|
|
|
|
pfVar3[-1] = 0.0;
|
|
|
|
pfVar3[-2] = 0.0;
|
|
|
|
}
|
|
|
|
pfVar3 = pfVar3 + 4;
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f560f at 0x005F560F (size: 499) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005f560f(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
float *pfVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float10 fVar4;
|
|
|
|
undefined4 local_8;
|
|
|
|
|
|
|
|
iVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x14) == 0) {
|
|
|
|
local_8 = CONCAT22((short)((uint)param_1 >> 0x10),in_FPUControlWord);
|
|
|
|
*(uint *)(param_1 + 0x7c) = local_8;
|
|
|
|
if ((*(int *)(param_1 + 8) == 1) || (*(int *)(param_1 + 8) == 4)) {
|
|
|
|
local_8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
puVar3 = (undefined4 *)(param_2 + 8);
|
|
|
|
do {
|
|
|
|
fVar4 = (float10)FUN_005f50f4(puVar3[-2]);
|
|
|
|
*(float *)(iVar1 + *(int *)(param_1 + 0x58)) = (float)fVar4;
|
|
|
|
fVar4 = (float10)FUN_005f50f4(puVar3[-1]);
|
|
|
|
*(float *)(iVar1 + 4 + *(int *)(param_1 + 0x58)) = (float)fVar4;
|
|
|
|
fVar4 = (float10)FUN_005f50f4(*puVar3);
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
*(float *)(iVar1 + 8 + *(int *)(param_1 + 0x58)) = (float)fVar4;
|
|
|
|
*(undefined4 *)(iVar1 + 0xc + *(int *)(param_1 + 0x58)) = puVar3[1];
|
|
|
|
iVar1 = iVar1 + 0x10;
|
|
|
|
puVar3 = puVar3 + 4;
|
|
|
|
} while (local_8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
puVar3 = (undefined4 *)(param_2 + 8);
|
|
|
|
do {
|
|
|
|
*(undefined4 *)(iVar1 + *(int *)(param_1 + 0x58)) = puVar3[-2];
|
|
|
|
*(undefined4 *)(iVar1 + 4 + *(int *)(param_1 + 0x58)) = puVar3[-1];
|
|
|
|
*(undefined4 *)(iVar1 + 8 + *(int *)(param_1 + 0x58)) = *puVar3;
|
|
|
|
fVar4 = (float10)FUN_005f50f4(puVar3[1]);
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
*(float *)(iVar1 + 0xc + *(int *)(param_1 + 0x58)) = (float)fVar4;
|
|
|
|
iVar1 = iVar1 + 0x10;
|
|
|
|
puVar3 = puVar3 + 4;
|
|
|
|
} while (local_8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((*(int *)(param_1 + 8) == 1) || (*(int *)(param_1 + 8) == 4)) {
|
|
|
|
local_8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar1 = -param_2;
|
|
|
|
pfVar2 = (float *)(param_2 + 8);
|
|
|
|
do {
|
|
|
|
fVar4 = (float10)FUN_006005ca(pfVar2[-2]);
|
|
|
|
*(float *)((int)pfVar2 + *(int *)(param_1 + 0x58) + iVar1 + -8) =
|
|
|
|
(float)(fVar4 * (float10)pfVar2[-2]);
|
|
|
|
fVar4 = (float10)FUN_006005ca(pfVar2[-1]);
|
|
|
|
*(float *)((int)pfVar2 + *(int *)(param_1 + 0x58) + iVar1 + -4) =
|
|
|
|
(float)(fVar4 * (float10)pfVar2[-1]);
|
|
|
|
fVar4 = (float10)FUN_006005ca(*pfVar2);
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
*(float *)((int)pfVar2 + *(int *)(param_1 + 0x58) + iVar1) =
|
|
|
|
(float)(fVar4 * (float10)*pfVar2);
|
|
|
|
*(float *)((int)pfVar2 + *(int *)(param_1 + 0x58) + iVar1 + 4) = pfVar2[1];
|
|
|
|
pfVar2 = pfVar2 + 4;
|
|
|
|
} while (local_8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar1 = -0xc - param_2;
|
|
|
|
pfVar2 = (float *)(param_2 + 0xc);
|
|
|
|
do {
|
|
|
|
*(float *)((int)pfVar2 + *(int *)(param_1 + 0x58) + iVar1) = pfVar2[-3];
|
|
|
|
*(float *)((int)pfVar2 + *(int *)(param_1 + 0x58) + 4 + iVar1) = pfVar2[-2];
|
|
|
|
*(float *)((int)pfVar2 + *(int *)(param_1 + 0x58) + 8 + iVar1) = pfVar2[-1];
|
|
|
|
fVar4 = (float10)FUN_006005ca(*pfVar2);
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
*(float *)((int)pfVar2 + *(int *)(param_1 + 0x58) + 0xc + iVar1) =
|
|
|
|
(float)(fVar4 * (float10)*pfVar2);
|
|
|
|
pfVar2 = pfVar2 + 4;
|
|
|
|
} while (local_8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return *(undefined4 *)(param_1 + 0x58);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f5802 at 0x005F5802 (size: 297) ---
|
|
|
|
|
|
void __thiscall FUN_005f5802(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
float *pfVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float10 fVar5;
|
|
|
|
|
|
|
|
uVar1 = param_2;
|
|
|
|
uVar3 = *(int *)(param_1 + 0x68) * 0x10 + param_2;
|
|
|
|
if (*(int *)(param_1 + 0x14) == 0) {
|
|
|
|
param_2 = CONCAT22(param_2._2_2_,in_FPUControlWord);
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if ((*(int *)(param_1 + 8) == 1) || (*(int *)(param_1 + 8) == 4)) {
|
|
|
|
if (uVar1 < uVar3) {
|
|
|
|
iVar4 = ((uVar3 - uVar1) - 1 >> 4) + 1;
|
|
|
|
pfVar2 = (float *)(uVar1 + 8);
|
|
|
|
do {
|
|
|
|
fVar5 = (float10)FUN_005f5146(pfVar2[-2]);
|
|
|
|
pfVar2[-2] = (float)fVar5;
|
|
|
|
fVar5 = (float10)FUN_005f5146(pfVar2[-1]);
|
|
|
|
pfVar2[-1] = (float)fVar5;
|
|
|
|
fVar5 = (float10)FUN_005f5146(*pfVar2);
|
|
|
|
*pfVar2 = (float)fVar5;
|
|
|
|
pfVar2 = pfVar2 + 4;
|
|
|
|
iVar4 = iVar4 + -1;
|
|
|
|
} while (iVar4 != 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (uVar1 < uVar3) {
|
|
|
|
iVar4 = ((uVar3 - uVar1) - 1 >> 4) + 1;
|
|
|
|
pfVar2 = (float *)(uVar1 + 0xc);
|
|
|
|
do {
|
|
|
|
fVar5 = (float10)FUN_005f5146(*pfVar2);
|
|
|
|
*pfVar2 = (float)fVar5;
|
|
|
|
pfVar2 = pfVar2 + 4;
|
|
|
|
iVar4 = iVar4 + -1;
|
|
|
|
} while (iVar4 != 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((*(int *)(param_1 + 8) == 1) || (*(int *)(param_1 + 8) == 4)) {
|
|
|
|
if (param_2 < uVar3) {
|
|
|
|
pfVar2 = (float *)(param_2 + 8);
|
|
|
|
iVar4 = ((uVar3 - param_2) - 1 >> 4) + 1;
|
|
|
|
do {
|
|
|
|
pfVar2[-2] = pfVar2[-2] * pfVar2[-2];
|
|
|
|
pfVar2[-1] = pfVar2[-1] * pfVar2[-1];
|
|
|
|
*pfVar2 = *pfVar2 * *pfVar2;
|
|
|
|
pfVar2 = pfVar2 + 4;
|
|
|
|
iVar4 = iVar4 + -1;
|
|
|
|
} while (iVar4 != 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (param_2 < uVar3) {
|
|
|
|
pfVar2 = (float *)(param_2 + 0xc);
|
|
|
|
iVar4 = ((uVar3 - param_2) - 1 >> 4) + 1;
|
|
|
|
do {
|
|
|
|
*pfVar2 = *pfVar2 * *pfVar2;
|
|
|
|
pfVar2 = pfVar2 + 4;
|
|
|
|
iVar4 = iVar4 + -1;
|
|
|
|
} while (iVar4 != 0);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f592b at 0x005F592B (size: 114) ---
|
|
|
|
|
|
void __thiscall FUN_005f592b(int param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float *pfVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
|
|
|
|
uVar4 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
pfVar2 = (float *)(param_2 + 8);
|
|
|
|
do {
|
|
|
|
pfVar1 = (float *)((int)pfVar2 + *(int *)(param_1 + 0x5c) + (8 - param_2));
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
pfVar2[-2] = *pfVar1 + pfVar2[-2];
|
|
|
|
pfVar2[-1] = pfVar1[1] + pfVar2[-1];
|
|
|
|
*pfVar2 = pfVar1[2] + *pfVar2;
|
|
|
|
pfVar2[1] = pfVar1[3] + pfVar2[1];
|
|
|
|
pfVar2 = pfVar2 + 4;
|
|
|
|
} while (uVar4 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
puVar5 = *(undefined4 **)(param_1 + 0x5c);
|
|
|
|
for (uVar4 = (uint)((*(int *)(param_1 + 0x68) + 2) * 0x10) >> 2; uVar4 != 0; uVar4 = uVar4 - 1) {
|
|
|
|
*puVar5 = 0;
|
|
|
|
puVar5 = puVar5 + 1;
|
|
|
|
}
|
|
|
|
for (iVar3 = 0; iVar3 != 0; iVar3 = iVar3 + -1) {
|
|
|
|
*(undefined1 *)puVar5 = 0;
|
|
|
|
puVar5 = (undefined4 *)((int)puVar5 + 1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f599d at 0x005F599D (size: 765) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f599d(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
undefined1 uVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int iVar16;
|
|
|
|
undefined1 *puVar17;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
uVar10 = param_2 & 3;
|
|
|
|
uVar8 = param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
puVar17 = (undefined1 *)
|
|
|
|
((*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 3 +
|
|
|
|
*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
iVar14 = 1;
|
|
|
|
param_2 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_2 = -1;
|
|
|
|
iVar14 = -1;
|
|
|
|
}
|
|
|
|
param_3 = CONCAT22(param_3._2_2_,in_FPUControlWord);
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_3;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
iVar14 = param_2;
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar14 * 0x10;
|
|
|
|
iVar9 = iVar15 * 0x10;
|
|
|
|
iVar12 = (iVar14 + iVar15) * 0x10;
|
|
|
|
param_3 = (iVar15 - iVar14) * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 8 + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_00799208;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar8 + uVar10 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_54 + param_4[-2]) * _DAT_00797188;
|
|
|
|
fVar5 = (local_50 + param_4[-1]) * _DAT_00797188;
|
|
|
|
fVar6 = (local_4c + *param_4) * _DAT_00797188;
|
|
|
|
local_34 = (int)ROUND(fVar4 + fVar2);
|
|
|
|
local_30 = (int)ROUND(fVar5 + fVar2);
|
|
|
|
iVar15 = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + param_3);
|
|
|
|
local_54 = (fVar4 - (float)local_34) * _DAT_00799208;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + param_3);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar5 - (float)local_30) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + param_3);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar6 - (float)iVar15) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
local_4c = fVar7 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar13 = 0xff;
|
|
|
|
iVar16 = local_34;
|
|
|
|
if (0xfe < local_34) {
|
|
|
|
iVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < local_34) {
|
|
|
|
local_34 = 0xff;
|
|
|
|
}
|
|
|
|
iVar16 = local_30;
|
|
|
|
if (0xfe < local_30) {
|
|
|
|
iVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < local_30) {
|
|
|
|
local_30 = 0xff;
|
|
|
|
}
|
|
|
|
iVar16 = iVar15;
|
|
|
|
if (0xfe < iVar15) {
|
|
|
|
iVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
uVar13 = 0;
|
|
|
|
}
|
|
|
|
else if (iVar15 < 0xff) {
|
|
|
|
uVar13 = (undefined1)iVar15;
|
|
|
|
}
|
|
|
|
*puVar17 = uVar13;
|
|
|
|
puVar17[1] = (undefined1)local_30;
|
|
|
|
puVar17[2] = (undefined1)local_34;
|
|
|
|
param_4 = param_4 + iVar14 * 4;
|
|
|
|
param_3 = param_3 + iVar11;
|
|
|
|
puVar17 = puVar17 + iVar14 * 3;
|
|
|
|
iVar9 = iVar9 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f5c9a at 0x005F5C9A (size: 943) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f5c9a(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
int iVar17;
|
|
|
|
int iVar18;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
uint local_30;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar13 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar18 = 0;
|
|
|
|
iVar15 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar18 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar15 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar15 * 0x10;
|
|
|
|
iVar10 = iVar18 * 0x10;
|
|
|
|
param_3 = (float *)(iVar10 + 8 + param_4);
|
|
|
|
iVar12 = (iVar15 + iVar18) * 0x10;
|
|
|
|
iVar18 = (iVar18 - iVar15) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_00799208;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar13 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_3[-2]) * _DAT_00797188;
|
|
|
|
fVar5 = (local_54 + param_3[-1]) * _DAT_00797188;
|
|
|
|
fVar6 = (local_50 + *param_3) * _DAT_00797188;
|
|
|
|
fVar7 = (local_4c + param_3[1]) * _DAT_00797188;
|
|
|
|
local_38 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_34 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
iVar14 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar18);
|
|
|
|
local_58 = (fVar4 - (float)(int)local_38) * _DAT_00799208;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar18);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
local_54 = (fVar5 - (float)(int)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar18);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar6 - (float)(int)local_30) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar18);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar7 - (float)iVar14) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
local_4c = fVar8 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar16 = local_38;
|
|
|
|
if (0xfe < (int)local_38) {
|
|
|
|
uVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_38 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_38) {
|
|
|
|
local_38 = 0xff;
|
|
|
|
}
|
|
|
|
uVar16 = local_34;
|
|
|
|
if (0xfe < (int)local_34) {
|
|
|
|
uVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_34) {
|
|
|
|
local_34 = 0xff;
|
|
|
|
}
|
|
|
|
uVar16 = local_30;
|
|
|
|
if (0xfe < (int)local_30) {
|
|
|
|
uVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_30) {
|
|
|
|
local_30 = 0xff;
|
|
|
|
}
|
|
|
|
iVar17 = iVar14;
|
|
|
|
if (0xfe < iVar14) {
|
|
|
|
iVar17 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar17 < 1) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < iVar14) {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
*local_8 = ((iVar14 << 8 | local_38) << 8 | local_34) << 8 | local_30;
|
|
|
|
local_8 = local_8 + iVar15;
|
|
|
|
param_3 = param_3 + iVar15 * 4;
|
|
|
|
iVar10 = iVar10 + iVar11;
|
|
|
|
iVar18 = iVar18 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f6049 at 0x005F6049 (size: 790) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f6049(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_30;
|
|
|
|
uint local_2c;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
uVar8 = param_2 & 3;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
iVar13 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar13 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar13 * 0x10;
|
|
|
|
iVar9 = iVar14 * 0x10;
|
|
|
|
iVar11 = (iVar13 + iVar14) * 0x10;
|
|
|
|
iVar14 = (iVar14 - iVar13) * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 8 + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_00799208;
|
|
|
|
fVar2 = *(float *)(iVar3 + ((param_3 & 3) + uVar8 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_54 + param_4[-2]) * _DAT_00797188;
|
|
|
|
fVar5 = (local_50 + param_4[-1]) * _DAT_00797188;
|
|
|
|
fVar6 = (local_4c + *param_4) * _DAT_00797188;
|
|
|
|
iVar12 = (int)ROUND(fVar4 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_2c = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar14);
|
|
|
|
local_54 = (fVar4 - (float)iVar12) * _DAT_00799208;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar14);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar5 - (float)(int)local_30) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar14);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar6 - (float)(int)local_2c) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
local_4c = fVar7 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar15 = iVar12;
|
|
|
|
if (0xfe < iVar12) {
|
|
|
|
iVar15 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar15 < 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < iVar12) {
|
|
|
|
iVar12 = 0xff;
|
|
|
|
}
|
|
|
|
uVar16 = local_30;
|
|
|
|
if (0xfe < (int)local_30) {
|
|
|
|
uVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_30) {
|
|
|
|
local_30 = 0xff;
|
|
|
|
}
|
|
|
|
uVar16 = local_2c;
|
|
|
|
if (0xfe < (int)local_2c) {
|
|
|
|
uVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_2c = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_2c) {
|
|
|
|
local_2c = 0xff;
|
|
|
|
}
|
|
|
|
*local_8 = (iVar12 << 8 | local_30) << 8 | local_2c;
|
|
|
|
local_8 = local_8 + iVar13;
|
|
|
|
param_4 = param_4 + iVar13 * 4;
|
|
|
|
iVar9 = iVar9 + iVar10;
|
|
|
|
iVar14 = iVar14 + iVar10;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f635f at 0x005F635F (size: 771) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f635f(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
uint uVar15;
|
|
|
|
int iVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_30;
|
|
|
|
int local_2c;
|
|
|
|
ushort *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
uVar8 = param_2 & 3;
|
|
|
|
local_8 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
iVar13 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar13 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar13 * 0x10;
|
|
|
|
iVar9 = iVar14 * 0x10;
|
|
|
|
iVar11 = (iVar13 + iVar14) * 0x10;
|
|
|
|
iVar14 = (iVar14 - iVar13) * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 8 + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_007edee8;
|
|
|
|
fVar2 = *(float *)(iVar3 + ((param_3 & 3) + uVar8 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_54 + param_4[-2]) * _DAT_007edeec;
|
|
|
|
fVar5 = (local_50 + param_4[-1]) * _DAT_007edee4;
|
|
|
|
fVar6 = (local_4c + *param_4) * _DAT_007edeec;
|
|
|
|
iVar12 = (int)ROUND(fVar4 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_2c = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar14);
|
|
|
|
local_54 = (fVar4 - (float)iVar12) * _DAT_007edee8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar14);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar5 - (float)(int)local_30) * _DAT_007edee0;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar14);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar6 - (float)local_2c) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
local_4c = fVar7 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar16 = iVar12;
|
|
|
|
if (0x1e < iVar12) {
|
|
|
|
iVar16 = 0x1f;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
else if (0x1e < iVar12) {
|
|
|
|
iVar12 = 0x1f;
|
|
|
|
}
|
|
|
|
uVar15 = local_30;
|
|
|
|
if (0x3e < (int)local_30) {
|
|
|
|
uVar15 = 0x3f;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0x3e < (int)local_30) {
|
|
|
|
local_30 = 0x3f;
|
|
|
|
}
|
|
|
|
iVar16 = local_2c;
|
|
|
|
if (0x1e < local_2c) {
|
|
|
|
iVar16 = 0x1f;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
local_2c = 0;
|
|
|
|
}
|
|
|
|
else if (0x1e < local_2c) {
|
|
|
|
local_2c = 0x1f;
|
|
|
|
}
|
|
|
|
*local_8 = (ushort)((iVar12 << 6 | local_30) << 5) | (ushort)local_2c;
|
|
|
|
local_8 = local_8 + iVar13;
|
|
|
|
param_4 = param_4 + iVar13 * 4;
|
|
|
|
iVar9 = iVar9 + iVar10;
|
|
|
|
iVar14 = iVar14 + iVar10;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f6662 at 0x005F6662 (size: 767) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f6662(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
uint uVar15;
|
|
|
|
int iVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_30;
|
|
|
|
int local_2c;
|
|
|
|
ushort *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
uVar8 = param_2 & 3;
|
|
|
|
local_8 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
iVar13 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar13 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar13 * 0x10;
|
|
|
|
iVar9 = iVar14 * 0x10;
|
|
|
|
iVar11 = (iVar13 + iVar14) * 0x10;
|
|
|
|
iVar14 = (iVar14 - iVar13) * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 8 + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_007edee8;
|
|
|
|
fVar2 = *(float *)(iVar3 + ((param_3 & 3) + uVar8 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_54 + param_4[-2]) * _DAT_007edeec;
|
|
|
|
fVar5 = (local_50 + param_4[-1]) * _DAT_007edeec;
|
|
|
|
fVar6 = (local_4c + *param_4) * _DAT_007edeec;
|
|
|
|
iVar12 = (int)ROUND(fVar4 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_2c = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar14);
|
|
|
|
local_54 = (fVar4 - (float)iVar12) * _DAT_007edee8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar14);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar5 - (float)(int)local_30) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar14);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar6 - (float)local_2c) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
local_4c = fVar7 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar16 = iVar12;
|
|
|
|
if (0x1e < iVar12) {
|
|
|
|
iVar16 = 0x1f;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
else if (0x1e < iVar12) {
|
|
|
|
iVar12 = 0x1f;
|
|
|
|
}
|
|
|
|
uVar15 = local_30;
|
|
|
|
if (0x1e < (int)local_30) {
|
|
|
|
uVar15 = 0x1f;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0x1e < (int)local_30) {
|
|
|
|
local_30 = 0x1f;
|
|
|
|
}
|
|
|
|
iVar16 = local_2c;
|
|
|
|
if (0x1e < local_2c) {
|
|
|
|
iVar16 = 0x1f;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
local_2c = 0;
|
|
|
|
}
|
|
|
|
else if (0x1e < local_2c) {
|
|
|
|
local_2c = 0x1f;
|
|
|
|
}
|
|
|
|
*local_8 = (ushort)((iVar12 << 5 | local_30) << 5) | (ushort)local_2c;
|
|
|
|
local_8 = local_8 + iVar13;
|
|
|
|
param_4 = param_4 + iVar13 * 4;
|
|
|
|
iVar9 = iVar9 + iVar10;
|
|
|
|
iVar14 = iVar14 + iVar10;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f6961 at 0x005F6961 (size: 912) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f6961(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
int iVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
int iVar17;
|
|
|
|
int iVar18;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
int local_30;
|
|
|
|
ushort *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar13 = (uint)param_3 & 3;
|
|
|
|
iVar4 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar18 = 0;
|
|
|
|
iVar15 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar18 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar15 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar15 * 0x10;
|
|
|
|
iVar10 = iVar18 * 0x10;
|
|
|
|
param_3 = (float *)(iVar10 + 8 + param_4);
|
|
|
|
iVar12 = (iVar15 + iVar18) * 0x10;
|
|
|
|
iVar18 = (iVar18 - iVar15) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_007edee8;
|
|
|
|
fVar2 = *(float *)(iVar4 + (uVar13 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar5 = (local_58 + param_3[-2]) * _DAT_007edeec;
|
|
|
|
fVar6 = (local_54 + param_3[-1]) * _DAT_007edeec;
|
|
|
|
fVar7 = (local_50 + *param_3) * _DAT_007edeec;
|
|
|
|
fVar3 = param_3[1];
|
|
|
|
local_38 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_34 = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
local_30 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
iVar14 = (int)ROUND(local_4c + fVar3 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar18);
|
|
|
|
local_58 = (fVar5 - (float)(int)local_38) * _DAT_007edee8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar18);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
local_54 = (fVar6 - (float)(int)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar18);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar7 - (float)local_30) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar18);
|
|
|
|
local_50 = fVar8 * (float)_DAT_007edef8;
|
|
|
|
local_4c = (local_4c + fVar3) - (float)iVar14;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_4c + *pfVar1;
|
|
|
|
local_4c = local_4c * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar16 = local_38;
|
|
|
|
if (0x1e < (int)local_38) {
|
|
|
|
uVar16 = 0x1f;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_38 = 0;
|
|
|
|
}
|
|
|
|
else if (0x1e < (int)local_38) {
|
|
|
|
local_38 = 0x1f;
|
|
|
|
}
|
|
|
|
uVar16 = local_34;
|
|
|
|
if (0x1e < (int)local_34) {
|
|
|
|
uVar16 = 0x1f;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0x1e < (int)local_34) {
|
|
|
|
local_34 = 0x1f;
|
|
|
|
}
|
|
|
|
iVar17 = local_30;
|
|
|
|
if (0x1e < local_30) {
|
|
|
|
iVar17 = 0x1f;
|
|
|
|
}
|
|
|
|
if (iVar17 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0x1e < local_30) {
|
|
|
|
local_30 = 0x1f;
|
|
|
|
}
|
|
|
|
iVar17 = iVar14;
|
|
|
|
if (0 < iVar14) {
|
|
|
|
iVar17 = 1;
|
|
|
|
}
|
|
|
|
if (iVar17 < 1) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
else if (0 < iVar14) {
|
|
|
|
iVar14 = 1;
|
|
|
|
}
|
|
|
|
*local_8 = (ushort)(((iVar14 << 5 | local_38) << 5 | local_34) << 5) | (ushort)local_30;
|
|
|
|
local_8 = local_8 + iVar15;
|
|
|
|
param_3 = param_3 + iVar15 * 4;
|
|
|
|
iVar10 = iVar10 + iVar11;
|
|
|
|
iVar18 = iVar18 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f6cf1 at 0x005F6CF1 (size: 912) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f6cf1(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
int iVar17;
|
|
|
|
int iVar18;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
int local_30;
|
|
|
|
ushort *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar13 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar18 = 0;
|
|
|
|
iVar15 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar18 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar15 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar15 * 0x10;
|
|
|
|
iVar10 = iVar18 * 0x10;
|
|
|
|
param_3 = (float *)(iVar10 + 8 + param_4);
|
|
|
|
iVar12 = (iVar15 + iVar18) * 0x10;
|
|
|
|
iVar18 = (iVar18 - iVar15) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_0079cc80;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar13 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_3[-2]) * _DAT_0079c6d8;
|
|
|
|
fVar5 = (local_54 + param_3[-1]) * _DAT_0079c6d8;
|
|
|
|
fVar6 = (local_50 + *param_3) * _DAT_0079c6d8;
|
|
|
|
fVar7 = (local_4c + param_3[1]) * _DAT_0079c6d8;
|
|
|
|
local_38 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_34 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_30 = (int)ROUND(fVar6 + fVar2);
|
|
|
|
iVar14 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar18);
|
|
|
|
local_58 = (fVar4 - (float)(int)local_38) * _DAT_0079cc80;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar18);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
local_54 = (fVar5 - (float)(int)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar18);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar6 - (float)local_30) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar18);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar7 - (float)iVar14) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
local_4c = fVar8 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar16 = local_38;
|
|
|
|
if (0xe < (int)local_38) {
|
|
|
|
uVar16 = 0xf;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_38 = 0;
|
|
|
|
}
|
|
|
|
else if (0xe < (int)local_38) {
|
|
|
|
local_38 = 0xf;
|
|
|
|
}
|
|
|
|
uVar16 = local_34;
|
|
|
|
if (0xe < (int)local_34) {
|
|
|
|
uVar16 = 0xf;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xe < (int)local_34) {
|
|
|
|
local_34 = 0xf;
|
|
|
|
}
|
|
|
|
iVar17 = local_30;
|
|
|
|
if (0xe < local_30) {
|
|
|
|
iVar17 = 0xf;
|
|
|
|
}
|
|
|
|
if (iVar17 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0xe < local_30) {
|
|
|
|
local_30 = 0xf;
|
|
|
|
}
|
|
|
|
iVar17 = iVar14;
|
|
|
|
if (0xe < iVar14) {
|
|
|
|
iVar17 = 0xf;
|
|
|
|
}
|
|
|
|
if (iVar17 < 1) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
else if (0xe < iVar14) {
|
|
|
|
iVar14 = 0xf;
|
|
|
|
}
|
|
|
|
*local_8 = (ushort)(((iVar14 << 4 | local_38) << 4 | local_34) << 4) | (ushort)local_30;
|
|
|
|
local_8 = local_8 + iVar15;
|
|
|
|
param_3 = param_3 + iVar15 * 4;
|
|
|
|
iVar10 = iVar10 + iVar11;
|
|
|
|
iVar18 = iVar18 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f7081 at 0x005F7081 (size: 789) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f7081(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
byte *pbVar14;
|
|
|
|
int iVar15;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
uVar8 = param_2 & 3;
|
|
|
|
uVar10 = param_3 & 3;
|
|
|
|
pbVar14 = (byte *)((*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) +
|
|
|
|
*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
local_8 = 0;
|
|
|
|
param_2 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_2 = -1;
|
|
|
|
}
|
|
|
|
param_3 = CONCAT22(param_3._2_2_,in_FPUControlWord);
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_3;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = param_2 * 0x10;
|
|
|
|
iVar9 = local_8 * 0x10;
|
|
|
|
iVar15 = (param_2 + local_8) * 0x10;
|
|
|
|
local_8 = (local_8 - param_2) * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 8 + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_007edf0c;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar10 + uVar8 * 8) * 4 + (param_3 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_4[-2]) * _DAT_007cb7b4;
|
|
|
|
fVar5 = (local_54 + param_4[-1]) * _DAT_007cb7b4;
|
|
|
|
fVar6 = (local_50 + *param_4) * _DAT_007938bc;
|
|
|
|
iVar12 = (int)ROUND(fVar4 + fVar2);
|
|
|
|
local_34 = (int)ROUND(fVar5 + fVar2);
|
|
|
|
local_30 = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + local_8);
|
|
|
|
local_58 = (fVar4 - (float)iVar12) * _DAT_007edf0c;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar15);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + local_8);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar5 - (float)local_34) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar15);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + local_8);
|
|
|
|
local_54 = fVar7 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar6 - (float)local_30) * _DAT_007e75f0;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar15);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar13 = iVar12;
|
|
|
|
if (6 < iVar12) {
|
|
|
|
iVar13 = 7;
|
|
|
|
}
|
|
|
|
if (iVar13 < 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
else if (6 < iVar12) {
|
|
|
|
iVar12 = 7;
|
|
|
|
}
|
|
|
|
iVar13 = local_34;
|
|
|
|
if (6 < local_34) {
|
|
|
|
iVar13 = 7;
|
|
|
|
}
|
|
|
|
if (iVar13 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (6 < local_34) {
|
|
|
|
local_34 = 7;
|
|
|
|
}
|
|
|
|
iVar13 = local_30;
|
|
|
|
if (2 < local_30) {
|
|
|
|
iVar13 = 3;
|
|
|
|
}
|
|
|
|
if (iVar13 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (2 < local_30) {
|
|
|
|
local_30 = 3;
|
|
|
|
}
|
|
|
|
*pbVar14 = ((char)iVar12 << 3 | (byte)local_34) << 2 | (byte)local_30;
|
|
|
|
pbVar14 = pbVar14 + param_2;
|
|
|
|
param_4 = param_4 + param_2 * 4;
|
|
|
|
local_8 = local_8 + iVar11;
|
|
|
|
iVar9 = iVar9 + iVar11;
|
|
|
|
iVar15 = iVar15 + iVar11;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
} while (param_3 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f7396 at 0x005F7396 (size: 449) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f7396(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
int iVar2;
|
|
|
|
float fVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint uVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
undefined1 *puVar11;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_2c;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_2c = 0.0;
|
|
|
|
uVar4 = param_2 & 3;
|
|
|
|
uVar6 = param_3 & 3;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x34);
|
|
|
|
puVar11 = (undefined1 *)
|
|
|
|
((*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) + *(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
*(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar9 = 0;
|
|
|
|
param_2 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar9 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_2 = -1;
|
|
|
|
}
|
|
|
|
param_3 = CONCAT22(param_3._2_2_,in_FPUControlWord);
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_3;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar7 = param_2 * 0x10;
|
|
|
|
iVar5 = iVar9 * 0x10;
|
|
|
|
iVar8 = (param_2 + iVar9) * 0x10;
|
|
|
|
local_8 = (iVar9 - param_2) * 0x10;
|
|
|
|
param_4 = (float *)(iVar5 + 0xc + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar3 = (local_2c + *param_4) * _DAT_00797188;
|
|
|
|
iVar9 = (int)ROUND(fVar3 + *(float *)(iVar2 + (uVar6 + uVar4 * 8) * 4 + (param_3 & 3) * 4));
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(local_8 + 0x1c + *(int *)(param_1 + 0x5c));
|
|
|
|
local_2c = (fVar3 - (float)iVar9) * _DAT_00799208;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_2c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar5 + 0x1c + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_2c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar8 + 0x1c + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_2c + *pfVar1;
|
|
|
|
local_2c = local_2c * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar10 = iVar9;
|
|
|
|
if (0xfe < iVar9) {
|
|
|
|
iVar10 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar10 < 1) {
|
|
|
|
iVar9 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < iVar9) {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
*puVar11 = (char)iVar9;
|
|
|
|
param_4 = param_4 + param_2 * 4;
|
|
|
|
local_8 = local_8 + iVar7;
|
|
|
|
puVar11 = puVar11 + param_2;
|
|
|
|
iVar5 = iVar5 + iVar7;
|
|
|
|
iVar8 = iVar8 + iVar7;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
} while (param_3 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f7557 at 0x005F7557 (size: 920) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f7557(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
uint uVar15;
|
|
|
|
int iVar16;
|
|
|
|
int iVar17;
|
|
|
|
int iVar18;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
int local_30;
|
|
|
|
ushort *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar13 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar18 = 0;
|
|
|
|
iVar14 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar18 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar14 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar14 * 0x10;
|
|
|
|
iVar10 = iVar18 * 0x10;
|
|
|
|
iVar12 = (iVar14 + iVar18) * 0x10;
|
|
|
|
iVar18 = (iVar18 - iVar14) * 0x10;
|
|
|
|
param_3 = (float *)(iVar10 + 8 + param_4);
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_007edf0c;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar13 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_3[-2]) * _DAT_007cb7b4;
|
|
|
|
fVar5 = (local_54 + param_3[-1]) * _DAT_007cb7b4;
|
|
|
|
fVar6 = (local_50 + *param_3) * _DAT_007938bc;
|
|
|
|
fVar7 = (local_4c + param_3[1]) * _DAT_00797188;
|
|
|
|
local_38 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_34 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_30 = (int)ROUND(fVar6 + fVar2);
|
|
|
|
iVar17 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar18);
|
|
|
|
local_58 = (fVar4 - (float)(int)local_38) * _DAT_007edf0c;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar18);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar5 - (float)(int)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar18);
|
|
|
|
local_54 = fVar8 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar6 - (float)local_30) * _DAT_007e75f0;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar18);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
local_4c = (fVar7 - (float)iVar17) * _DAT_00799208;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_4c + *pfVar1;
|
|
|
|
local_4c = local_4c * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar15 = local_38;
|
|
|
|
if (6 < (int)local_38) {
|
|
|
|
uVar15 = 7;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < 1) {
|
|
|
|
local_38 = 0;
|
|
|
|
}
|
|
|
|
else if (6 < (int)local_38) {
|
|
|
|
local_38 = 7;
|
|
|
|
}
|
|
|
|
uVar15 = local_34;
|
|
|
|
if (6 < (int)local_34) {
|
|
|
|
uVar15 = 7;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (6 < (int)local_34) {
|
|
|
|
local_34 = 7;
|
|
|
|
}
|
|
|
|
iVar16 = local_30;
|
|
|
|
if (2 < local_30) {
|
|
|
|
iVar16 = 3;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (2 < local_30) {
|
|
|
|
local_30 = 3;
|
|
|
|
}
|
|
|
|
iVar16 = iVar17;
|
|
|
|
if (0xfe < iVar17) {
|
|
|
|
iVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
iVar17 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < iVar17) {
|
|
|
|
iVar17 = 0xff;
|
|
|
|
}
|
|
|
|
*local_8 = (ushort)(((iVar17 << 3 | local_38) << 3 | local_34) << 2) | (ushort)local_30;
|
|
|
|
local_8 = local_8 + iVar14;
|
|
|
|
param_3 = param_3 + iVar14 * 4;
|
|
|
|
iVar10 = iVar10 + iVar11;
|
|
|
|
iVar18 = iVar18 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f78ef at 0x005F78EF (size: 767) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f78ef(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
uint uVar15;
|
|
|
|
int iVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_30;
|
|
|
|
int local_2c;
|
|
|
|
ushort *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
uVar8 = param_2 & 3;
|
|
|
|
local_8 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
iVar13 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar13 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar13 * 0x10;
|
|
|
|
iVar9 = iVar14 * 0x10;
|
|
|
|
iVar11 = (iVar13 + iVar14) * 0x10;
|
|
|
|
iVar14 = (iVar14 - iVar13) * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 8 + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_0079cc80;
|
|
|
|
fVar2 = *(float *)(iVar3 + ((param_3 & 3) + uVar8 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_54 + param_4[-2]) * _DAT_0079c6d8;
|
|
|
|
fVar5 = (local_50 + param_4[-1]) * _DAT_0079c6d8;
|
|
|
|
fVar6 = (local_4c + *param_4) * _DAT_0079c6d8;
|
|
|
|
iVar12 = (int)ROUND(fVar4 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_2c = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar14);
|
|
|
|
local_54 = (fVar4 - (float)iVar12) * _DAT_0079cc80;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar14);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar5 - (float)(int)local_30) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar14);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar6 - (float)local_2c) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
local_4c = fVar7 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar16 = iVar12;
|
|
|
|
if (0xe < iVar12) {
|
|
|
|
iVar16 = 0xf;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
else if (0xe < iVar12) {
|
|
|
|
iVar12 = 0xf;
|
|
|
|
}
|
|
|
|
uVar15 = local_30;
|
|
|
|
if (0xe < (int)local_30) {
|
|
|
|
uVar15 = 0xf;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0xe < (int)local_30) {
|
|
|
|
local_30 = 0xf;
|
|
|
|
}
|
|
|
|
iVar16 = local_2c;
|
|
|
|
if (0xe < local_2c) {
|
|
|
|
iVar16 = 0xf;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
local_2c = 0;
|
|
|
|
}
|
|
|
|
else if (0xe < local_2c) {
|
|
|
|
local_2c = 0xf;
|
|
|
|
}
|
|
|
|
*local_8 = (ushort)((iVar12 << 4 | local_30) << 4) | (ushort)local_2c;
|
|
|
|
local_8 = local_8 + iVar13;
|
|
|
|
param_4 = param_4 + iVar13 * 4;
|
|
|
|
iVar9 = iVar9 + iVar10;
|
|
|
|
iVar14 = iVar14 + iVar10;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f7bee at 0x005F7BEE (size: 949) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f7bee(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
int iVar17;
|
|
|
|
int iVar18;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
uint local_30;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar13 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar18 = 0;
|
|
|
|
iVar15 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar18 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar15 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar15 * 0x10;
|
|
|
|
iVar10 = iVar18 * 0x10;
|
|
|
|
param_3 = (float *)(iVar10 + 8 + param_4);
|
|
|
|
iVar12 = (iVar15 + iVar18) * 0x10;
|
|
|
|
iVar18 = (iVar18 - iVar15) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_007edf10;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar13 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_3[-2]) * _DAT_007edf14;
|
|
|
|
fVar5 = (local_54 + param_3[-1]) * _DAT_007edf14;
|
|
|
|
fVar6 = (local_50 + *param_3) * _DAT_007edf14;
|
|
|
|
fVar7 = (local_4c + param_3[1]) * _DAT_007938bc;
|
|
|
|
local_38 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_34 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
iVar14 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar18);
|
|
|
|
local_58 = (fVar4 - (float)(int)local_38) * _DAT_007edf10;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar18);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
local_54 = (fVar5 - (float)(int)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar18);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar6 - (float)(int)local_30) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar18);
|
|
|
|
local_50 = fVar8 * (float)_DAT_007edef8;
|
|
|
|
local_4c = (fVar7 - (float)iVar14) * _DAT_007e75f0;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_4c + *pfVar1;
|
|
|
|
local_4c = local_4c * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar16 = local_38;
|
|
|
|
if (0x3fe < (int)local_38) {
|
|
|
|
uVar16 = 0x3ff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_38 = 0;
|
|
|
|
}
|
|
|
|
else if (0x3fe < (int)local_38) {
|
|
|
|
local_38 = 0x3ff;
|
|
|
|
}
|
|
|
|
uVar16 = local_34;
|
|
|
|
if (0x3fe < (int)local_34) {
|
|
|
|
uVar16 = 0x3ff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0x3fe < (int)local_34) {
|
|
|
|
local_34 = 0x3ff;
|
|
|
|
}
|
|
|
|
uVar16 = local_30;
|
|
|
|
if (0x3fe < (int)local_30) {
|
|
|
|
uVar16 = 0x3ff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0x3fe < (int)local_30) {
|
|
|
|
local_30 = 0x3ff;
|
|
|
|
}
|
|
|
|
iVar17 = iVar14;
|
|
|
|
if (2 < iVar14) {
|
|
|
|
iVar17 = 3;
|
|
|
|
}
|
|
|
|
if (iVar17 < 1) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
else if (2 < iVar14) {
|
|
|
|
iVar14 = 3;
|
|
|
|
}
|
|
|
|
*local_8 = ((iVar14 << 10 | local_30) << 10 | local_34) << 10 | local_38;
|
|
|
|
local_8 = local_8 + iVar15;
|
|
|
|
param_3 = param_3 + iVar15 * 4;
|
|
|
|
iVar10 = iVar10 + iVar11;
|
|
|
|
iVar18 = iVar18 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f7fa3 at 0x005F7FA3 (size: 943) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f7fa3(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
int iVar17;
|
|
|
|
int iVar18;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
uint local_30;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar13 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar18 = 0;
|
|
|
|
iVar15 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar18 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar15 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar15 * 0x10;
|
|
|
|
iVar10 = iVar18 * 0x10;
|
|
|
|
param_3 = (float *)(iVar10 + 8 + param_4);
|
|
|
|
iVar12 = (iVar15 + iVar18) * 0x10;
|
|
|
|
iVar18 = (iVar18 - iVar15) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_00799208;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar13 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_3[-2]) * _DAT_00797188;
|
|
|
|
fVar5 = (local_54 + param_3[-1]) * _DAT_00797188;
|
|
|
|
fVar6 = (local_50 + *param_3) * _DAT_00797188;
|
|
|
|
fVar7 = (local_4c + param_3[1]) * _DAT_00797188;
|
|
|
|
local_38 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_34 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
iVar14 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar18);
|
|
|
|
local_58 = (fVar4 - (float)(int)local_38) * _DAT_00799208;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar18);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
local_54 = (fVar5 - (float)(int)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar18);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar6 - (float)(int)local_30) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar18);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar7 - (float)iVar14) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
local_4c = fVar8 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar16 = local_38;
|
|
|
|
if (0xfe < (int)local_38) {
|
|
|
|
uVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_38 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_38) {
|
|
|
|
local_38 = 0xff;
|
|
|
|
}
|
|
|
|
uVar16 = local_34;
|
|
|
|
if (0xfe < (int)local_34) {
|
|
|
|
uVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_34) {
|
|
|
|
local_34 = 0xff;
|
|
|
|
}
|
|
|
|
uVar16 = local_30;
|
|
|
|
if (0xfe < (int)local_30) {
|
|
|
|
uVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_30) {
|
|
|
|
local_30 = 0xff;
|
|
|
|
}
|
|
|
|
iVar17 = iVar14;
|
|
|
|
if (0xfe < iVar14) {
|
|
|
|
iVar17 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar17 < 1) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < iVar14) {
|
|
|
|
iVar14 = 0xff;
|
|
|
|
}
|
|
|
|
*local_8 = ((iVar14 << 8 | local_30) << 8 | local_34) << 8 | local_38;
|
|
|
|
local_8 = local_8 + iVar15;
|
|
|
|
param_3 = param_3 + iVar15 * 4;
|
|
|
|
iVar10 = iVar10 + iVar11;
|
|
|
|
iVar18 = iVar18 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f8352 at 0x005F8352 (size: 790) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f8352(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
uint uVar15;
|
|
|
|
int iVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_34;
|
|
|
|
uint local_30;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
uVar8 = param_2 & 3;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
iVar13 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar13 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar13 * 0x10;
|
|
|
|
iVar9 = iVar14 * 0x10;
|
|
|
|
iVar11 = (iVar13 + iVar14) * 0x10;
|
|
|
|
iVar14 = (iVar14 - iVar13) * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 8 + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_00799208;
|
|
|
|
fVar2 = *(float *)(iVar3 + ((param_3 & 3) + uVar8 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_54 + param_4[-2]) * _DAT_00797188;
|
|
|
|
fVar5 = (local_50 + param_4[-1]) * _DAT_00797188;
|
|
|
|
fVar6 = (local_4c + *param_4) * _DAT_00797188;
|
|
|
|
local_34 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
iVar12 = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar14);
|
|
|
|
local_54 = (fVar4 - (float)(int)local_34) * _DAT_00799208;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar14);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar5 - (float)(int)local_30) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar14);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar6 - (float)iVar12) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
local_4c = fVar7 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar15 = local_34;
|
|
|
|
if (0xfe < (int)local_34) {
|
|
|
|
uVar15 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_34) {
|
|
|
|
local_34 = 0xff;
|
|
|
|
}
|
|
|
|
uVar15 = local_30;
|
|
|
|
if (0xfe < (int)local_30) {
|
|
|
|
uVar15 = 0xff;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < (int)local_30) {
|
|
|
|
local_30 = 0xff;
|
|
|
|
}
|
|
|
|
iVar16 = iVar12;
|
|
|
|
if (0xfe < iVar12) {
|
|
|
|
iVar16 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < iVar12) {
|
|
|
|
iVar12 = 0xff;
|
|
|
|
}
|
|
|
|
*local_8 = (iVar12 << 8 | local_30) << 8 | local_34;
|
|
|
|
local_8 = local_8 + iVar13;
|
|
|
|
param_4 = param_4 + iVar13 * 4;
|
|
|
|
iVar9 = iVar9 + iVar10;
|
|
|
|
iVar14 = iVar14 + iVar10;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f8668 at 0x005F8668 (size: 629) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f8668(int param_1,uint param_2,uint param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
int iVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint *puVar13;
|
|
|
|
int iVar14;
|
|
|
|
uint uVar15;
|
|
|
|
int iVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
uint local_34;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
uVar8 = param_2 & 3;
|
|
|
|
uVar10 = param_3 & 3;
|
|
|
|
puVar13 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
param_3 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_3 = -1;
|
|
|
|
}
|
|
|
|
iVar7 = param_3;
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = param_3 * 0x10;
|
|
|
|
iVar9 = iVar14 << 4;
|
|
|
|
iVar12 = (param_3 + iVar14) * 0x10;
|
|
|
|
param_3 = (iVar14 - param_3) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar6 = _DAT_007edf18;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar10 + uVar8 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_54 + *(float *)(param_4 + iVar9)) * _DAT_007edf1c;
|
|
|
|
fVar5 = (local_50 + ((float *)(param_4 + iVar9))[1]) * _DAT_007edf1c;
|
|
|
|
local_34 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
iVar14 = (int)ROUND(fVar5 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(param_3 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
local_54 = (fVar4 - (float)(int)local_34) * _DAT_007edf18;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar9 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar12 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(param_3 + 0x14 + *(int *)(param_1 + 0x5c));
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
fVar6 = (fVar5 - (float)iVar14) * fVar6;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar6 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar9 + 0x14 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar6 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar12 + 0x14 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar6 + *pfVar1;
|
|
|
|
local_50 = fVar6 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar15 = local_34;
|
|
|
|
if (0xfffe < (int)local_34) {
|
|
|
|
uVar15 = 0xffff;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < (int)local_34) {
|
|
|
|
local_34 = 0xffff;
|
|
|
|
}
|
|
|
|
iVar16 = iVar14;
|
|
|
|
if (0xfffe < iVar14) {
|
|
|
|
iVar16 = 0xffff;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < iVar14) {
|
|
|
|
iVar14 = 0xffff;
|
|
|
|
}
|
|
|
|
*puVar13 = iVar14 << 0x10 | local_34;
|
|
|
|
puVar13 = puVar13 + iVar7;
|
|
|
|
param_3 = param_3 + iVar11;
|
|
|
|
iVar9 = iVar9 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f88dd at 0x005F88DD (size: 949) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f88dd(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
int iVar17;
|
|
|
|
int iVar18;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
uint local_30;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar13 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar18 = 0;
|
|
|
|
iVar15 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar18 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar15 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar15 * 0x10;
|
|
|
|
iVar10 = iVar18 * 0x10;
|
|
|
|
param_3 = (float *)(iVar10 + 8 + param_4);
|
|
|
|
iVar12 = (iVar15 + iVar18) * 0x10;
|
|
|
|
iVar18 = (iVar18 - iVar15) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_007edf10;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar13 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_3[-2]) * _DAT_007edf14;
|
|
|
|
fVar5 = (local_54 + param_3[-1]) * _DAT_007edf14;
|
|
|
|
fVar6 = (local_50 + *param_3) * _DAT_007edf14;
|
|
|
|
fVar7 = (local_4c + param_3[1]) * _DAT_007938bc;
|
|
|
|
local_38 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_34 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
iVar14 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar18);
|
|
|
|
local_58 = (fVar4 - (float)(int)local_38) * _DAT_007edf10;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar18);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
local_54 = (fVar5 - (float)(int)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar18);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar6 - (float)(int)local_30) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar18);
|
|
|
|
local_50 = fVar8 * (float)_DAT_007edef8;
|
|
|
|
local_4c = (fVar7 - (float)iVar14) * _DAT_007e75f0;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_4c + *pfVar1;
|
|
|
|
local_4c = local_4c * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar16 = local_38;
|
|
|
|
if (0x3fe < (int)local_38) {
|
|
|
|
uVar16 = 0x3ff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_38 = 0;
|
|
|
|
}
|
|
|
|
else if (0x3fe < (int)local_38) {
|
|
|
|
local_38 = 0x3ff;
|
|
|
|
}
|
|
|
|
uVar16 = local_34;
|
|
|
|
if (0x3fe < (int)local_34) {
|
|
|
|
uVar16 = 0x3ff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0x3fe < (int)local_34) {
|
|
|
|
local_34 = 0x3ff;
|
|
|
|
}
|
|
|
|
uVar16 = local_30;
|
|
|
|
if (0x3fe < (int)local_30) {
|
|
|
|
uVar16 = 0x3ff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0x3fe < (int)local_30) {
|
|
|
|
local_30 = 0x3ff;
|
|
|
|
}
|
|
|
|
iVar17 = iVar14;
|
|
|
|
if (2 < iVar14) {
|
|
|
|
iVar17 = 3;
|
|
|
|
}
|
|
|
|
if (iVar17 < 1) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
else if (2 < iVar14) {
|
|
|
|
iVar14 = 3;
|
|
|
|
}
|
|
|
|
*local_8 = ((iVar14 << 10 | local_38) << 10 | local_34) << 10 | local_30;
|
|
|
|
local_8 = local_8 + iVar15;
|
|
|
|
param_3 = param_3 + iVar15 * 4;
|
|
|
|
iVar10 = iVar10 + iVar11;
|
|
|
|
iVar18 = iVar18 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f8c92 at 0x005F8C92 (size: 951) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f8c92(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
uint uVar12;
|
|
|
|
int iVar13;
|
|
|
|
uint uVar14;
|
|
|
|
int iVar15;
|
|
|
|
int iVar16;
|
|
|
|
int iVar17;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_60;
|
|
|
|
float local_5c;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
uint local_40;
|
|
|
|
uint local_3c;
|
|
|
|
uint local_38;
|
|
|
|
int local_34;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_60 = 0.0;
|
|
|
|
local_5c = 0.0;
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 8 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar12 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar17 = 0;
|
|
|
|
iVar16 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar17 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar16 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar16 * 0x10;
|
|
|
|
iVar11 = iVar17 * 0x10;
|
|
|
|
iVar13 = (iVar16 + iVar17) * 0x10;
|
|
|
|
iVar17 = (iVar17 - iVar16) * 0x10;
|
|
|
|
param_3 = (float *)(iVar11 + 8 + param_4);
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_007edf18;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar12 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_60 + param_3[-2]) * _DAT_007edf1c;
|
|
|
|
fVar5 = (local_5c + param_3[-1]) * _DAT_007edf1c;
|
|
|
|
fVar6 = (local_58 + *param_3) * _DAT_007edf1c;
|
|
|
|
fVar7 = (local_54 + param_3[1]) * _DAT_007edf1c;
|
|
|
|
local_40 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_3c = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_38 = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
local_34 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar17);
|
|
|
|
local_60 = (fVar4 - (float)(int)local_40) * _DAT_007edf18;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_60 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_60 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar13);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_60 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar17);
|
|
|
|
local_60 = local_60 * (float)_DAT_007edef8;
|
|
|
|
local_5c = (fVar5 - (float)(int)local_3c) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_5c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_5c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar13);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_5c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar17);
|
|
|
|
local_5c = local_5c * (float)_DAT_007edef8;
|
|
|
|
local_58 = (fVar6 - (float)(int)local_38) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar13);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar17);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar7 - (float)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar13);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
local_54 = fVar8 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar14 = local_40;
|
|
|
|
if (0xfffe < (int)local_40) {
|
|
|
|
uVar14 = 0xffff;
|
|
|
|
}
|
|
|
|
if ((int)uVar14 < 1) {
|
|
|
|
local_40 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < (int)local_40) {
|
|
|
|
local_40 = 0xffff;
|
|
|
|
}
|
|
|
|
uVar14 = local_3c;
|
|
|
|
if (0xfffe < (int)local_3c) {
|
|
|
|
uVar14 = 0xffff;
|
|
|
|
}
|
|
|
|
if ((int)uVar14 < 1) {
|
|
|
|
local_3c = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < (int)local_3c) {
|
|
|
|
local_3c = 0xffff;
|
|
|
|
}
|
|
|
|
uVar14 = local_38;
|
|
|
|
if (0xfffe < (int)local_38) {
|
|
|
|
uVar14 = 0xffff;
|
|
|
|
}
|
|
|
|
if ((int)uVar14 < 1) {
|
|
|
|
local_38 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < (int)local_38) {
|
|
|
|
local_38 = 0xffff;
|
|
|
|
}
|
|
|
|
iVar15 = local_34;
|
|
|
|
if (0xfffe < local_34) {
|
|
|
|
iVar15 = 0xffff;
|
|
|
|
}
|
|
|
|
if (iVar15 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < local_34) {
|
|
|
|
local_34 = 0xffff;
|
|
|
|
}
|
|
|
|
*local_8 = local_3c << 0x10 | local_40;
|
|
|
|
local_8[1] = ((local_34 << 0x10 | local_38) >> 0x10 | (int)local_3c >> 0x1f) << 0x10 |
|
|
|
|
(local_38 << 0x10 | local_3c) >> 0x10 | (int)local_40 >> 0x1f;
|
|
|
|
local_8 = local_8 + iVar16 * 2;
|
|
|
|
param_3 = param_3 + iVar16 * 4;
|
|
|
|
iVar17 = iVar17 + iVar10;
|
|
|
|
iVar13 = iVar13 + iVar10;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f9049 at 0x005F9049 (size: 584) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f9049(int param_1,uint param_2,uint param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
float *pfVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
ushort *puVar10;
|
|
|
|
int iVar11;
|
|
|
|
float *pfVar12;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_3c;
|
|
|
|
uint local_18;
|
|
|
|
float local_14;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
iVar3 = param_4;
|
|
|
|
local_3c = 0.0;
|
|
|
|
uVar4 = param_2 & 3;
|
|
|
|
uVar7 = param_3 & 3;
|
|
|
|
iVar1 = *(int *)(param_1 + 0x34);
|
|
|
|
puVar10 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20));
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar11 = 0;
|
|
|
|
param_2 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar11 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_2 = -1;
|
|
|
|
}
|
|
|
|
param_3 = CONCAT22(param_3._2_2_,in_FPUControlWord);
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_3;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar8 = (iVar11 - param_2) * 0x10;
|
|
|
|
pfVar12 = (float *)(iVar11 * 0x10 + 8 + param_4);
|
|
|
|
iVar11 = (param_2 + iVar11) * 0x10;
|
|
|
|
do {
|
|
|
|
pfVar5 = *(float **)(param_1 + 0x38);
|
|
|
|
local_18 = 0;
|
|
|
|
param_4 = 0;
|
|
|
|
local_14 = 3.4028235e+38;
|
|
|
|
do {
|
|
|
|
fVar2 = (pfVar12[-2] - *pfVar5) * (pfVar12[-2] - *pfVar5) +
|
|
|
|
(pfVar12[-1] - pfVar5[1]) * (pfVar12[-1] - pfVar5[1]) +
|
|
|
|
(*pfVar12 - pfVar5[2]) * (*pfVar12 - pfVar5[2]);
|
|
|
|
if (fVar2 < local_14) {
|
|
|
|
local_18 = param_4;
|
|
|
|
local_14 = fVar2;
|
|
|
|
}
|
|
|
|
param_4 = param_4 + 1;
|
|
|
|
pfVar5 = pfVar5 + 4;
|
|
|
|
} while (param_4 < 0x100);
|
|
|
|
fVar2 = (local_3c + pfVar12[1]) * _DAT_00797188;
|
|
|
|
iVar6 = (int)ROUND(fVar2 + *(float *)(iVar1 + (uVar7 + uVar4 * 8) * 4 + (param_3 & 3) * 4));
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar5 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar8);
|
|
|
|
local_3c = (fVar2 - (float)iVar6) * _DAT_00799208;
|
|
|
|
*pfVar5 = _DAT_007edf08 * local_3c + *pfVar5;
|
|
|
|
pfVar5 = (float *)((*(int *)(param_1 + 0x5c) - iVar3) + 0x14 + (int)pfVar12);
|
|
|
|
*pfVar5 = _DAT_007edf04 * local_3c + *pfVar5;
|
|
|
|
pfVar5 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar11);
|
|
|
|
*pfVar5 = _DAT_007edf00 * local_3c + *pfVar5;
|
|
|
|
local_3c = local_3c * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar9 = iVar6;
|
|
|
|
if (0xfe < iVar6) {
|
|
|
|
iVar9 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar9 < 1) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < iVar6) {
|
|
|
|
iVar6 = 0xff;
|
|
|
|
}
|
|
|
|
pfVar12 = pfVar12 + param_2 * 4;
|
|
|
|
iVar11 = iVar11 + param_2 * 0x10;
|
|
|
|
*puVar10 = (ushort)(byte)iVar6 << 8 | (ushort)local_18;
|
|
|
|
iVar8 = iVar8 + param_2 * 0x10;
|
|
|
|
puVar10 = puVar10 + param_2;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
} while (param_3 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f9291 at 0x005F9291 (size: 199) ---
|
|
|
|
|
|
void __thiscall FUN_005f9291(int param_1,uint param_2,float param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
undefined1 *puVar2;
|
|
|
|
float *pfVar3;
|
|
|
|
uint uVar4;
|
|
|
|
float *pfVar5;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
puVar2 = (undefined1 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * (int)param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
pfVar5 = (float *)(param_4 + 8);
|
|
|
|
do {
|
|
|
|
pfVar3 = *(float **)(param_1 + 0x38);
|
|
|
|
uVar4 = 0;
|
|
|
|
param_4 = 0;
|
|
|
|
param_3 = 3.4028235e+38;
|
|
|
|
do {
|
|
|
|
fVar1 = (pfVar5[-2] - *pfVar3) * (pfVar5[-2] - *pfVar3) +
|
|
|
|
(pfVar5[-1] - pfVar3[1]) * (pfVar5[-1] - pfVar3[1]) +
|
|
|
|
(*pfVar5 - pfVar3[2]) * (*pfVar5 - pfVar3[2]) +
|
|
|
|
(pfVar5[1] - pfVar3[3]) * (pfVar5[1] - pfVar3[3]);
|
|
|
|
if (fVar1 < param_3) {
|
|
|
|
uVar4 = param_4;
|
|
|
|
param_3 = fVar1;
|
|
|
|
}
|
|
|
|
param_4 = param_4 + 1;
|
|
|
|
pfVar3 = pfVar3 + 4;
|
|
|
|
} while (param_4 < 0x100);
|
|
|
|
*puVar2 = (char)uVar4;
|
|
|
|
puVar2 = puVar2 + 1;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
pfVar5 = pfVar5 + 4;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f9358 at 0x005F9358 (size: 489) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f9358(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
float fVar2;
|
|
|
|
uint uVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
undefined1 *puVar12;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_38;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_38 = 0.0;
|
|
|
|
uVar3 = param_2 & 3;
|
|
|
|
uVar6 = param_3 & 3;
|
|
|
|
puVar12 = (undefined1 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) + *(int *)(param_1 + 0x20));
|
|
|
|
iVar1 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar10 = 0;
|
|
|
|
param_2 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar10 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_2 = -1;
|
|
|
|
}
|
|
|
|
param_3 = CONCAT22(param_3._2_2_,in_FPUControlWord);
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_3;
|
|
|
|
uVar7 = 0;
|
|
|
|
pfVar4 = param_4;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
*pfVar4 = *pfVar4 * _DAT_007eb2cc + pfVar4[1] * _DAT_007eb2d0 + pfVar4[2] * _DAT_007eb2d4;
|
|
|
|
pfVar4 = pfVar4 + 4;
|
|
|
|
} while (uVar7 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_3 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar8 = param_2 * 0x10;
|
|
|
|
iVar5 = iVar10 << 4;
|
|
|
|
iVar9 = (param_2 + iVar10) * 0x10;
|
|
|
|
local_8 = (iVar10 - param_2) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar2 = (local_38 + *(float *)(iVar5 + (int)param_4)) * _DAT_00797188;
|
|
|
|
iVar10 = (int)ROUND(fVar2 + *(float *)(iVar1 + (uVar6 + uVar3 * 8) * 4 + (param_3 & 3) * 4));
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar4 = (float *)(local_8 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
local_38 = (fVar2 - (float)iVar10) * _DAT_00799208;
|
|
|
|
*pfVar4 = _DAT_007edf08 * local_38 + *pfVar4;
|
|
|
|
pfVar4 = (float *)(iVar5 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar4 = _DAT_007edf04 * local_38 + *pfVar4;
|
|
|
|
pfVar4 = (float *)(iVar9 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar4 = _DAT_007edf00 * local_38 + *pfVar4;
|
|
|
|
local_38 = local_38 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar11 = iVar10;
|
|
|
|
if (0xfe < iVar10) {
|
|
|
|
iVar11 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar11 < 1) {
|
|
|
|
iVar10 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < iVar10) {
|
|
|
|
iVar10 = 0xff;
|
|
|
|
}
|
|
|
|
*puVar12 = (char)iVar10;
|
|
|
|
local_8 = local_8 + iVar8;
|
|
|
|
puVar12 = puVar12 + param_2;
|
|
|
|
iVar5 = iVar5 + iVar8;
|
|
|
|
iVar9 = iVar9 + iVar8;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
} while (param_3 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f9541 at 0x005F9541 (size: 654) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f9541(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
int iVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
uint uVar6;
|
|
|
|
float *pfVar7;
|
|
|
|
int iVar8;
|
|
|
|
uint uVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_50;
|
|
|
|
float local_44;
|
|
|
|
int local_30;
|
|
|
|
int local_24;
|
|
|
|
ushort *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_44 = 0.0;
|
|
|
|
local_8 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20));
|
|
|
|
uVar6 = param_2 & 3;
|
|
|
|
uVar9 = param_3 & 3;
|
|
|
|
iVar2 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar13 = 0;
|
|
|
|
iVar14 = 1;
|
|
|
|
param_3 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar13 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_3 = -1;
|
|
|
|
iVar14 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
uVar10 = 0;
|
|
|
|
pfVar7 = param_4;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
uVar10 = uVar10 + 1;
|
|
|
|
*pfVar7 = *pfVar7 * _DAT_007eb2cc + pfVar7[1] * _DAT_007eb2d0 + pfVar7[2] * _DAT_007eb2d4;
|
|
|
|
pfVar7 = pfVar7 + 4;
|
|
|
|
} while (uVar10 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar14 * 0x10;
|
|
|
|
iVar8 = iVar13 << 4;
|
|
|
|
iVar15 = (iVar14 + iVar13) * 0x10;
|
|
|
|
iVar13 = (iVar13 - param_3) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar5 = _DAT_00799208;
|
|
|
|
fVar1 = *(float *)(iVar2 + (uVar9 + uVar6 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar3 = (local_50 + *(float *)((int)param_4 + iVar8)) * _DAT_00797188;
|
|
|
|
fVar4 = (local_44 + ((float *)((int)param_4 + iVar8))[3]) * _DAT_00797188;
|
|
|
|
local_30 = (int)ROUND(fVar3 + fVar1);
|
|
|
|
local_24 = (int)ROUND(fVar4 + fVar1);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar7 = (float *)(iVar13 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
local_50 = (fVar3 - (float)local_30) * _DAT_00799208;
|
|
|
|
*pfVar7 = _DAT_007edf08 * local_50 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(iVar8 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar7 = _DAT_007edf04 * local_50 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(iVar15 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar7 = _DAT_007edf00 * local_50 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(iVar13 + 0x1c + *(int *)(param_1 + 0x5c));
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar5 = (fVar4 - (float)local_24) * fVar5;
|
|
|
|
*pfVar7 = _DAT_007edf08 * fVar5 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(iVar8 + 0x1c + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar7 = _DAT_007edf04 * fVar5 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(iVar15 + 0x1c + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar7 = _DAT_007edf00 * fVar5 + *pfVar7;
|
|
|
|
local_44 = fVar5 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar12 = local_30;
|
|
|
|
if (0xfe < local_30) {
|
|
|
|
iVar12 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar12 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < local_30) {
|
|
|
|
local_30 = 0xff;
|
|
|
|
}
|
|
|
|
iVar12 = local_24;
|
|
|
|
if (0xfe < local_24) {
|
|
|
|
iVar12 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar12 < 1) {
|
|
|
|
local_24 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfe < local_24) {
|
|
|
|
local_24 = 0xff;
|
|
|
|
}
|
|
|
|
iVar8 = iVar8 + iVar11;
|
|
|
|
iVar13 = iVar13 + iVar11;
|
|
|
|
iVar15 = iVar15 + iVar11;
|
|
|
|
*local_8 = (ushort)(byte)local_24 << 8 | (ushort)local_30;
|
|
|
|
local_8 = local_8 + iVar14;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f97cf at 0x005F97CF (size: 673) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f97cf(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
int iVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
uint uVar6;
|
|
|
|
float *pfVar7;
|
|
|
|
int iVar8;
|
|
|
|
uint uVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
byte *pbVar15;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_48;
|
|
|
|
int local_34;
|
|
|
|
undefined4 local_c;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_48 = 0.0;
|
|
|
|
uVar6 = param_2 & 3;
|
|
|
|
uVar9 = param_3 & 3;
|
|
|
|
pbVar15 = (byte *)((*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) +
|
|
|
|
*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
iVar2 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
param_3 = 0;
|
|
|
|
param_2 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_3 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_2 = -1;
|
|
|
|
}
|
|
|
|
local_c = CONCAT22(local_c._2_2_,in_FPUControlWord);
|
|
|
|
*(undefined4 *)(param_1 + 0x7c) = local_c;
|
|
|
|
uVar10 = 0;
|
|
|
|
pfVar7 = param_4;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
uVar10 = uVar10 + 1;
|
|
|
|
*pfVar7 = pfVar7[1] * _DAT_007eb2d0 + *pfVar7 * _DAT_007eb2cc + pfVar7[2] * _DAT_007eb2d4;
|
|
|
|
pfVar7 = pfVar7 + 4;
|
|
|
|
} while (uVar10 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
local_8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = param_2 * 0x10;
|
|
|
|
iVar14 = (param_2 + param_3) * 0x10;
|
|
|
|
iVar8 = param_3 << 4;
|
|
|
|
param_3 = (param_3 - param_2) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar5 = _DAT_0079cc80;
|
|
|
|
fVar1 = *(float *)(iVar2 + (uVar9 + uVar6 * 8) * 4 + (local_8 & 3) * 4);
|
|
|
|
fVar3 = (local_54 + *(float *)((int)param_4 + iVar8)) * _DAT_0079c6d8;
|
|
|
|
fVar4 = (local_48 + ((float *)((int)param_4 + iVar8))[3]) * _DAT_0079c6d8;
|
|
|
|
local_34 = (int)ROUND(fVar3 + fVar1);
|
|
|
|
iVar12 = (int)ROUND(fVar4 + fVar1);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar7 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + param_3);
|
|
|
|
local_54 = (fVar3 - (float)local_34) * _DAT_0079cc80;
|
|
|
|
*pfVar7 = _DAT_007edf08 * local_54 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar8);
|
|
|
|
*pfVar7 = _DAT_007edf04 * local_54 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar14);
|
|
|
|
*pfVar7 = _DAT_007edf00 * local_54 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + param_3);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
fVar5 = (fVar4 - (float)iVar12) * fVar5;
|
|
|
|
*pfVar7 = _DAT_007edf08 * fVar5 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar8);
|
|
|
|
*pfVar7 = _DAT_007edf04 * fVar5 + *pfVar7;
|
|
|
|
pfVar7 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar14);
|
|
|
|
*pfVar7 = _DAT_007edf00 * fVar5 + *pfVar7;
|
|
|
|
local_48 = fVar5 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar13 = local_34;
|
|
|
|
if (0xe < local_34) {
|
|
|
|
iVar13 = 0xf;
|
|
|
|
}
|
|
|
|
if (iVar13 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xe < local_34) {
|
|
|
|
local_34 = 0xf;
|
|
|
|
}
|
|
|
|
iVar13 = iVar12;
|
|
|
|
if (0xe < iVar12) {
|
|
|
|
iVar13 = 0xf;
|
|
|
|
}
|
|
|
|
if (iVar13 < 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
else if (0xe < iVar12) {
|
|
|
|
iVar12 = 0xf;
|
|
|
|
}
|
|
|
|
*pbVar15 = (char)iVar12 << 4 | (byte)local_34;
|
|
|
|
param_3 = param_3 + iVar11;
|
|
|
|
pbVar15 = pbVar15 + param_2;
|
|
|
|
iVar14 = iVar14 + iVar11;
|
|
|
|
iVar8 = iVar8 + iVar11;
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
} while (local_8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f9a70 at 0x005F9A70 (size: 615) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f9a70(int param_1,uint param_2,uint param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
int iVar15;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
int local_30;
|
|
|
|
undefined2 *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
uVar7 = param_2 & 3;
|
|
|
|
uVar9 = param_3 & 3;
|
|
|
|
local_8 = (undefined2 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar12 = 0;
|
|
|
|
iVar13 = 1;
|
|
|
|
param_3 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_3 = -1;
|
|
|
|
iVar13 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar13 * 0x10;
|
|
|
|
iVar8 = iVar12 << 4;
|
|
|
|
iVar14 = (iVar13 + iVar12) * 0x10;
|
|
|
|
iVar12 = (iVar12 - param_3) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar6 = _DAT_007edf20;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar9 + uVar7 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_50 + *(float *)(param_4 + iVar8)) * _DAT_007edf24;
|
|
|
|
fVar5 = (local_4c + ((float *)(param_4 + iVar8))[1]) * _DAT_007edf24;
|
|
|
|
local_30 = (int)ROUND(fVar4 + fVar2);
|
|
|
|
iVar15 = (int)ROUND(fVar5 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
local_50 = (fVar4 - (float)local_30) * _DAT_007edf20;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar8 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar14);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar6 = (fVar5 - (float)iVar15) * fVar6;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar6 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar8 + 0x14 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar6 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar14);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar6 + *pfVar1;
|
|
|
|
local_4c = fVar6 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar11 = local_30;
|
|
|
|
if (0x7e < local_30) {
|
|
|
|
iVar11 = 0x7f;
|
|
|
|
}
|
|
|
|
if (iVar11 < -0x7e) {
|
|
|
|
local_30 = -0x7f;
|
|
|
|
}
|
|
|
|
else if (0x7e < local_30) {
|
|
|
|
local_30 = 0x7f;
|
|
|
|
}
|
|
|
|
iVar11 = iVar15;
|
|
|
|
if (0x7e < iVar15) {
|
|
|
|
iVar11 = 0x7f;
|
|
|
|
}
|
|
|
|
if (iVar11 < -0x7e) {
|
|
|
|
iVar15 = -0x7f;
|
|
|
|
}
|
|
|
|
else if (0x7e < iVar15) {
|
|
|
|
iVar15 = 0x7f;
|
|
|
|
}
|
|
|
|
iVar8 = iVar8 + iVar10;
|
|
|
|
iVar12 = iVar12 + iVar10;
|
|
|
|
iVar14 = iVar14 + iVar10;
|
|
|
|
*local_8 = CONCAT11((char)iVar15,(undefined1)local_30);
|
|
|
|
local_8 = local_8 + iVar13;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f9cd7 at 0x005F9CD7 (size: 795) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f9cd7(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
uint uVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int iVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
uint uVar17;
|
|
|
|
int iVar18;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_4c;
|
|
|
|
int local_38;
|
|
|
|
ushort *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20));
|
|
|
|
uVar8 = param_2 & 3;
|
|
|
|
uVar11 = param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar12 = 0;
|
|
|
|
iVar15 = 1;
|
|
|
|
param_3 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_3 = -1;
|
|
|
|
iVar15 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar15 * 0x10;
|
|
|
|
iVar9 = iVar12 * 0x10;
|
|
|
|
iVar16 = (iVar15 + iVar12) * 0x10;
|
|
|
|
iVar12 = (iVar12 - param_3) * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 0xc + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_0079cc80;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar11 + uVar8 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_4[-3]) * _DAT_0079c6d8;
|
|
|
|
fVar5 = (local_54 + param_4[-2]) * _DAT_0079c6d8;
|
|
|
|
fVar6 = (local_4c + *param_4) * _DAT_007edee4;
|
|
|
|
local_38 = (int)ROUND(fVar4 + fVar2);
|
|
|
|
uVar17 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
iVar18 = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
local_58 = (fVar4 - (float)local_38) * _DAT_0079cc80;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar16);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar5 - (float)(int)uVar17) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar16);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
local_54 = fVar7 * (float)_DAT_007edef8;
|
|
|
|
local_4c = (fVar6 - (float)iVar18) * _DAT_007edee0;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar16);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_4c + *pfVar1;
|
|
|
|
local_4c = local_4c * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar14 = local_38;
|
|
|
|
if (0xe < local_38) {
|
|
|
|
iVar14 = 0xf;
|
|
|
|
}
|
|
|
|
if (iVar14 < -0xe) {
|
|
|
|
local_38 = -0xf;
|
|
|
|
}
|
|
|
|
else if (0xe < local_38) {
|
|
|
|
local_38 = 0xf;
|
|
|
|
}
|
|
|
|
uVar13 = uVar17;
|
|
|
|
if (0xe < (int)uVar17) {
|
|
|
|
uVar13 = 0xf;
|
|
|
|
}
|
|
|
|
if ((int)uVar13 < -0xe) {
|
|
|
|
uVar17 = 0xfffffff1;
|
|
|
|
}
|
|
|
|
else if (0xe < (int)uVar17) {
|
|
|
|
uVar17 = 0xf;
|
|
|
|
}
|
|
|
|
iVar14 = iVar18;
|
|
|
|
if (0x3e < iVar18) {
|
|
|
|
iVar14 = 0x3f;
|
|
|
|
}
|
|
|
|
if (iVar14 < -0x3e) {
|
|
|
|
iVar18 = -0x3f;
|
|
|
|
}
|
|
|
|
else if (0x3e < iVar18) {
|
|
|
|
iVar18 = 0x3f;
|
|
|
|
}
|
|
|
|
*local_8 = (ushort)((uVar17 & 0x1f | iVar18 << 5) << 5) | (ushort)local_38 & 0x1f;
|
|
|
|
local_8 = local_8 + iVar15;
|
|
|
|
param_4 = param_4 + iVar15 * 4;
|
|
|
|
iVar12 = iVar12 + iVar10;
|
|
|
|
iVar9 = iVar9 + iVar10;
|
|
|
|
iVar16 = iVar16 + iVar10;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005f9ff2 at 0x005F9FF2 (size: 793) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005f9ff2(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int iVar11;
|
|
|
|
uint uVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
int iVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_48;
|
|
|
|
uint local_34;
|
|
|
|
uint local_30;
|
|
|
|
int local_28;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_48 = 0.0;
|
|
|
|
uVar8 = param_2 & 3;
|
|
|
|
uVar10 = param_3 & 3;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
iVar15 = 1;
|
|
|
|
param_3 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_3 = -1;
|
|
|
|
iVar15 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar15 * 0x10;
|
|
|
|
iVar9 = iVar14 * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 0xc + (int)param_4);
|
|
|
|
iVar16 = (iVar15 + iVar14) * 0x10;
|
|
|
|
iVar14 = (iVar14 - param_3) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_007edf20;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar10 + uVar8 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_54 + param_4[-3]) * _DAT_007edf24;
|
|
|
|
fVar5 = (local_50 + param_4[-2]) * _DAT_007edf24;
|
|
|
|
fVar6 = (local_48 + *param_4) * _DAT_00797188;
|
|
|
|
local_34 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_30 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
local_28 = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar14);
|
|
|
|
local_54 = (fVar4 - (float)(int)local_34) * _DAT_007edf20;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar16);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar14);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar5 - (float)(int)local_30) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar16);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar14);
|
|
|
|
local_50 = fVar7 * (float)_DAT_007edef8;
|
|
|
|
local_48 = (fVar6 - (float)local_28) * _DAT_00799208;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_48 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_48 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar16);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_48 + *pfVar1;
|
|
|
|
local_48 = local_48 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar12 = local_34;
|
|
|
|
if (0x7e < (int)local_34) {
|
|
|
|
uVar12 = 0x7f;
|
|
|
|
}
|
|
|
|
if ((int)uVar12 < -0x7e) {
|
|
|
|
local_34 = 0xffffff81;
|
|
|
|
}
|
|
|
|
else if (0x7e < (int)local_34) {
|
|
|
|
local_34 = 0x7f;
|
|
|
|
}
|
|
|
|
uVar12 = local_30;
|
|
|
|
if (0x7e < (int)local_30) {
|
|
|
|
uVar12 = 0x7f;
|
|
|
|
}
|
|
|
|
if ((int)uVar12 < -0x7e) {
|
|
|
|
local_30 = 0xffffff81;
|
|
|
|
}
|
|
|
|
else if (0x7e < (int)local_30) {
|
|
|
|
local_30 = 0x7f;
|
|
|
|
}
|
|
|
|
iVar13 = local_28;
|
|
|
|
if (0xfe < local_28) {
|
|
|
|
iVar13 = 0xff;
|
|
|
|
}
|
|
|
|
if (iVar13 < -0xfe) {
|
|
|
|
local_28 = -0xff;
|
|
|
|
}
|
|
|
|
else if (0xfe < local_28) {
|
|
|
|
local_28 = 0xff;
|
|
|
|
}
|
|
|
|
*local_8 = (uint)CONCAT11((undefined1)local_28,(undefined1)local_30) << 8 | local_34 & 0xff;
|
|
|
|
local_8 = local_8 + iVar15;
|
|
|
|
param_4 = param_4 + iVar15 * 4;
|
|
|
|
iVar9 = iVar9 + iVar11;
|
|
|
|
iVar14 = iVar14 + iVar11;
|
|
|
|
iVar16 = iVar16 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa30b at 0x005FA30B (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa30b(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x18,1);
|
|
|
|
*param_1 = &PTR_FUN_007edf28;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa32c at 0x005FA32C (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa32c(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,1);
|
|
|
|
*param_1 = &PTR_FUN_007edf38;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa34d at 0x005FA34D (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa34d(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,1);
|
|
|
|
*param_1 = &PTR_FUN_007edf48;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa36e at 0x005FA36E (size: 940) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fa36e(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
uint uVar15;
|
|
|
|
int iVar16;
|
|
|
|
int iVar17;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
uint uVar18;
|
|
|
|
int iVar19;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar13 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar17 = 0;
|
|
|
|
iVar14 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar17 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar14 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar14 * 0x10;
|
|
|
|
iVar10 = iVar17 * 0x10;
|
|
|
|
param_3 = (float *)(iVar10 + 8 + param_4);
|
|
|
|
iVar12 = (iVar14 + iVar17) * 0x10;
|
|
|
|
iVar17 = (iVar17 - iVar14) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_007edf20;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar13 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_3[-2]) * _DAT_007edf24;
|
|
|
|
fVar5 = (local_54 + param_3[-1]) * _DAT_007edf24;
|
|
|
|
fVar6 = (local_50 + *param_3) * _DAT_007edf24;
|
|
|
|
fVar7 = (local_4c + param_3[1]) * _DAT_007edf24;
|
|
|
|
local_38 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_34 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
uVar18 = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
iVar19 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar17);
|
|
|
|
local_58 = (fVar4 - (float)(int)local_38) * _DAT_007edf20;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar17);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
local_54 = (fVar5 - (float)(int)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar17);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar6 - (float)(int)uVar18) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar17);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar7 - (float)iVar19) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
local_4c = fVar8 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar15 = local_38;
|
|
|
|
if (0x7e < (int)local_38) {
|
|
|
|
uVar15 = 0x7f;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < -0x7e) {
|
|
|
|
local_38 = 0xffffff81;
|
|
|
|
}
|
|
|
|
else if (0x7e < (int)local_38) {
|
|
|
|
local_38 = 0x7f;
|
|
|
|
}
|
|
|
|
uVar15 = local_34;
|
|
|
|
if (0x7e < (int)local_34) {
|
|
|
|
uVar15 = 0x7f;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < -0x7e) {
|
|
|
|
local_34 = 0xffffff81;
|
|
|
|
}
|
|
|
|
else if (0x7e < (int)local_34) {
|
|
|
|
local_34 = 0x7f;
|
|
|
|
}
|
|
|
|
uVar15 = uVar18;
|
|
|
|
if (0x7e < (int)uVar18) {
|
|
|
|
uVar15 = 0x7f;
|
|
|
|
}
|
|
|
|
if ((int)uVar15 < -0x7e) {
|
|
|
|
uVar18 = 0xffffff81;
|
|
|
|
}
|
|
|
|
else if (0x7e < (int)uVar18) {
|
|
|
|
uVar18 = 0x7f;
|
|
|
|
}
|
|
|
|
iVar16 = iVar19;
|
|
|
|
if (0x7e < iVar19) {
|
|
|
|
iVar16 = 0x7f;
|
|
|
|
}
|
|
|
|
if (iVar16 < -0x7e) {
|
|
|
|
iVar19 = -0x7f;
|
|
|
|
}
|
|
|
|
else if (0x7e < iVar19) {
|
|
|
|
iVar19 = 0x7f;
|
|
|
|
}
|
|
|
|
*local_8 = ((uVar18 & 0xff | iVar19 << 8) << 8 | local_34 & 0xff) << 8 | local_38 & 0xff;
|
|
|
|
local_8 = local_8 + iVar14;
|
|
|
|
param_3 = param_3 + iVar14 * 4;
|
|
|
|
iVar10 = iVar10 + iVar11;
|
|
|
|
iVar17 = iVar17 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa71a at 0x005FA71A (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa71a(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,1);
|
|
|
|
*param_1 = &PTR_FUN_007edf58;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa73b at 0x005FA73B (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa73b(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,1);
|
|
|
|
*param_1 = &PTR_FUN_007edf68;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa75c at 0x005FA75C (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa75c(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,1);
|
|
|
|
*param_1 = &PTR_FUN_007edf78;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa77d at 0x005FA77D (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa77d(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,1);
|
|
|
|
*param_1 = &PTR_FUN_007edf88;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa79e at 0x005FA79E (size: 33) ---
|
|
|
|
|
|
void * __thiscall FUN_005fa79e(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f40bf();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa7bf at 0x005FA7BF (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa7bf(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,8,1);
|
|
|
|
*param_1 = &PTR_FUN_007edf98;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa7e0 at 0x005FA7E0 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa7e0(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,8,1);
|
|
|
|
*param_1 = &PTR_FUN_007edfa8;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa801 at 0x005FA801 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fa801(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,1);
|
|
|
|
*param_1 = &PTR_FUN_007edfb8;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fa822 at 0x005FA822 (size: 631) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fa822(int param_1,uint param_2,uint param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_44;
|
|
|
|
float local_40;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_44 = 0.0;
|
|
|
|
local_40 = 0.0;
|
|
|
|
uVar7 = param_2 & 3;
|
|
|
|
uVar9 = param_3 & 3;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
iVar12 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar12 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar12 * 0x10;
|
|
|
|
iVar8 = iVar15 << 4;
|
|
|
|
iVar11 = (iVar12 + iVar15) * 0x10;
|
|
|
|
param_3 = (iVar15 - iVar12) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar6 = _DAT_007cbd08;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar9 + uVar7 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_44 + *(float *)(param_4 + iVar8)) * _DAT_007edfc8;
|
|
|
|
fVar5 = (local_40 + ((float *)(param_4 + iVar8))[1]) * _DAT_007edfc8;
|
|
|
|
uVar16 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
iVar15 = (int)ROUND(fVar5 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(param_3 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
local_44 = (fVar4 - (float)(int)uVar16) * _DAT_007cbd08;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_44 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar8 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_44 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar11 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_44 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(param_3 + 0x14 + *(int *)(param_1 + 0x5c));
|
|
|
|
local_44 = local_44 * (float)_DAT_007edef8;
|
|
|
|
fVar6 = (fVar5 - (float)iVar15) * fVar6;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar6 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar8 + 0x14 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar6 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar11 + 0x14 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar6 + *pfVar1;
|
|
|
|
local_40 = fVar6 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar13 = uVar16;
|
|
|
|
if (0x7ffe < (int)uVar16) {
|
|
|
|
uVar13 = 0x7fff;
|
|
|
|
}
|
|
|
|
if ((int)uVar13 < -0x7ffe) {
|
|
|
|
uVar16 = 0xffff8001;
|
|
|
|
}
|
|
|
|
else if (0x7ffe < (int)uVar16) {
|
|
|
|
uVar16 = 0x7fff;
|
|
|
|
}
|
|
|
|
iVar14 = iVar15;
|
|
|
|
if (0x7ffe < iVar15) {
|
|
|
|
iVar14 = 0x7fff;
|
|
|
|
}
|
|
|
|
if (iVar14 < -0x7ffe) {
|
|
|
|
iVar15 = -0x7fff;
|
|
|
|
}
|
|
|
|
else if (0x7ffe < iVar15) {
|
|
|
|
iVar15 = 0x7fff;
|
|
|
|
}
|
|
|
|
*local_8 = iVar15 << 0x10 | uVar16 & 0xffff;
|
|
|
|
local_8 = local_8 + iVar12;
|
|
|
|
param_3 = param_3 + iVar10;
|
|
|
|
iVar8 = iVar8 + iVar10;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005faa99 at 0x005FAA99 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005faa99(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,1);
|
|
|
|
*param_1 = &PTR_FUN_007edfcc;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005faaba at 0x005FAABA (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005faaba(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,1);
|
|
|
|
*param_1 = &PTR_FUN_007edfdc;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005faadb at 0x005FAADB (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005faadb(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,1);
|
|
|
|
*param_1 = &PTR_FUN_007edfec;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005faafc at 0x005FAAFC (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005faafc(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,1);
|
|
|
|
*param_1 = &PTR_FUN_007edffc;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fab1d at 0x005FAB1D (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fab1d(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee00c;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fab3e at 0x005FAB3E (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fab3e(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee01c;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fab5f at 0x005FAB5F (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fab5f(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x40,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee02c;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fab80 at 0x005FAB80 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fab80(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee03c;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005faba1 at 0x005FABA1 (size: 986) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005faba1(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
uint uVar13;
|
|
|
|
uint uVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
int iVar17;
|
|
|
|
int iVar18;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
int iVar19;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
uint local_38;
|
|
|
|
uint local_34;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar13 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar18 = 0;
|
|
|
|
iVar15 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar18 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar15 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar15 * 0x10;
|
|
|
|
iVar10 = iVar18 * 0x10;
|
|
|
|
param_3 = (float *)(iVar10 + 8 + param_4);
|
|
|
|
iVar12 = (iVar15 + iVar18) * 0x10;
|
|
|
|
iVar18 = (iVar18 - iVar15) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_007ee04c;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar13 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_58 + param_3[-2]) * _DAT_007ee050;
|
|
|
|
fVar5 = (local_54 + param_3[-1]) * _DAT_007ee050;
|
|
|
|
fVar6 = (local_50 + *param_3) * _DAT_007ee050;
|
|
|
|
fVar7 = (local_4c + param_3[1]) * _DAT_007938bc;
|
|
|
|
local_38 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_34 = (uint)ROUND(fVar5 + fVar2);
|
|
|
|
uVar14 = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
iVar19 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar18);
|
|
|
|
local_58 = (fVar4 - (float)(int)local_38) * _DAT_007ee04c;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar18);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
local_54 = (fVar5 - (float)(int)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar18);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar6 - (float)(int)uVar14) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar18);
|
|
|
|
local_50 = fVar8 * (float)_DAT_007edef8;
|
|
|
|
local_4c = (fVar7 - (float)iVar19) * _DAT_007e75f0;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar10);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_4c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_4c + *pfVar1;
|
|
|
|
local_4c = local_4c * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar16 = local_38;
|
|
|
|
if (0x1fe < (int)local_38) {
|
|
|
|
uVar16 = 0x1ff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < -0x1fe) {
|
|
|
|
local_38 = 0xfffffe01;
|
|
|
|
}
|
|
|
|
else if (0x1fe < (int)local_38) {
|
|
|
|
local_38 = 0x1ff;
|
|
|
|
}
|
|
|
|
uVar16 = local_34;
|
|
|
|
if (0x1fe < (int)local_34) {
|
|
|
|
uVar16 = 0x1ff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < -0x1fe) {
|
|
|
|
local_34 = 0xfffffe01;
|
|
|
|
}
|
|
|
|
else if (0x1fe < (int)local_34) {
|
|
|
|
local_34 = 0x1ff;
|
|
|
|
}
|
|
|
|
uVar16 = uVar14;
|
|
|
|
if (0x1fe < (int)uVar14) {
|
|
|
|
uVar16 = 0x1ff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < -0x1fe) {
|
|
|
|
uVar14 = 0xfffffe01;
|
|
|
|
}
|
|
|
|
else if (0x1fe < (int)uVar14) {
|
|
|
|
uVar14 = 0x1ff;
|
|
|
|
}
|
|
|
|
iVar17 = iVar19;
|
|
|
|
if (2 < iVar19) {
|
|
|
|
iVar17 = 3;
|
|
|
|
}
|
|
|
|
if (iVar17 < -2) {
|
|
|
|
iVar19 = -3;
|
|
|
|
}
|
|
|
|
else if (2 < iVar19) {
|
|
|
|
iVar19 = 3;
|
|
|
|
}
|
|
|
|
*local_8 = ((uVar14 & 0x3ff | iVar19 << 10) << 10 | local_34 & 0x3ff) << 10 | local_38 & 0x3ff
|
|
|
|
;
|
|
|
|
local_8 = local_8 + iVar15;
|
|
|
|
param_3 = param_3 + iVar15 * 4;
|
|
|
|
iVar10 = iVar10 + iVar11;
|
|
|
|
iVar18 = iVar18 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005faf7b at 0x005FAF7B (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005faf7b(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,8,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee054;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005faf9c at 0x005FAF9C (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005faf9c(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,8,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee064;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fafbd at 0x005FAFBD (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fafbd(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee074;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fafde at 0x005FAFDE (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fafde(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,8,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee084;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fafff at 0x005FAFFF (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fafff(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee094;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb020 at 0x005FB020 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb020(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,2);
|
|
|
|
*param_1 = &PTR_FUN_007ee0a4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb041 at 0x005FB041 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb041(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,2);
|
|
|
|
*param_1 = &PTR_FUN_007ee0b4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb062 at 0x005FB062 (size: 981) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fb062(int param_1,uint param_2,float *param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
uint uVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
int iVar17;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_60;
|
|
|
|
float local_5c;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
uint local_40;
|
|
|
|
int local_3c;
|
|
|
|
uint local_38;
|
|
|
|
int local_34;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_60 = 0.0;
|
|
|
|
local_5c = 0.0;
|
|
|
|
local_58 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_8 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 8 +
|
|
|
|
*(int *)(param_1 + 100) * (int)param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar12 = (uint)param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
iVar14 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
iVar14 = -1;
|
|
|
|
}
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = iVar14 * 0x10;
|
|
|
|
iVar11 = iVar15 * 0x10;
|
|
|
|
iVar13 = (iVar14 + iVar15) * 0x10;
|
|
|
|
iVar15 = (iVar15 - iVar14) * 0x10;
|
|
|
|
param_3 = (float *)(iVar11 + 8 + param_4);
|
|
|
|
do {
|
|
|
|
fVar8 = _DAT_007cbd08;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar12 + uVar9 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_60 + param_3[-2]) * _DAT_007edfc8;
|
|
|
|
fVar5 = (local_5c + param_3[-1]) * _DAT_007edfc8;
|
|
|
|
fVar6 = (local_58 + *param_3) * _DAT_007edfc8;
|
|
|
|
fVar7 = (local_54 + param_3[1]) * _DAT_007edfc8;
|
|
|
|
local_40 = (uint)ROUND(fVar4 + fVar2);
|
|
|
|
local_3c = (int)ROUND(fVar5 + fVar2);
|
|
|
|
local_38 = (uint)ROUND(fVar6 + fVar2);
|
|
|
|
local_34 = (int)ROUND(fVar7 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar15);
|
|
|
|
local_60 = (fVar4 - (float)(int)local_40) * _DAT_007cbd08;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_60 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_60 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar13);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_60 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar15);
|
|
|
|
local_60 = local_60 * (float)_DAT_007edef8;
|
|
|
|
local_5c = (fVar5 - (float)local_3c) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_5c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_5c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar13);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_5c + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar15);
|
|
|
|
local_5c = local_5c * (float)_DAT_007edef8;
|
|
|
|
local_58 = (fVar6 - (float)(int)local_38) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar13);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_58 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar15);
|
|
|
|
local_58 = local_58 * (float)_DAT_007edef8;
|
|
|
|
fVar8 = (fVar7 - (float)local_34) * fVar8;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar11);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar8 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x1c + iVar13);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar8 + *pfVar1;
|
|
|
|
local_54 = fVar8 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar16 = local_40;
|
|
|
|
if (0x7ffe < (int)local_40) {
|
|
|
|
uVar16 = 0x7fff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < -0x7ffe) {
|
|
|
|
local_40 = 0xffff8001;
|
|
|
|
}
|
|
|
|
else if (0x7ffe < (int)local_40) {
|
|
|
|
local_40 = 0x7fff;
|
|
|
|
}
|
|
|
|
iVar17 = local_3c;
|
|
|
|
if (0x7ffe < local_3c) {
|
|
|
|
iVar17 = 0x7fff;
|
|
|
|
}
|
|
|
|
if (iVar17 < -0x7ffe) {
|
|
|
|
local_3c = -0x7fff;
|
|
|
|
}
|
|
|
|
else if (0x7ffe < local_3c) {
|
|
|
|
local_3c = 0x7fff;
|
|
|
|
}
|
|
|
|
uVar16 = local_38;
|
|
|
|
if (0x7ffe < (int)local_38) {
|
|
|
|
uVar16 = 0x7fff;
|
|
|
|
}
|
|
|
|
if ((int)uVar16 < -0x7ffe) {
|
|
|
|
local_38 = 0xffff8001;
|
|
|
|
}
|
|
|
|
else if (0x7ffe < (int)local_38) {
|
|
|
|
local_38 = 0x7fff;
|
|
|
|
}
|
|
|
|
iVar17 = local_34;
|
|
|
|
if (0x7ffe < local_34) {
|
|
|
|
iVar17 = 0x7fff;
|
|
|
|
}
|
|
|
|
if (iVar17 < -0x7ffe) {
|
|
|
|
local_34 = -0x7fff;
|
|
|
|
}
|
|
|
|
else if (0x7ffe < local_34) {
|
|
|
|
local_34 = 0x7fff;
|
|
|
|
}
|
|
|
|
local_8[1] = local_34 << 0x10 | local_38 & 0xffff;
|
|
|
|
*local_8 = local_3c << 0x10 | local_40 & 0xffff;
|
|
|
|
local_8 = local_8 + iVar14 * 2;
|
|
|
|
param_3 = param_3 + iVar14 * 4;
|
|
|
|
iVar15 = iVar15 + iVar10;
|
|
|
|
iVar13 = iVar13 + iVar10;
|
|
|
|
iVar11 = iVar11 + iVar10;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb437 at 0x005FB437 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb437(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,2);
|
|
|
|
*param_1 = &PTR_FUN_007ee0c4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb458 at 0x005FB458 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb458(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,3);
|
|
|
|
*param_1 = &PTR_FUN_007ee0d4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb479 at 0x005FB479 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb479(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,2);
|
|
|
|
*param_1 = &PTR_FUN_007ee0e4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb49a at 0x005FB49A (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb49a(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,2);
|
|
|
|
*param_1 = &PTR_FUN_007ee0f4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb4bb at 0x005FB4BB (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb4bb(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x40,3);
|
|
|
|
*param_1 = &PTR_FUN_007ee104;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb4dc at 0x005FB4DC (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb4dc(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,2);
|
|
|
|
*param_1 = &PTR_FUN_007ee114;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb4fd at 0x005FB4FD (size: 624) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fb4fd(int param_1,uint param_2,uint param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
int iVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
uint uVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_48;
|
|
|
|
float local_44;
|
|
|
|
undefined2 *local_c;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_48 = 0.0;
|
|
|
|
local_44 = 0.0;
|
|
|
|
uVar9 = param_2 & 3;
|
|
|
|
uVar12 = param_3 & 3;
|
|
|
|
local_c = (undefined2 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20));
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
param_2 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_2 = -1;
|
|
|
|
}
|
|
|
|
iVar8 = param_2;
|
|
|
|
param_3 = CONCAT22(param_3._2_2_,in_FPUControlWord);
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_3;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
local_8 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar10 = param_2 * 0x10;
|
|
|
|
param_3 = (param_2 + iVar14) * 0x10;
|
|
|
|
iVar15 = iVar14 << 4;
|
|
|
|
param_2 = (iVar14 - param_2) * 0x10;
|
|
|
|
do {
|
|
|
|
pfVar1 = (float *)(iVar15 + param_4);
|
|
|
|
thunk_FUN_005e06f5(pfVar1,pfVar1);
|
|
|
|
fVar7 = _DAT_007edf20;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar12 + uVar9 * 8) * 4 + (local_8 & 3) * 4);
|
|
|
|
fVar5 = (local_48 + *pfVar1) * _DAT_007edf24;
|
|
|
|
fVar6 = (local_44 + pfVar1[1]) * _DAT_007edf24;
|
|
|
|
iVar14 = (int)ROUND(fVar5 + fVar2);
|
|
|
|
iVar13 = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + param_2);
|
|
|
|
local_48 = (fVar5 - (float)iVar14) * _DAT_007edf20;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_48 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar15 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_48 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + param_3);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_48 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + param_2);
|
|
|
|
local_48 = local_48 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar6 - (float)iVar13) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(iVar15 + 0x14 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + param_3);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
local_44 = fVar7 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar4 = 0x7f;
|
|
|
|
iVar11 = iVar14;
|
|
|
|
if (0x7e < iVar14) {
|
|
|
|
iVar11 = iVar4;
|
|
|
|
}
|
|
|
|
if (iVar11 < -0x7e) {
|
|
|
|
iVar14 = -0x7f;
|
|
|
|
}
|
|
|
|
else if (0x7e < iVar14) {
|
|
|
|
iVar14 = iVar4;
|
|
|
|
}
|
|
|
|
iVar11 = iVar13;
|
|
|
|
if (0x7e < iVar13) {
|
|
|
|
iVar11 = iVar4;
|
|
|
|
}
|
|
|
|
if (iVar11 < -0x7e) {
|
|
|
|
iVar13 = -0x7f;
|
|
|
|
}
|
|
|
|
else if (0x7e < iVar13) {
|
|
|
|
iVar13 = iVar4;
|
|
|
|
}
|
|
|
|
*local_c = CONCAT11((char)iVar13,(char)iVar14);
|
|
|
|
local_c = local_c + iVar8;
|
|
|
|
param_2 = param_2 + iVar10;
|
|
|
|
param_3 = param_3 + iVar10;
|
|
|
|
iVar15 = iVar15 + iVar10;
|
|
|
|
local_8 = local_8 + 1;
|
|
|
|
} while (local_8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb76d at 0x005FB76D (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb76d(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x10,4);
|
|
|
|
*param_1 = &PTR_FUN_007ee124;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb78e at 0x005FB78E (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb78e(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,4);
|
|
|
|
*param_1 = &PTR_FUN_007ee134;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb7af at 0x005FB7AF (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb7af(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x40,4);
|
|
|
|
*param_1 = &PTR_FUN_007ee144;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb7d0 at 0x005FB7D0 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb7d0(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,4);
|
|
|
|
*param_1 = &PTR_FUN_007ee154;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb7f1 at 0x005FB7F1 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb7f1(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x40,4);
|
|
|
|
*param_1 = &PTR_FUN_007ee164;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb812 at 0x005FB812 (size: 36) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fb812(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x80,4);
|
|
|
|
*param_1 = &PTR_FUN_007ee174;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fb836 at 0x005FB836 (size: 497) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fb836(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
float *pfVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
int iVar10;
|
|
|
|
undefined2 *puVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_38;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_38 = 0.0;
|
|
|
|
uVar4 = param_2 & 3;
|
|
|
|
uVar7 = param_3 & 3;
|
|
|
|
iVar1 = *(int *)(param_1 + 0x34);
|
|
|
|
puVar11 = (undefined2 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 2 + *(int *)(param_1 + 0x20));
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar12 = 0;
|
|
|
|
param_3 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar12 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_3 = -1;
|
|
|
|
}
|
|
|
|
iVar3 = param_3;
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
uVar8 = 0;
|
|
|
|
pfVar5 = param_4;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
uVar8 = uVar8 + 1;
|
|
|
|
*pfVar5 = *pfVar5 * _DAT_007eb2cc + pfVar5[1] * _DAT_007eb2d0 + pfVar5[2] * _DAT_007eb2d4;
|
|
|
|
pfVar5 = pfVar5 + 4;
|
|
|
|
} while (uVar8 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar9 = param_3 * 0x10;
|
|
|
|
iVar6 = iVar12 << 4;
|
|
|
|
iVar10 = (param_3 + iVar12) * 0x10;
|
|
|
|
param_3 = (iVar12 - param_3) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar2 = (local_38 + *(float *)(iVar6 + (int)param_4)) * _DAT_007edf1c;
|
|
|
|
iVar12 = (int)ROUND(fVar2 + *(float *)(iVar1 + (uVar7 + uVar4 * 8) * 4 + (param_2 & 3) * 4));
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar5 = (float *)(param_3 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
local_38 = (fVar2 - (float)iVar12) * _DAT_007edf18;
|
|
|
|
*pfVar5 = _DAT_007edf08 * local_38 + *pfVar5;
|
|
|
|
pfVar5 = (float *)(iVar6 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar5 = _DAT_007edf04 * local_38 + *pfVar5;
|
|
|
|
pfVar5 = (float *)(iVar10 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar5 = _DAT_007edf00 * local_38 + *pfVar5;
|
|
|
|
local_38 = local_38 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar13 = iVar12;
|
|
|
|
if (0xfffe < iVar12) {
|
|
|
|
iVar13 = 0xffff;
|
|
|
|
}
|
|
|
|
if (iVar13 < 1) {
|
|
|
|
iVar12 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < iVar12) {
|
|
|
|
iVar12 = 0xffff;
|
|
|
|
}
|
|
|
|
*puVar11 = (short)iVar12;
|
|
|
|
param_3 = param_3 + iVar9;
|
|
|
|
puVar11 = puVar11 + iVar3;
|
|
|
|
iVar6 = iVar6 + iVar9;
|
|
|
|
iVar10 = iVar10 + iVar9;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fba27 at 0x005FBA27 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fba27(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x20,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee184;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fba48 at 0x005FBA48 (size: 33) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fba48(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f518f(param_2,0x30,1);
|
|
|
|
*param_1 = &PTR_FUN_007ee194;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fba69 at 0x005FBA69 (size: 77) ---
|
|
|
|
|
|
void __thiscall FUN_005fba69(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (undefined4 *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
*puVar1 = *param_4;
|
|
|
|
puVar1 = puVar1 + 1;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fbab6 at 0x005FBAB6 (size: 88) ---
|
|
|
|
|
|
void __thiscall FUN_005fbab6(int param_1,int param_2,int param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20);
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
thunk_FUN_005e02d4(iVar2,param_4,1);
|
|
|
|
param_4 = param_4 + 0x10;
|
|
|
|
iVar2 = iVar2 + 2;
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fbb0e at 0x005FBB0E (size: 89) ---
|
|
|
|
|
|
void __thiscall FUN_005fbb0e(int param_1,int param_2,int param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
uVar1 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20);
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
thunk_FUN_005e02d4(iVar2,param_4,2);
|
|
|
|
param_4 = param_4 + 0x10;
|
|
|
|
iVar2 = iVar2 + 4;
|
|
|
|
uVar1 = uVar1 + 1;
|
|
|
|
} while (uVar1 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fbb67 at 0x005FBB67 (size: 65) ---
|
|
|
|
|
|
void __thiscall FUN_005fbb67(int param_1,int param_2,int param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
thunk_FUN_005e02d4(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20),param_4,*(int *)(param_1 + 0x68) << 2);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fbba8 at 0x005FBBA8 (size: 83) ---
|
|
|
|
|
|
void __thiscall FUN_005fbba8(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (undefined4 *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
puVar1 = (undefined4 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
uVar2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
*puVar1 = *param_4;
|
|
|
|
puVar1[1] = param_4[1];
|
|
|
|
puVar1 = puVar1 + 2;
|
|
|
|
uVar2 = uVar2 + 1;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
} while (uVar2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fbbfb at 0x005FBBFB (size: 76) ---
|
|
|
|
|
|
void __thiscall FUN_005fbbfb(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (undefined4 *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
puVar3 = (undefined4 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
for (uVar1 = (uint)(*(int *)(param_1 + 0x68) << 4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {
|
|
|
|
*puVar3 = *param_4;
|
|
|
|
param_4 = param_4 + 1;
|
|
|
|
puVar3 = puVar3 + 1;
|
|
|
|
}
|
|
|
|
for (iVar2 = 0; iVar2 != 0; iVar2 = iVar2 + -1) {
|
|
|
|
*(undefined1 *)puVar3 = *(undefined1 *)param_4;
|
|
|
|
param_4 = (undefined4 *)((int)param_4 + 1);
|
|
|
|
puVar3 = (undefined4 *)((int)puVar3 + 1);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fbc47 at 0x005FBC47 (size: 680) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fbc47(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
int iVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
float *pfVar8;
|
|
|
|
int iVar9;
|
|
|
|
uint uVar10;
|
|
|
|
uint uVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
uint *puVar14;
|
|
|
|
int iVar15;
|
|
|
|
int iVar16;
|
|
|
|
ushort in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_48;
|
|
|
|
uint local_34;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_48 = 0.0;
|
|
|
|
uVar7 = param_2 & 3;
|
|
|
|
uVar10 = param_3 & 3;
|
|
|
|
puVar14 = (uint *)(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 4 +
|
|
|
|
*(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20));
|
|
|
|
iVar2 = *(int *)(param_1 + 0x34);
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar15 = 0;
|
|
|
|
param_3 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar15 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_3 = -1;
|
|
|
|
}
|
|
|
|
iVar6 = param_3;
|
|
|
|
param_2 = (uint)in_FPUControlWord;
|
|
|
|
uVar11 = 0;
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_2;
|
|
|
|
pfVar8 = param_4;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
do {
|
|
|
|
uVar11 = uVar11 + 1;
|
|
|
|
*pfVar8 = *pfVar8 * _DAT_007eb2cc + pfVar8[1] * _DAT_007eb2d0 + pfVar8[2] * _DAT_007eb2d4;
|
|
|
|
pfVar8 = pfVar8 + 4;
|
|
|
|
} while (uVar11 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar12 = param_3 * 0x10;
|
|
|
|
iVar9 = iVar15 << 4;
|
|
|
|
iVar13 = (param_3 + iVar15) * 0x10;
|
|
|
|
param_3 = (iVar15 - param_3) * 0x10;
|
|
|
|
do {
|
|
|
|
fVar5 = _DAT_007edf18;
|
|
|
|
fVar1 = *(float *)(iVar2 + (uVar10 + uVar7 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar3 = (local_54 + *(float *)((int)param_4 + iVar9)) * _DAT_007edf1c;
|
|
|
|
fVar4 = (local_48 + ((float *)((int)param_4 + iVar9))[3]) * _DAT_007edf1c;
|
|
|
|
local_34 = (uint)ROUND(fVar3 + fVar1);
|
|
|
|
iVar15 = (int)ROUND(fVar4 + fVar1);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar8 = (float *)(param_3 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
local_54 = (fVar3 - (float)(int)local_34) * _DAT_007edf18;
|
|
|
|
*pfVar8 = _DAT_007edf08 * local_54 + *pfVar8;
|
|
|
|
pfVar8 = (float *)(iVar9 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar8 = _DAT_007edf04 * local_54 + *pfVar8;
|
|
|
|
pfVar8 = (float *)(iVar13 + 0x10 + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar8 = _DAT_007edf00 * local_54 + *pfVar8;
|
|
|
|
pfVar8 = (float *)(param_3 + 0x1c + *(int *)(param_1 + 0x5c));
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
fVar5 = (fVar4 - (float)iVar15) * fVar5;
|
|
|
|
*pfVar8 = _DAT_007edf08 * fVar5 + *pfVar8;
|
|
|
|
pfVar8 = (float *)(iVar9 + 0x1c + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar8 = _DAT_007edf04 * fVar5 + *pfVar8;
|
|
|
|
pfVar8 = (float *)(iVar13 + 0x1c + *(int *)(param_1 + 0x5c));
|
|
|
|
*pfVar8 = _DAT_007edf00 * fVar5 + *pfVar8;
|
|
|
|
local_48 = fVar5 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
uVar11 = local_34;
|
|
|
|
if (0xfffe < (int)local_34) {
|
|
|
|
uVar11 = 0xffff;
|
|
|
|
}
|
|
|
|
if ((int)uVar11 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < (int)local_34) {
|
|
|
|
local_34 = 0xffff;
|
|
|
|
}
|
|
|
|
iVar16 = iVar15;
|
|
|
|
if (0xfffe < iVar15) {
|
|
|
|
iVar16 = 0xffff;
|
|
|
|
}
|
|
|
|
if (iVar16 < 1) {
|
|
|
|
iVar15 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < iVar15) {
|
|
|
|
iVar15 = 0xffff;
|
|
|
|
}
|
|
|
|
*puVar14 = iVar15 << 0x10 | local_34;
|
|
|
|
puVar14 = puVar14 + iVar6;
|
|
|
|
param_3 = param_3 + iVar12;
|
|
|
|
iVar9 = iVar9 + iVar12;
|
|
|
|
iVar13 = iVar13 + iVar12;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fbeef at 0x005FBEEF (size: 771) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fbeef(int param_1,uint param_2,uint param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
uint uVar8;
|
|
|
|
int iVar9;
|
|
|
|
uint uVar10;
|
|
|
|
int iVar11;
|
|
|
|
int iVar12;
|
|
|
|
int iVar13;
|
|
|
|
int iVar14;
|
|
|
|
int iVar15;
|
|
|
|
undefined2 *puVar16;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
int local_34;
|
|
|
|
int local_30;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (float *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
local_54 = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
uVar10 = param_2 & 3;
|
|
|
|
uVar8 = param_3 & 3;
|
|
|
|
iVar3 = *(int *)(param_1 + 0x34);
|
|
|
|
puVar16 = (undefined2 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 +
|
|
|
|
(*(int *)(param_1 + 0x68) + -1) * (param_2 & 1) * 6 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20));
|
|
|
|
if ((param_2 & 1) == 0) {
|
|
|
|
iVar14 = 0;
|
|
|
|
iVar13 = 1;
|
|
|
|
param_2 = 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar14 = *(int *)(param_1 + 0x68) + -1;
|
|
|
|
param_2 = -1;
|
|
|
|
iVar13 = -1;
|
|
|
|
}
|
|
|
|
param_3 = CONCAT22(param_3._2_2_,in_FPUControlWord);
|
|
|
|
*(uint *)(param_1 + 0x7c) = param_3;
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
FUN_005f592b(param_4);
|
|
|
|
iVar13 = param_2;
|
|
|
|
}
|
|
|
|
param_2 = 0;
|
|
|
|
if (*(int *)(param_1 + 0x68) != 0) {
|
|
|
|
iVar11 = iVar13 * 0x10;
|
|
|
|
iVar9 = iVar14 * 0x10;
|
|
|
|
iVar12 = (iVar13 + iVar14) * 0x10;
|
|
|
|
param_3 = (iVar14 - iVar13) * 0x10;
|
|
|
|
param_4 = (float *)(iVar9 + 8 + (int)param_4);
|
|
|
|
do {
|
|
|
|
fVar7 = _DAT_007edf18;
|
|
|
|
fVar2 = *(float *)(iVar3 + (uVar8 + uVar10 * 8) * 4 + (param_2 & 3) * 4);
|
|
|
|
fVar4 = (local_54 + param_4[-2]) * _DAT_007edf1c;
|
|
|
|
fVar5 = (local_50 + param_4[-1]) * _DAT_007edf1c;
|
|
|
|
fVar6 = (local_4c + *param_4) * _DAT_007edf1c;
|
|
|
|
local_34 = (int)ROUND(fVar4 + fVar2);
|
|
|
|
local_30 = (int)ROUND(fVar5 + fVar2);
|
|
|
|
iVar14 = (int)ROUND(fVar6 + fVar2);
|
|
|
|
if (*(int *)(param_1 + 0x5c) != 0) {
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + param_3);
|
|
|
|
local_54 = (fVar4 - (float)local_34) * _DAT_007edf18;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x10 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_54 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + param_3);
|
|
|
|
local_54 = local_54 * (float)_DAT_007edef8;
|
|
|
|
local_50 = (fVar5 - (float)local_30) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x14 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * local_50 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + param_3);
|
|
|
|
local_50 = local_50 * (float)_DAT_007edef8;
|
|
|
|
fVar7 = (fVar6 - (float)iVar14) * fVar7;
|
|
|
|
*pfVar1 = _DAT_007edf08 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar9);
|
|
|
|
*pfVar1 = _DAT_007edf04 * fVar7 + *pfVar1;
|
|
|
|
pfVar1 = (float *)(*(int *)(param_1 + 0x5c) + 0x18 + iVar12);
|
|
|
|
*pfVar1 = _DAT_007edf00 * fVar7 + *pfVar1;
|
|
|
|
local_4c = fVar7 * (float)_DAT_007edef8;
|
|
|
|
}
|
|
|
|
iVar15 = local_34;
|
|
|
|
if (0xfffe < local_34) {
|
|
|
|
iVar15 = 0xffff;
|
|
|
|
}
|
|
|
|
if (iVar15 < 1) {
|
|
|
|
local_34 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < local_34) {
|
|
|
|
local_34 = 0xffff;
|
|
|
|
}
|
|
|
|
iVar15 = local_30;
|
|
|
|
if (0xfffe < local_30) {
|
|
|
|
iVar15 = 0xffff;
|
|
|
|
}
|
|
|
|
if (iVar15 < 1) {
|
|
|
|
local_30 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < local_30) {
|
|
|
|
local_30 = 0xffff;
|
|
|
|
}
|
|
|
|
iVar15 = iVar14;
|
|
|
|
if (0xfffe < iVar14) {
|
|
|
|
iVar15 = 0xffff;
|
|
|
|
}
|
|
|
|
if (iVar15 < 1) {
|
|
|
|
iVar14 = 0;
|
|
|
|
}
|
|
|
|
else if (0xfffe < iVar14) {
|
|
|
|
iVar14 = 0xffff;
|
|
|
|
}
|
|
|
|
puVar16[1] = (undefined2)local_30;
|
|
|
|
puVar16[2] = (undefined2)local_34;
|
|
|
|
param_4 = param_4 + iVar13 * 4;
|
|
|
|
param_3 = param_3 + iVar11;
|
|
|
|
*puVar16 = (short)iVar14;
|
|
|
|
puVar16 = puVar16 + iVar13 * 3;
|
|
|
|
iVar9 = iVar9 + iVar11;
|
|
|
|
iVar12 = iVar12 + iVar11;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
} while (param_2 < *(uint *)(param_1 + 0x68));
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc1f2 at 0x005FC1F2 (size: 152) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc1f2(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
byte *pbVar2;
|
|
|
|
int extraout_ECX;
|
|
|
|
byte *pbVar3;
|
|
|
|
|
|
|
|
fVar1 = _DAT_00799208;
|
|
|
|
pbVar2 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar3 = pbVar2 + *(int *)(param_1 + 0x74);
|
|
|
|
for (; pbVar2 < pbVar3; pbVar2 = pbVar2 + 3) {
|
|
|
|
*param_4 = (float)pbVar2[2] * fVar1;
|
|
|
|
param_4[1] = (float)pbVar2[1] * fVar1;
|
|
|
|
param_4[2] = (float)*pbVar2 * fVar1;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc28a at 0x005FC28A (size: 178) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc2e6) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc28a(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_00799208;
|
|
|
|
puVar3 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)*(byte *)((int)puVar3 + 2) * fVar2;
|
|
|
|
param_4[1] = (float)*(byte *)((int)puVar3 + 1) * fVar2;
|
|
|
|
param_4[2] = (float)(*puVar3 & 0xff) * fVar2;
|
|
|
|
param_4[3] = (float)*(byte *)((int)puVar3 + 3) * fVar2;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc33c at 0x005FC33C (size: 168) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc398) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc33c(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_00799208;
|
|
|
|
puVar3 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)*(byte *)((int)puVar3 + 2) * fVar2;
|
|
|
|
param_4[1] = (float)*(byte *)((int)puVar3 + 1) * fVar2;
|
|
|
|
param_4[2] = (float)(*puVar3 & 0xff) * fVar2;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc3e4 at 0x005FC3E4 (size: 173) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc3e4(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
ushort *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_007edee8;
|
|
|
|
puVar3 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)(*puVar3 >> 0xb) * fVar2;
|
|
|
|
param_4[1] = (float)((*puVar3 & 0x7e0) >> 5) * _DAT_007edee0;
|
|
|
|
param_4[2] = (float)((byte)*puVar3 & 0x1f) * fVar2;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc491 at 0x005FC491 (size: 170) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc491(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
ushort *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_007edee8;
|
|
|
|
puVar3 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)((*puVar3 & 0x7c00) >> 10) * fVar2;
|
|
|
|
param_4[1] = (float)((*puVar3 & 0x3e0) >> 5) * fVar2;
|
|
|
|
param_4[2] = (float)((byte)*puVar3 & 0x1f) * fVar2;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc53b at 0x005FC53B (size: 184) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc53b(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
ushort *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_007edee8;
|
|
|
|
puVar3 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)((*puVar3 & 0x7c00) >> 10) * fVar2;
|
|
|
|
param_4[1] = (float)((*puVar3 & 0x3e0) >> 5) * fVar2;
|
|
|
|
param_4[2] = (float)((byte)*puVar3 & 0x1f) * fVar2;
|
|
|
|
param_4[3] = (float)(*puVar3 >> 0xf);
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc5f3 at 0x005FC5F3 (size: 183) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc5f3(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
ushort *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_0079cc80;
|
|
|
|
puVar3 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)(*(byte *)((int)puVar3 + 1) & 0xf) * fVar2;
|
|
|
|
param_4[1] = (float)(byte)((byte)*puVar3 >> 4) * fVar2;
|
|
|
|
param_4[2] = (float)((byte)*puVar3 & 0xf) * fVar2;
|
|
|
|
param_4[3] = (float)(*puVar3 >> 0xc) * fVar2;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc6aa at 0x005FC6AA (size: 226) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc70a) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc6ef) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc726) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc740) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc6aa(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_007edf10;
|
|
|
|
puVar3 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)(*puVar3 & 0x3ff) * fVar2;
|
|
|
|
param_4[1] = (float)(*puVar3 >> 10 & 0x3ff) * fVar2;
|
|
|
|
param_4[2] = (float)(*puVar3 >> 0x14 & 0x3ff) * fVar2;
|
|
|
|
param_4[3] = (float)(*puVar3 >> 0x1e) * _DAT_007e75f0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc78c at 0x005FC78C (size: 178) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc7cb) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc78c(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_00799208;
|
|
|
|
puVar3 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)(*puVar3 & 0xff) * fVar2;
|
|
|
|
param_4[1] = (float)*(byte *)((int)puVar3 + 1) * fVar2;
|
|
|
|
param_4[2] = (float)*(byte *)((int)puVar3 + 2) * fVar2;
|
|
|
|
param_4[3] = (float)*(byte *)((int)puVar3 + 3) * fVar2;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc83e at 0x005FC83E (size: 168) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc87d) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc83e(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_00799208;
|
|
|
|
puVar3 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)(*puVar3 & 0xff) * fVar2;
|
|
|
|
param_4[1] = (float)*(byte *)((int)puVar3 + 1) * fVar2;
|
|
|
|
param_4[2] = (float)*(byte *)((int)puVar3 + 2) * fVar2;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc8e6 at 0x005FC8E6 (size: 158) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc925) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc8e6(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_007edf18;
|
|
|
|
puVar3 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)(*puVar3 & 0xffff) * fVar2;
|
|
|
|
param_4[1] = (float)*(ushort *)((int)puVar3 + 2) * fVar2;
|
|
|
|
param_4[2] = 1.0;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fc984 at 0x005FC984 (size: 226) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc9e7) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fc9cc) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fca00) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fca1a) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fc984(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_007edf10;
|
|
|
|
puVar3 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
*param_4 = (float)(*puVar3 >> 0x14 & 0x3ff) * fVar2;
|
|
|
|
param_4[1] = (float)(*puVar3 >> 10 & 0x3ff) * fVar2;
|
|
|
|
param_4[2] = (float)(*puVar3 & 0x3ff) * fVar2;
|
|
|
|
param_4[3] = (float)(*puVar3 >> 0x1e) * _DAT_007e75f0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fca66 at 0x005FCA66 (size: 250) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fcad2) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fcab0) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fcb00) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fca66(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
uint *puVar4;
|
|
|
|
|
|
|
|
puVar4 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar4 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
fVar2 = _DAT_007edf18;
|
|
|
|
for (; puVar4 < puVar1; puVar4 = puVar4 + 2) {
|
|
|
|
*param_4 = (float)(*puVar4 & 0xffff) * fVar2;
|
|
|
|
param_4[1] = (float)(*puVar4 >> 0x10) * fVar2;
|
|
|
|
uVar3 = __aullshr();
|
|
|
|
fVar2 = _DAT_007edf18;
|
|
|
|
param_4[2] = (float)uVar3 * _DAT_007edf18;
|
|
|
|
param_4[3] = (float)*(ushort *)((int)puVar4 + 6) * fVar2;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fcb60 at 0x005FCB60 (size: 170) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fcb60(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
byte *pbVar2;
|
|
|
|
int extraout_ECX;
|
|
|
|
byte *pbVar3;
|
|
|
|
|
|
|
|
fVar1 = _DAT_007edf0c;
|
|
|
|
pbVar2 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar3 = pbVar2 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; pbVar2 < pbVar3; pbVar2 = pbVar2 + 1) {
|
|
|
|
*param_4 = (float)(*pbVar2 >> 5) * fVar1;
|
|
|
|
param_4[1] = (float)(*pbVar2 >> 2 & 7) * fVar1;
|
|
|
|
param_4[2] = (float)(*pbVar2 & 3) * _DAT_007e75f0;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fcc0a at 0x005FCC0A (size: 126) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fcc0a(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
int extraout_ECX;
|
|
|
|
byte *pbVar2;
|
|
|
|
|
|
|
|
pbVar1 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar2 = pbVar1 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; pbVar1 < pbVar2; pbVar1 = pbVar1 + 1) {
|
|
|
|
*param_4 = 0;
|
|
|
|
param_4[1] = 0;
|
|
|
|
param_4[2] = 0;
|
|
|
|
param_4[3] = (float)*pbVar1 * _DAT_00799208;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fcc88 at 0x005FCC88 (size: 186) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fcc88(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
float fVar2;
|
|
|
|
byte *pbVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_007edf0c;
|
|
|
|
pbVar3 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar1 = pbVar3 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
for (; pbVar3 < pbVar1; pbVar3 = pbVar3 + 2) {
|
|
|
|
*param_4 = (float)(*pbVar3 >> 5) * fVar2;
|
|
|
|
param_4[1] = (float)(*pbVar3 >> 2 & 7) * fVar2;
|
|
|
|
param_4[2] = (float)(*pbVar3 & 3) * _DAT_007e75f0;
|
|
|
|
param_4[3] = (float)pbVar3[1] * _DAT_00799208;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fcd42 at 0x005FCD42 (size: 167) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fcd42(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
float fVar2;
|
|
|
|
byte *pbVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar2 = _DAT_0079cc80;
|
|
|
|
pbVar3 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar1 = pbVar3 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
for (; pbVar3 < pbVar1; pbVar3 = pbVar3 + 2) {
|
|
|
|
*param_4 = (float)(pbVar3[1] & 0xf) * fVar2;
|
|
|
|
param_4[1] = (float)(*pbVar3 >> 4) * fVar2;
|
|
|
|
param_4[2] = (float)(*pbVar3 & 0xf) * fVar2;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fcde9 at 0x005FCDE9 (size: 144) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fcde9(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
byte *pbVar2;
|
|
|
|
int extraout_ECX;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
pbVar2 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar1 = pbVar2 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
for (; pbVar2 < pbVar1; pbVar2 = pbVar2 + 2) {
|
|
|
|
puVar3 = (undefined4 *)((uint)*pbVar2 * 0x10 + *(int *)(param_1 + 0x38));
|
|
|
|
*param_4 = *puVar3;
|
|
|
|
param_4[1] = puVar3[1];
|
|
|
|
param_4[2] = puVar3[2];
|
|
|
|
param_4[3] = puVar3[3];
|
|
|
|
param_4[3] = (float)pbVar2[1] * _DAT_00799208;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fce79 at 0x005FCE79 (size: 111) ---
|
|
|
|
|
|
void __thiscall FUN_005fce79(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
byte *pbVar2;
|
|
|
|
int extraout_ECX;
|
|
|
|
byte *pbVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
|
|
|
|
pbVar2 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar3 = pbVar2 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; pbVar2 < pbVar3; pbVar2 = pbVar2 + 1) {
|
|
|
|
puVar4 = (undefined4 *)((uint)*pbVar2 * 0x10 + *(int *)(param_1 + 0x38));
|
|
|
|
*param_4 = *puVar4;
|
|
|
|
param_4[1] = puVar4[1];
|
|
|
|
puVar1 = param_4 + 3;
|
|
|
|
param_4[2] = puVar4[2];
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
*puVar1 = puVar4[3];
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fcee8 at 0x005FCEE8 (size: 122) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fcee8(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
byte *pbVar2;
|
|
|
|
int extraout_ECX;
|
|
|
|
byte *pbVar3;
|
|
|
|
|
|
|
|
pbVar2 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar3 = pbVar2 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; pbVar2 < pbVar3; pbVar2 = pbVar2 + 1) {
|
|
|
|
fVar1 = (float)*pbVar2 * _DAT_00799208;
|
|
|
|
param_4[2] = fVar1;
|
|
|
|
param_4[1] = fVar1;
|
|
|
|
*param_4 = fVar1;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fcf62 at 0x005FCF62 (size: 145) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fcf62(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte *pbVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
byte *pbVar4;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar3 = _DAT_00799208;
|
|
|
|
pbVar4 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar1 = pbVar4 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
for (; pbVar4 < pbVar1; pbVar4 = pbVar4 + 2) {
|
|
|
|
fVar2 = (float)*pbVar4 * fVar3;
|
|
|
|
param_4[2] = fVar2;
|
|
|
|
param_4[1] = fVar2;
|
|
|
|
*param_4 = fVar2;
|
|
|
|
param_4[3] = (float)pbVar4[1] * fVar3;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fcff3 at 0x005FCFF3 (size: 145) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fcff3(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
byte *pbVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
byte *pbVar4;
|
|
|
|
|
|
|
|
fVar2 = _DAT_0079cc80;
|
|
|
|
pbVar3 = (byte *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pbVar4 = pbVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; pbVar3 < pbVar4; pbVar3 = pbVar3 + 1) {
|
|
|
|
fVar1 = (float)(*pbVar3 & 0xf) * fVar2;
|
|
|
|
param_4[2] = fVar1;
|
|
|
|
param_4[1] = fVar1;
|
|
|
|
*param_4 = fVar1;
|
|
|
|
param_4[3] = (float)(*pbVar3 >> 4) * fVar2;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd084 at 0x005FD084 (size: 174) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fd084(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
char cVar2;
|
|
|
|
float fVar3;
|
|
|
|
char *pcVar4;
|
|
|
|
|
|
|
|
fVar3 = _DAT_007edf20;
|
|
|
|
pcVar4 = (char *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pcVar1 = pcVar4 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
for (; pcVar4 < pcVar1; pcVar4 = pcVar4 + 2) {
|
|
|
|
cVar2 = pcVar4[1];
|
|
|
|
*param_4 = (float)(int)(char)((*pcVar4 == -0x80) + *pcVar4) * fVar3;
|
|
|
|
param_4[1] = (float)(int)(char)((cVar2 == -0x80) + cVar2) * fVar3;
|
|
|
|
param_4[2] = 1.0;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd132 at 0x005FD132 (size: 211) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fd132(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
ushort *puVar3;
|
|
|
|
char cVar4;
|
|
|
|
char cVar5;
|
|
|
|
|
|
|
|
fVar2 = _DAT_0079cc80;
|
|
|
|
puVar3 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
cVar5 = (char)((char)*puVar3 << 3) >> 3;
|
|
|
|
cVar4 = (char)((char)(*puVar3 >> 5) << 3) >> 3;
|
|
|
|
*param_4 = (float)(int)(char)((cVar5 == -0x10) + cVar5) * fVar2;
|
|
|
|
param_4[1] = (float)(int)(char)((cVar4 == -0x10) + cVar4) * fVar2;
|
|
|
|
param_4[2] = 1.0;
|
|
|
|
param_4[3] = (float)(*puVar3 >> 10) * _DAT_007edee0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd205 at 0x005FD205 (size: 191) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fd205(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
float fVar2;
|
|
|
|
char *pcVar3;
|
|
|
|
char cVar4;
|
|
|
|
|
|
|
|
fVar2 = _DAT_007edf20;
|
|
|
|
pcVar3 = (char *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pcVar1 = pcVar3 + *(int *)(param_1 + 0x68) * 4;
|
|
|
|
for (; pcVar3 < pcVar1; pcVar3 = pcVar3 + 4) {
|
|
|
|
cVar4 = (char)((uint)*(undefined4 *)pcVar3 >> 8);
|
|
|
|
*param_4 = (float)(int)(char)((*pcVar3 == -0x80) + *pcVar3) * fVar2;
|
|
|
|
param_4[1] = (float)(int)(char)((cVar4 == -0x80) + cVar4) * fVar2;
|
|
|
|
param_4[2] = 1.0;
|
|
|
|
param_4[3] = (float)(byte)pcVar3[2] * _DAT_00799208;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd2c4 at 0x005FD2C4 (size: 238) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fd2c4(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
char cVar3;
|
|
|
|
float fVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
char cVar6;
|
|
|
|
char cVar7;
|
|
|
|
|
|
|
|
fVar4 = _DAT_007edf20;
|
|
|
|
puVar5 = (undefined4 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar5 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar5 < puVar1; puVar5 = puVar5 + 1) {
|
|
|
|
uVar2 = *puVar5;
|
|
|
|
cVar3 = (char)((uint)uVar2 >> 0x10);
|
|
|
|
cVar7 = (char)((uint)uVar2 >> 0x18);
|
|
|
|
cVar6 = (char)((uint)uVar2 >> 8);
|
|
|
|
*param_4 = (float)(int)(char)(((char)uVar2 == -0x80) + (char)uVar2) * fVar4;
|
|
|
|
param_4[1] = (float)(int)(char)((cVar6 == -0x80) + cVar6) * fVar4;
|
|
|
|
param_4[2] = (float)(int)(char)((cVar3 == -0x80) + cVar3) * fVar4;
|
|
|
|
param_4[3] = (float)(int)(char)((cVar7 == -0x80) + cVar7) * fVar4;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd3b2 at 0x005FD3B2 (size: 181) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fd3b2(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
short sVar2;
|
|
|
|
float fVar3;
|
|
|
|
short *psVar4;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar3 = _DAT_007cbd08;
|
|
|
|
psVar4 = (short *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
psVar1 = psVar4 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
for (; psVar4 < psVar1; psVar4 = psVar4 + 2) {
|
|
|
|
sVar2 = psVar4[1];
|
|
|
|
*param_4 = (float)(int)(short)((ushort)(*psVar4 == -0x8000) + *psVar4) * fVar3;
|
|
|
|
param_4[1] = (float)(int)(short)((ushort)(sVar2 == -0x8000) + sVar2) * fVar3;
|
|
|
|
param_4[2] = 1.0;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd467 at 0x005FD467 (size: 268) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fd522) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fd467(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
uint *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
short sVar4;
|
|
|
|
short sVar5;
|
|
|
|
short sVar6;
|
|
|
|
|
|
|
|
fVar2 = _DAT_007ee04c;
|
|
|
|
puVar3 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
sVar4 = (short)((ushort)(*puVar3 >> 0x14) << 6) >> 6;
|
|
|
|
sVar6 = (short)((short)*puVar3 << 6) >> 6;
|
|
|
|
sVar5 = (short)((short)(*puVar3 >> 10) << 6) >> 6;
|
|
|
|
*param_4 = (float)(int)(short)((ushort)(sVar6 == -0x200) + sVar6) * fVar2;
|
|
|
|
param_4[1] = (float)(int)(short)((ushort)(sVar5 == -0x200) + sVar5) * fVar2;
|
|
|
|
param_4[2] = (float)(int)(short)((ushort)(sVar4 == -0x200) + sVar4) * fVar2;
|
|
|
|
param_4[3] = (float)(*puVar3 >> 0x1e) * _DAT_007e75f0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd573 at 0x005FD573 (size: 266) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fd573(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
short *psVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
float *pfVar3;
|
|
|
|
float fVar4;
|
|
|
|
short *psVar5;
|
|
|
|
int extraout_ECX;
|
|
|
|
short sVar6;
|
|
|
|
|
|
|
|
fVar4 = _DAT_007cbd08;
|
|
|
|
psVar5 = (short *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
psVar1 = psVar5 + *(int *)(param_1 + 0x68) * 4;
|
|
|
|
pfVar3 = param_4;
|
|
|
|
for (; psVar5 < psVar1; psVar5 = psVar5 + 4) {
|
|
|
|
uVar2 = *(undefined4 *)(psVar5 + 2);
|
|
|
|
sVar6 = (short)uVar2;
|
|
|
|
param_4._0_2_ = (short)((uint)*(undefined4 *)psVar5 >> 0x10);
|
|
|
|
*pfVar3 = (float)(int)(short)((ushort)(*psVar5 == -0x8000) + *psVar5) * fVar4;
|
|
|
|
pfVar3[1] = (float)(int)(short)((ushort)((short)param_4 == -0x8000) + (short)param_4) * fVar4;
|
|
|
|
param_2._0_2_ = (short)((uint)uVar2 >> 0x10);
|
|
|
|
pfVar3[2] = (float)(int)(short)((ushort)(sVar6 == -0x8000) + sVar6) * fVar4;
|
|
|
|
pfVar3[3] = (float)(int)(short)((ushort)((short)param_2 == -0x8000) + (short)param_2) * fVar4;
|
|
|
|
pfVar3 = pfVar3 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(pfVar3 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(pfVar3 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd67d at 0x005FD67D (size: 212) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fd67d(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
char cVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
char *pcVar6;
|
|
|
|
|
|
|
|
fVar5 = _DAT_007edf20;
|
|
|
|
pcVar6 = (char *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
pcVar1 = pcVar6 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
for (; pcVar6 < pcVar1; pcVar6 = pcVar6 + 2) {
|
|
|
|
cVar2 = pcVar6[1];
|
|
|
|
fVar3 = (float)(int)(char)((*pcVar6 == -0x80) + *pcVar6) * fVar5;
|
|
|
|
*param_4 = fVar3;
|
|
|
|
fVar4 = (float)(int)(char)((cVar2 == -0x80) + cVar2) * fVar5;
|
|
|
|
param_4[1] = fVar4;
|
|
|
|
fVar3 = (_DAT_007938b0 - fVar3 * fVar3) - fVar4 * fVar4;
|
|
|
|
if (fVar3 < DAT_00796344 == (fVar3 == DAT_00796344)) {
|
|
|
|
fVar3 = SQRT(fVar3);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar3 = 0.0;
|
|
|
|
}
|
|
|
|
param_4[2] = fVar3;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd751 at 0x005FD751 (size: 124) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fd751(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
ushort *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
puVar3 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
fVar2 = (float)*puVar3 * _DAT_007edf18;
|
|
|
|
param_4[2] = fVar2;
|
|
|
|
param_4[1] = fVar2;
|
|
|
|
*param_4 = fVar2;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd7cd at 0x005FD7CD (size: 116) ---
|
|
|
|
|
|
void __thiscall FUN_005fd7cd(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
puVar3 = (undefined4 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 1) {
|
|
|
|
uVar2 = *puVar3;
|
|
|
|
param_4[3] = 0x3f800000;
|
|
|
|
*param_4 = uVar2;
|
|
|
|
param_4[2] = 0x3f800000;
|
|
|
|
param_4[1] = 0x3f800000;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd841 at 0x005FD841 (size: 132) ---
|
|
|
|
|
|
void __thiscall FUN_005fd841(int param_1,int param_2,int param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar2 = *(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20);
|
|
|
|
uVar1 = uVar2 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
for (; uVar2 < uVar1; uVar2 = uVar2 + 2) {
|
|
|
|
thunk_FUN_005e038f(param_4,uVar2,1);
|
|
|
|
*(undefined4 *)(param_4 + 0xc) = 0x3f800000;
|
|
|
|
*(undefined4 *)(param_4 + 8) = 0x3f800000;
|
|
|
|
*(undefined4 *)(param_4 + 4) = 0x3f800000;
|
|
|
|
param_4 = param_4 + 0x10;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -0x10);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -0x10);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd8c5 at 0x005FD8C5 (size: 128) ---
|
|
|
|
|
|
void __thiscall FUN_005fd8c5(int param_1,int param_2,int param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
|
|
|
|
uVar2 = *(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20);
|
|
|
|
uVar1 = uVar2 + *(int *)(param_1 + 0x68) * 4;
|
|
|
|
for (; uVar2 < uVar1; uVar2 = uVar2 + 4) {
|
|
|
|
thunk_FUN_005e038f(param_4,uVar2,2);
|
|
|
|
*(undefined4 *)(param_4 + 0xc) = 0x3f800000;
|
|
|
|
*(undefined4 *)(param_4 + 8) = 0x3f800000;
|
|
|
|
param_4 = param_4 + 0x10;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -0x10);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -0x10);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd945 at 0x005FD945 (size: 80) ---
|
|
|
|
|
|
void __thiscall FUN_005fd945(int param_1,int param_2,int param_3,undefined4 param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
thunk_FUN_005e038f(param_4,*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3
|
|
|
|
+ *(int *)(param_1 + 0x20),*(int *)(param_1 + 0x68) << 2);
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fd995 at 0x005FD995 (size: 117) ---
|
|
|
|
|
|
void __thiscall FUN_005fd995(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
puVar3 = (undefined4 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar3 + *(int *)(param_1 + 0x68) * 2;
|
|
|
|
for (; puVar3 < puVar1; puVar3 = puVar3 + 2) {
|
|
|
|
*param_4 = *puVar3;
|
|
|
|
uVar2 = puVar3[1];
|
|
|
|
param_4[3] = 0x3f800000;
|
|
|
|
param_4[1] = uVar2;
|
|
|
|
param_4[2] = 0x3f800000;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fda0a at 0x005FDA0A (size: 91) ---
|
|
|
|
|
|
void __thiscall FUN_005fda0a(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
|
|
|
|
puVar3 = (undefined4 *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar4 = param_4;
|
|
|
|
for (uVar1 = (uint)(*(int *)(param_1 + 0x68) << 4) >> 2; uVar1 != 0; uVar1 = uVar1 - 1) {
|
|
|
|
*puVar4 = *puVar3;
|
|
|
|
puVar3 = puVar3 + 1;
|
|
|
|
puVar4 = puVar4 + 1;
|
|
|
|
}
|
|
|
|
for (iVar2 = 0; iVar2 != 0; iVar2 = iVar2 + -1) {
|
|
|
|
*(undefined1 *)puVar4 = *(undefined1 *)puVar3;
|
|
|
|
puVar3 = (undefined4 *)((int)puVar3 + 1);
|
|
|
|
puVar4 = (undefined4 *)((int)puVar4 + 1);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fda65 at 0x005FDA65 (size: 154) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005fdaa4) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fda65(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
uint *puVar4;
|
|
|
|
int extraout_ECX;
|
|
|
|
|
|
|
|
fVar3 = _DAT_007edf18;
|
|
|
|
puVar4 = (uint *)(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar1 = puVar4 + *(int *)(param_1 + 0x68);
|
|
|
|
for (; puVar4 < puVar1; puVar4 = puVar4 + 1) {
|
|
|
|
fVar2 = (float)(*puVar4 & 0xffff) * fVar3;
|
|
|
|
param_4[2] = fVar2;
|
|
|
|
param_4[1] = fVar2;
|
|
|
|
*param_4 = fVar2;
|
|
|
|
param_4[3] = (float)*(ushort *)((int)puVar4 + 2) * fVar3;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fdaff at 0x005FDAFF (size: 152) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fdaff(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
ushort *puVar2;
|
|
|
|
int extraout_ECX;
|
|
|
|
ushort *puVar3;
|
|
|
|
|
|
|
|
fVar1 = _DAT_007edf18;
|
|
|
|
puVar2 = (ushort *)
|
|
|
|
(*(int *)(param_1 + 0x60) * param_2 + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
puVar3 = (ushort *)(*(int *)(param_1 + 0x74) + (int)puVar2);
|
|
|
|
for (; puVar2 < puVar3; puVar2 = puVar2 + 3) {
|
|
|
|
*param_4 = (float)puVar2[2] * fVar1;
|
|
|
|
param_4[1] = (float)puVar2[1] * fVar1;
|
|
|
|
param_4[2] = (float)*puVar2 * fVar1;
|
|
|
|
param_4[3] = 1.0;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
param_1 = extraout_ECX;
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fdb97 at 0x005FDB97 (size: 238) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fdb97(undefined4 *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
FUN_005f518f(param_2,0,1);
|
|
|
|
uVar1 = param_1[0x11] + 1 & 0xfffffffe;
|
|
|
|
iVar3 = uVar1 - (param_1[0xf] & 0xfffffffe);
|
|
|
|
param_1[0x23] = uVar1;
|
|
|
|
*param_1 = &PTR_FUN_007ee1a4;
|
|
|
|
param_1[0x21] = param_1[0xf] & 0xfffffffe;
|
|
|
|
param_1[0x22] = 0;
|
|
|
|
param_1[0x25] = 0;
|
|
|
|
param_1[0x24] = 0;
|
|
|
|
param_1[0x26] = 0;
|
|
|
|
param_1[0x27] = iVar3;
|
|
|
|
param_1[0x28] = 0;
|
|
|
|
param_1[0x29] = 1;
|
|
|
|
iVar2 = FUN_005df0f5(iVar3 * 0x10);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(iVar2,0x10,iVar3,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
param_1[0x20] = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
param_1[0x29] = 0;
|
|
|
|
}
|
|
|
|
iVar2 = *(int *)(param_2 + 4);
|
|
|
|
if (iVar2 == 0x32595559) {
|
|
|
|
LAB_005fdc6c:
|
|
|
|
param_1[0x2a] = 0;
|
|
|
|
param_1[0x2b] = 8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar2 != 0x42475247) {
|
|
|
|
if (iVar2 == 0x47424752) goto LAB_005fdc6c;
|
|
|
|
if (iVar2 != 0x59565955) {
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_1[0x2a] = 8;
|
|
|
|
param_1[0x2b] = 0;
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fdc85 at 0x005FDC85 (size: 41) ---
|
|
|
|
|
|
void __fastcall FUN_005fdc85(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007ee1a4;
|
|
|
|
FUN_005f4603();
|
|
|
|
if ((void *)param_1[0x20] != (void *)0x0) {
|
|
|
|
operator_delete((void *)param_1[0x20]);
|
|
|
|
}
|
|
|
|
FUN_005f40bf();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fdcae at 0x005FDCAE (size: 142) ---
|
|
|
|
|
|
void __thiscall FUN_005fdcae(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (undefined4 *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (undefined4 *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
iVar1 = FUN_005f4906(param_2 + *(int *)(param_1 + 0x40),param_3 + *(int *)(param_1 + 0x4c),
|
|
|
|
*(int *)(param_1 + 0x9c) != *(int *)(param_1 + 0x68));
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
puVar3 = (undefined4 *)
|
|
|
|
((*(int *)(param_1 + 0x3c) - *(int *)(param_1 + 0x84)) * 0x10 +
|
|
|
|
*(int *)(param_1 + 0x80));
|
|
|
|
for (uVar2 = (uint)(*(int *)(param_1 + 0x68) << 4) >> 2; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
|
|
*puVar3 = *param_4;
|
|
|
|
param_4 = param_4 + 1;
|
|
|
|
puVar3 = puVar3 + 1;
|
|
|
|
}
|
|
|
|
for (iVar1 = 0; iVar1 != 0; iVar1 = iVar1 + -1) {
|
|
|
|
*(undefined1 *)puVar3 = *(undefined1 *)param_4;
|
|
|
|
param_4 = (undefined4 *)((int)param_4 + 1);
|
|
|
|
puVar3 = (undefined4 *)((int)puVar3 + 1);
|
|
|
|
}
|
|
|
|
*(undefined4 *)(param_1 + 0xa0) = 1;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fdd3c at 0x005FDD3C (size: 117) ---
|
|
|
|
|
|
void __thiscall FUN_005fdd3c(int param_1,int param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
undefined4 *puVar4;
|
|
|
|
|
|
|
|
iVar1 = FUN_005f4906(param_2 + *(int *)(param_1 + 0x40),param_3 + *(int *)(param_1 + 0x4c),1);
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
puVar3 = (undefined4 *)
|
|
|
|
((*(int *)(param_1 + 0x3c) - *(int *)(param_1 + 0x84)) * 0x10 +
|
|
|
|
*(int *)(param_1 + 0x80));
|
|
|
|
puVar4 = param_4;
|
|
|
|
for (uVar2 = (uint)(*(int *)(param_1 + 0x68) << 4) >> 2; uVar2 != 0; uVar2 = uVar2 - 1) {
|
|
|
|
*puVar4 = *puVar3;
|
|
|
|
puVar3 = puVar3 + 1;
|
|
|
|
puVar4 = puVar4 + 1;
|
|
|
|
}
|
|
|
|
for (iVar1 = 0; iVar1 != 0; iVar1 = iVar1 + -1) {
|
|
|
|
*(undefined1 *)puVar4 = *(undefined1 *)puVar3;
|
|
|
|
puVar3 = (undefined4 *)((int)puVar3 + 1);
|
|
|
|
puVar4 = (undefined4 *)((int)puVar4 + 1);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
FUN_005f5595(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(param_4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fddb1 at 0x005FDDB1 (size: 488) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fddb1(undefined4 *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
uint *puVar4;
|
|
|
|
uint *puVar5;
|
|
|
|
|
|
|
|
FUN_005f518f(param_2,0,1);
|
|
|
|
iVar2 = param_1[1];
|
|
|
|
*param_1 = &PTR_FUN_007ee1b4;
|
|
|
|
if (iVar2 == 0x31545844) {
|
|
|
|
param_1[0x22] = 8;
|
|
|
|
param_1[0x24] = FUN_00601f9e;
|
|
|
|
param_1[0x23] = FUN_00601c99;
|
|
|
|
}
|
|
|
|
else if (iVar2 == 0x32545844) {
|
|
|
|
param_1[0x22] = 0x10;
|
|
|
|
param_1[0x24] = FUN_00602711;
|
|
|
|
param_1[0x23] = FUN_006026c5;
|
|
|
|
}
|
|
|
|
else if (iVar2 == 0x33545844) {
|
|
|
|
param_1[0x22] = 0x10;
|
|
|
|
param_1[0x24] = FUN_006020c2;
|
|
|
|
param_1[0x23] = FUN_00601ddb;
|
|
|
|
}
|
|
|
|
else if (iVar2 == 0x34545844) {
|
|
|
|
param_1[0x22] = 0x10;
|
|
|
|
param_1[0x24] = FUN_0060274a;
|
|
|
|
param_1[0x23] = FUN_006026eb;
|
|
|
|
}
|
|
|
|
else if (iVar2 == 0x35545844) {
|
|
|
|
param_1[0x22] = 0x10;
|
|
|
|
param_1[0x24] = FUN_006021f1;
|
|
|
|
param_1[0x23] = FUN_00601e60;
|
|
|
|
}
|
|
|
|
puVar4 = (uint *)(param_2 + 0x10);
|
|
|
|
puVar5 = param_1 + 0x25;
|
|
|
|
for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) {
|
|
|
|
*puVar5 = *puVar4;
|
|
|
|
puVar4 = puVar4 + 1;
|
|
|
|
puVar5 = puVar5 + 1;
|
|
|
|
}
|
|
|
|
param_1[0x2b] = param_1[0x25] & 0xfffffffc;
|
|
|
|
param_1[0x2c] = param_1[0x26] & 0xfffffffc;
|
|
|
|
param_1[0x2f] = param_1[0x29];
|
|
|
|
param_1[0x2d] = param_1[0x27] + 3 & 0xfffffffc;
|
|
|
|
param_1[0x3a] = 0xffffffff;
|
|
|
|
param_1[0x3b] = 0xffffffff;
|
|
|
|
param_1[0x2e] = param_1[0x28] + 3 & 0xfffffffc;
|
|
|
|
param_1[0x30] = param_1[0x2a];
|
|
|
|
param_1[0x35] = param_1[0x13];
|
|
|
|
uVar1 = param_1[0x11] + 3 & 0xfffffffc;
|
|
|
|
param_1[0x33] = uVar1;
|
|
|
|
uVar3 = param_1[0x12] + 3 & 0xfffffffc;
|
|
|
|
param_1[0x34] = uVar3;
|
|
|
|
param_1[0x37] = uVar1 - (param_1[0xf] & 0xfffffffc) >> 2;
|
|
|
|
param_1[0x36] = param_1[0x14];
|
|
|
|
param_1[0x3c] = 0;
|
|
|
|
param_1[0x3d] = 0;
|
|
|
|
param_1[0x3e] = 0;
|
|
|
|
param_1[0x31] = param_1[0xf] & 0xfffffffc;
|
|
|
|
param_1[0x32] = param_1[0x10] & 0xfffffffc;
|
|
|
|
param_1[0x38] = uVar3 - (param_1[0x10] & 0xfffffffc) >> 2;
|
|
|
|
param_1[0x39] = param_1[0x14] - param_1[0x13];
|
|
|
|
param_1[0x3f] = *(undefined4 *)(param_2 + 0x40);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fdf99 at 0x005FDF99 (size: 33) ---
|
|
|
|
|
|
void * __thiscall FUN_005fdf99(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005f4f8d();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fdfba at 0x005FDFBA (size: 1057) ---
|
|
|
|
|
|
void __thiscall FUN_005fdfba(int param_1,uint param_2,int param_3,undefined4 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint *puVar7;
|
|
|
|
undefined4 *puVar8;
|
|
|
|
uint local_24 [5];
|
|
|
|
uint local_10;
|
|
|
|
uint local_c;
|
|
|
|
uint *local_8;
|
|
|
|
|
|
|
|
param_2 = param_2 + *(int *)(param_1 + 0x40);
|
|
|
|
param_3 = param_3 + *(int *)(param_1 + 0x4c);
|
|
|
|
if (*(int *)(param_1 + 0xf8) == 0) {
|
|
|
|
puVar1 = (undefined4 *)FUN_005df0f5(*(int *)(param_1 + 0xe0) * *(int *)(param_1 + 0xe4) * 8);
|
|
|
|
*(undefined4 **)(param_1 + 0xf8) = puVar1;
|
|
|
|
if (puVar1 == (undefined4 *)0x0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
for (uVar4 = (uint)(*(int *)(param_1 + 0xe0) * *(int *)(param_1 + 0xe4) * 8) >> 2; uVar4 != 0;
|
|
|
|
uVar4 = uVar4 - 1) {
|
|
|
|
*puVar1 = 0;
|
|
|
|
puVar1 = puVar1 + 1;
|
|
|
|
}
|
|
|
|
for (iVar5 = 0; iVar5 != 0; iVar5 = iVar5 + -1) {
|
|
|
|
*(undefined1 *)puVar1 = 0;
|
|
|
|
puVar1 = (undefined4 *)((int)puVar1 + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
puVar7 = (uint *)(*(int *)(param_1 + 0xf8) +
|
|
|
|
((param_3 - *(int *)(param_1 + 0xd4)) * *(int *)(param_1 + 0xe0) +
|
|
|
|
(param_2 - *(int *)(param_1 + 200) >> 2)) * 8);
|
|
|
|
local_8 = puVar7;
|
|
|
|
if (puVar7[1] == 0) {
|
|
|
|
iVar5 = *(int *)(param_1 + 0xdc);
|
|
|
|
local_24[4] = FUN_005df0f5(iVar5 << 8);
|
|
|
|
if (local_24[4] == 0) {
|
|
|
|
uVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(local_24[4],0x10,iVar5 << 4,&LAB_005eda5e);
|
|
|
|
uVar4 = local_24[4];
|
|
|
|
}
|
|
|
|
puVar7[1] = uVar4;
|
|
|
|
if (uVar4 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
*puVar7 = 0;
|
|
|
|
*(int *)(param_1 + 0xf4) = *(int *)(param_1 + 0xf4) + 1;
|
|
|
|
}
|
|
|
|
if (*puVar7 == 0) {
|
|
|
|
local_24[4] = param_2 & 0xfffffffc;
|
|
|
|
if (((local_24[4] < *(uint *)(param_1 + 0x40)) &&
|
|
|
|
(*(uint *)(param_1 + 0x98) < *(uint *)(param_1 + 0x40))) ||
|
|
|
|
((*(uint *)(param_1 + 0x48) < local_24[4] + 4 &&
|
|
|
|
(*(uint *)(param_1 + 0x48) < *(uint *)(param_1 + 0xa0))))) {
|
|
|
|
local_10 = *(uint *)(param_1 + 0xc4);
|
|
|
|
iVar5 = (param_2 >> 2) * *(int *)(param_1 + 0x60) + (local_10 >> 2) * *(int *)(param_1 + 0x88)
|
|
|
|
+ *(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20);
|
|
|
|
local_c = puVar7[1];
|
|
|
|
if (local_10 < *(uint *)(param_1 + 0xcc)) {
|
|
|
|
do {
|
|
|
|
(**(code **)(param_1 + 0x8c))(local_c,iVar5);
|
|
|
|
local_10 = local_10 + 4;
|
|
|
|
iVar5 = iVar5 + *(int *)(param_1 + 0x88);
|
|
|
|
local_c = local_c + 0x100;
|
|
|
|
} while (local_10 < *(uint *)(param_1 + 0xcc));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((*(uint *)(param_1 + 0xc4) < *(uint *)(param_1 + 0x3c)) &&
|
|
|
|
(*(uint *)(param_1 + 0x94) < *(uint *)(param_1 + 0x3c))) {
|
|
|
|
(**(code **)(param_1 + 0x8c))
|
|
|
|
(puVar7[1],
|
|
|
|
(*(uint *)(param_1 + 0xc4) >> 2) * *(int *)(param_1 + 0x88) +
|
|
|
|
(param_2 >> 2) * *(int *)(param_1 + 0x60) + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
}
|
|
|
|
if ((*(uint *)(param_1 + 0x44) < *(uint *)(param_1 + 0xcc)) &&
|
|
|
|
(*(uint *)(param_1 + 0x44) < *(uint *)(param_1 + 0x9c))) {
|
|
|
|
(**(code **)(param_1 + 0x8c))
|
|
|
|
(puVar7[1],
|
|
|
|
(*(uint *)(param_1 + 0xcc) - 4 >> 2) * *(int *)(param_1 + 0x88) +
|
|
|
|
(param_2 >> 2) * *(int *)(param_1 + 0x60) + *(int *)(param_1 + 100) * param_3 +
|
|
|
|
*(int *)(param_1 + 0x20));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar4 = 0;
|
|
|
|
do {
|
|
|
|
if ((uVar4 + local_24[4] < *(uint *)(param_1 + 0x40)) ||
|
|
|
|
(*(uint *)(param_1 + 0x48) <= uVar4 + local_24[4])) {
|
|
|
|
*puVar7 = *puVar7 | 1 << ((byte)uVar4 & 0x1f);
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
} while (uVar4 < 4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x54) != 0) {
|
|
|
|
param_4 = (undefined4 *)FUN_005f40ea(param_4);
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
param_4 = (undefined4 *)FUN_005f560f(param_4);
|
|
|
|
}
|
|
|
|
uVar4 = *(int *)(param_1 + 0x3c) - *(int *)(param_1 + 0xc4);
|
|
|
|
iVar5 = *(int *)(param_1 + 200);
|
|
|
|
local_24[4] = *(int *)(param_1 + 0x68) + uVar4;
|
|
|
|
for (; uVar4 < local_24[4]; uVar4 = uVar4 + 1) {
|
|
|
|
puVar1 = (undefined4 *)
|
|
|
|
(((uVar4 & 0xfffffffc | param_2 - iVar5 & 3) << 2 | uVar4 & 3) * 0x10 + puVar7[1]);
|
|
|
|
*puVar1 = *param_4;
|
|
|
|
puVar1[1] = param_4[1];
|
|
|
|
puVar1[2] = param_4[2];
|
|
|
|
puVar1[3] = param_4[3];
|
|
|
|
puVar7 = local_8;
|
|
|
|
param_4 = param_4 + 4;
|
|
|
|
}
|
|
|
|
*puVar7 = *puVar7 | 1 << ((byte)param_2 & 3);
|
|
|
|
if (*puVar7 == 0xf) {
|
|
|
|
local_c = *(uint *)(param_1 + 0xc4);
|
|
|
|
iVar5 = (param_2 >> 2) * *(int *)(param_1 + 0x60) + (local_c >> 2) * *(int *)(param_1 + 0x88) +
|
|
|
|
*(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20);
|
|
|
|
param_4 = (undefined4 *)puVar7[1];
|
|
|
|
if (local_c < *(uint *)(param_1 + 0xcc)) {
|
|
|
|
local_24[0] = 0;
|
|
|
|
local_24[1] = 0;
|
|
|
|
local_24[2] = 0;
|
|
|
|
local_24[4] = param_2 & 0xfffffffc;
|
|
|
|
local_24[3] = 1;
|
|
|
|
do {
|
|
|
|
uVar2 = *(int *)(param_1 + 0x9c) - local_c;
|
|
|
|
uVar4 = *(int *)(param_1 + 0xa0) - local_24[4];
|
|
|
|
if ((uVar2 < 4) && (param_2 = 0, uVar4 != 0)) {
|
|
|
|
do {
|
|
|
|
uVar6 = uVar2;
|
|
|
|
if (3 < param_2) break;
|
|
|
|
do {
|
|
|
|
puVar1 = (undefined4 *)((local_24[uVar6] | param_2 << 2) * 0x10 + (int)param_4);
|
|
|
|
puVar8 = (undefined4 *)((param_2 << 2 | uVar6) * 0x10 + (int)param_4);
|
|
|
|
uVar6 = uVar6 + 1;
|
|
|
|
*puVar8 = *puVar1;
|
|
|
|
puVar8[1] = puVar1[1];
|
|
|
|
puVar8[2] = puVar1[2];
|
|
|
|
puVar8[3] = puVar1[3];
|
|
|
|
} while (uVar6 < 4);
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
puVar7 = local_8;
|
|
|
|
} while (param_2 < uVar4);
|
|
|
|
}
|
|
|
|
for (; uVar4 < 4; uVar4 = uVar4 + 1) {
|
|
|
|
uVar2 = local_24[uVar4];
|
|
|
|
uVar6 = 0;
|
|
|
|
do {
|
|
|
|
puVar8 = (undefined4 *)((uVar4 << 2 | uVar6) * 0x10 + (int)param_4);
|
|
|
|
puVar1 = (undefined4 *)((uVar2 << 2 | uVar6) * 0x10 + (int)param_4);
|
|
|
|
uVar6 = uVar6 + 1;
|
|
|
|
*puVar8 = *puVar1;
|
|
|
|
puVar8[1] = puVar1[1];
|
|
|
|
puVar8[2] = puVar1[2];
|
|
|
|
puVar8[3] = puVar1[3];
|
|
|
|
} while (uVar6 < 4);
|
|
|
|
puVar7 = local_8;
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
if ((*(int *)(param_1 + 0xfc) != 0) || (*(int *)(param_1 + 0x5c) != 0)) {
|
|
|
|
uVar3 = 1;
|
|
|
|
}
|
|
|
|
(**(code **)(param_1 + 0x90))(iVar5,param_4,uVar3);
|
|
|
|
local_c = local_c + 4;
|
|
|
|
iVar5 = iVar5 + *(int *)(param_1 + 0x88);
|
|
|
|
param_4 = (undefined4 *)((int)param_4 + 0x100);
|
|
|
|
} while (local_c < *(uint *)(param_1 + 0xcc));
|
|
|
|
}
|
|
|
|
if (((puVar7 + 2 <
|
|
|
|
(uint *)(*(int *)(param_1 + 0xf8) +
|
|
|
|
*(int *)(param_1 + 0xe4) * *(int *)(param_1 + 0xe0) * 8)) && (puVar7[2] == 0)) &&
|
|
|
|
(puVar7[3] == 0)) {
|
|
|
|
puVar7[3] = puVar7[1];
|
|
|
|
puVar7[1] = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
operator_delete((void *)puVar7[1]);
|
|
|
|
*(int *)(param_1 + 0xf4) = *(int *)(param_1 + 0xf4) + -1;
|
|
|
|
}
|
|
|
|
puVar7[1] = 0;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fe3db at 0x005FE3DB (size: 651) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __thiscall FUN_005fe3db(int param_1,int param_2,int param_3,float *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
float *pfVar5;
|
|
|
|
float *pfVar6;
|
|
|
|
uint uVar7;
|
|
|
|
float *pfVar8;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
|
|
|
|
uVar7 = param_2 + *(int *)(param_1 + 0x40);
|
|
|
|
param_3 = param_3 + *(int *)(param_1 + 0x4c);
|
|
|
|
if (*(int *)(param_1 + 0xf0) == 0) {
|
|
|
|
iVar1 = *(int *)(param_1 + 0xdc);
|
|
|
|
iVar2 = FUN_005df0f5(iVar1 << 8);
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00401000(iVar2,0x10,iVar1 << 4,&LAB_005eda5e);
|
|
|
|
}
|
|
|
|
*(int *)(param_1 + 0xf0) = iVar2;
|
|
|
|
if (iVar2 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (((uVar7 & 0xfffffffc) != *(uint *)(param_1 + 0xe8)) || (param_3 != *(int *)(param_1 + 0xec)))
|
|
|
|
{
|
|
|
|
*(uint *)(param_1 + 0xe8) = uVar7 & 0xfffffffc;
|
|
|
|
uVar3 = *(uint *)(param_1 + 0xc4);
|
|
|
|
param_2 = (uVar7 >> 2) * *(int *)(param_1 + 0x60) + (uVar3 >> 2) * *(int *)(param_1 + 0x88) +
|
|
|
|
*(int *)(param_1 + 100) * param_3 + *(int *)(param_1 + 0x20);
|
|
|
|
*(int *)(param_1 + 0xec) = param_3;
|
|
|
|
param_3 = *(int *)(param_1 + 0xf0);
|
|
|
|
for (; uVar3 < *(uint *)(param_1 + 0xcc); uVar3 = uVar3 + 4) {
|
|
|
|
(**(code **)(param_1 + 0x8c))(param_3,param_2);
|
|
|
|
param_2 = param_2 + *(int *)(param_1 + 0x88);
|
|
|
|
param_3 = param_3 + 0x100;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar1 = *(int *)(param_1 + 200);
|
|
|
|
uVar3 = *(int *)(param_1 + 0x3c) - *(int *)(param_1 + 0xc4);
|
|
|
|
uVar4 = *(int *)(param_1 + 0x68) + uVar3;
|
|
|
|
pfVar5 = param_4;
|
|
|
|
for (; uVar3 < uVar4; uVar3 = uVar3 + 1) {
|
|
|
|
pfVar8 = (float *)(((uVar3 & 0xfffffffc | uVar7 - iVar1 & 3) << 2 | uVar3 & 3) * 0x10 +
|
|
|
|
*(int *)(param_1 + 0xf0));
|
|
|
|
*pfVar5 = *pfVar8;
|
|
|
|
pfVar5[1] = pfVar8[1];
|
|
|
|
pfVar6 = pfVar5 + 3;
|
|
|
|
pfVar5[2] = pfVar8[2];
|
|
|
|
pfVar5 = pfVar5 + 4;
|
|
|
|
*pfVar6 = pfVar8[3];
|
|
|
|
}
|
|
|
|
pfVar6 = pfVar5;
|
|
|
|
if (*(int *)(param_1 + 0x18) != 0) {
|
|
|
|
param_4 = (float *)CONCAT22(param_4._2_2_,in_FPUControlWord);
|
|
|
|
*(float **)(param_1 + 0x7c) = param_4;
|
|
|
|
for (pfVar6 = pfVar5 + *(int *)(param_1 + 0x68) * -4; pfVar6 < pfVar5; pfVar6 = pfVar6 + 4) {
|
|
|
|
if (((((float)(int)ROUND(*pfVar6 * _DAT_007edeec + _DAT_007938b8) * _DAT_007edee8 ==
|
|
|
|
*(float *)(param_1 + 0x24)) &&
|
|
|
|
((float)(int)ROUND(pfVar6[1] * _DAT_007edee4 + _DAT_007938b8) * _DAT_007edee0 ==
|
|
|
|
*(float *)(param_1 + 0x28))) &&
|
|
|
|
((float)(int)ROUND(pfVar6[2] * _DAT_007edeec + _DAT_007938b8) * _DAT_007edee8 ==
|
|
|
|
*(float *)(param_1 + 0x2c))) &&
|
|
|
|
((float)(int)ROUND(pfVar6[3] * *(float *)(param_1 + 0x80) + _DAT_007938b8) *
|
|
|
|
*(float *)(param_1 + 0x84) == *(float *)(param_1 + 0x30))) {
|
|
|
|
*pfVar6 = 0.0;
|
|
|
|
pfVar6[1] = 0.0;
|
|
|
|
pfVar6[2] = 0.0;
|
|
|
|
pfVar6[3] = 0.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (*(int *)(param_1 + 0x10) != 0) {
|
|
|
|
FUN_005f5802(pfVar6 + *(int *)(param_1 + 0x68) * -4);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fe666 at 0x005FE666 (size: 29) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fe666(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005fdb97(param_2);
|
|
|
|
*param_1 = &PTR_FUN_007ee1a4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fe683 at 0x005FE683 (size: 29) ---
|
|
|
|
|
|
undefined4 * __thiscall FUN_005fe683(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005fddb1(param_2);
|
|
|
|
*param_1 = &PTR_FUN_007ee1b4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fe6a0 at 0x005FE6A0 (size: 33) ---
|
|
|
|
|
|
void * __thiscall FUN_005fe6a0(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_005fdc85();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fe6c1 at 0x005FE6C1 (size: 1916) ---
|
|
|
|
|
|
int * FUN_005fe6c1(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
iVar1 = *(int *)(param_1 + 4);
|
|
|
|
if (iVar1 < 0x31545845) {
|
|
|
|
if (iVar1 == 0x31545844) {
|
|
|
|
iVar1 = FUN_005df0f5(0x100);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fe683(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 < 0x33) {
|
|
|
|
if (iVar1 == 0x32) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005faf9c(param_1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
switch(iVar1) {
|
|
|
|
case 0x14:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
LAB_005fee04:
|
|
|
|
piVar2 = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar2 = (int *)FUN_005fa30b(param_1);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 0x15:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fa32c(param_1);
|
|
|
|
break;
|
|
|
|
case 0x16:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fa34d(param_1);
|
|
|
|
break;
|
|
|
|
case 0x17:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fa71a(param_1);
|
|
|
|
break;
|
|
|
|
case 0x18:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fa73b(param_1);
|
|
|
|
break;
|
|
|
|
case 0x19:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fa75c(param_1);
|
|
|
|
break;
|
|
|
|
case 0x1a:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fa77d(param_1);
|
|
|
|
break;
|
|
|
|
case 0x1b:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fa7bf(param_1);
|
|
|
|
break;
|
|
|
|
case 0x1c:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fa7e0(param_1);
|
|
|
|
break;
|
|
|
|
case 0x1d:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fa801(param_1);
|
|
|
|
break;
|
|
|
|
case 0x1e:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005faa99(param_1);
|
|
|
|
break;
|
|
|
|
case 0x1f:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005faaba(param_1);
|
|
|
|
break;
|
|
|
|
case 0x20:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005faadb(param_1);
|
|
|
|
break;
|
|
|
|
case 0x21:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005faafc(param_1);
|
|
|
|
break;
|
|
|
|
case 0x22:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fab1d(param_1);
|
|
|
|
break;
|
|
|
|
case 0x23:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fab3e(param_1);
|
|
|
|
break;
|
|
|
|
case 0x24:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fab5f(param_1);
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
goto LAB_005fee37;
|
|
|
|
case 0x28:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fab80(param_1);
|
|
|
|
break;
|
|
|
|
case 0x29:
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005faf7b(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar1 < 0x52) {
|
|
|
|
if (iVar1 == 0x51) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fafff(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 < 0x3f) {
|
|
|
|
if (iVar1 == 0x3e) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb437(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x33) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fafbd(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x34) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fafde(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x3c) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb020(param_1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar1 != 0x3d) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb041(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x3f) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb458(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x40) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb479(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x43) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb49a(param_1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar1 != 0x46) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fafff(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar1 < 0x72) {
|
|
|
|
if (iVar1 == 0x71) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb7af(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x52) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb7d0(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x6e) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb4bb(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x6f) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb76d(param_1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar1 != 0x70) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb78e(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x72) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb7d0(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x73) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb7f1(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x74) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb812(param_1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar1 != 0x75) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fb4dc(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar1 < 0x36314c42) {
|
|
|
|
if (iVar1 == 0x36314c41) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fba27(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x32545844) {
|
|
|
|
iVar1 = FUN_005df0f5(0x100);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fe683(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x32595559) {
|
|
|
|
iVar1 = FUN_005df0f5(0xb0);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fe666(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x33545844) {
|
|
|
|
iVar1 = FUN_005df0f5(0x100);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fe683(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x34545844) {
|
|
|
|
iVar1 = FUN_005df0f5(0x100);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fe683(param_1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar1 != 0x35545844) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_005df0f5(0x100);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fe683(param_1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x36315220) {
|
|
|
|
iVar1 = FUN_005df0f5(0x80);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fba48(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x42475247) {
|
|
|
|
iVar1 = FUN_005df0f5(0xb0);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fe666(param_1);
|
|
|
|
}
|
|
|
|
else if (iVar1 == 0x47424752) {
|
|
|
|
iVar1 = FUN_005df0f5(0xb0);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fe666(param_1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar1 != 0x59565955) {
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
iVar1 = FUN_005df0f5(0xb0);
|
|
|
|
if (iVar1 == 0) goto LAB_005fee04;
|
|
|
|
piVar2 = (int *)FUN_005fe666(param_1);
|
|
|
|
}
|
|
|
|
if (piVar2 != (int *)0x0) {
|
|
|
|
if ((piVar2[7] == 0) || (iVar1 = FUN_005f53de(param_1), -1 < iVar1)) {
|
|
|
|
if (piVar2[6] != 0) {
|
|
|
|
(**(code **)(*piVar2 + 0xc))();
|
|
|
|
return piVar2;
|
|
|
|
}
|
|
|
|
return piVar2;
|
|
|
|
}
|
|
|
|
(**(code **)*piVar2)(1);
|
|
|
|
}
|
|
|
|
LAB_005fee37:
|
|
|
|
return (int *)0x0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fee95 at 0x005FEE95 (size: 2) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_005fee95(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4,uint param_5,
|
|
|
|
uint param_6,float *param_7,int *param_8,char *param_9,float param_10,
|
|
|
|
float *param_11)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
byte bVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
int iVar5;
|
|
|
|
int *piVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
float *pfVar9;
|
|
|
|
float fVar10;
|
|
|
|
undefined4 *puVar11;
|
|
|
|
undefined4 *puVar12;
|
|
|
|
float afStack_33c [195];
|
|
|
|
uint uStack_30;
|
|
|
|
uint uStack_2c;
|
|
|
|
float fStack_28;
|
|
|
|
float fStack_24;
|
|
|
|
float fStack_20;
|
|
|
|
float fStack_1c;
|
|
|
|
float fStack_18;
|
|
|
|
float fStack_14;
|
|
|
|
float fStack_10;
|
|
|
|
float *pfStack_c;
|
|
|
|
float fStack_8;
|
|
|
|
|
|
|
|
uStack_30 = (int)param_10 * 0xc;
|
|
|
|
uStack_2c = (uint)((int)param_10 * 0xc != param_6);
|
|
|
|
if (param_2 == 0) {
|
|
|
|
param_2 = param_1;
|
|
|
|
}
|
|
|
|
if (param_10 == 2.8026e-45) {
|
|
|
|
if ((*param_9 == '\0') && (param_9[1] == '\x03')) {
|
|
|
|
fStack_1c = *param_7;
|
|
|
|
fStack_8 = param_7[1];
|
|
|
|
pfStack_c = (float *)param_8[1];
|
|
|
|
pfVar9 = (float *)*param_8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((param_9[1] != '\0') || (*param_9 != '\x03')) goto LAB_005ff084;
|
|
|
|
fStack_1c = param_7[1];
|
|
|
|
fStack_8 = *param_7;
|
|
|
|
pfVar9 = (float *)param_8[1];
|
|
|
|
pfStack_c = (float *)*param_8;
|
|
|
|
}
|
|
|
|
if (fStack_1c != 0.0) {
|
|
|
|
if (param_5 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
param_7 = (float *)param_5;
|
|
|
|
do {
|
|
|
|
if (uStack_2c != 0) {
|
|
|
|
puVar2 = (undefined4 *)((int)param_4 + param_6);
|
|
|
|
puVar11 = param_3;
|
|
|
|
for (uVar7 = param_6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*param_4 = *puVar11;
|
|
|
|
puVar11 = puVar11 + 1;
|
|
|
|
param_4 = param_4 + 1;
|
|
|
|
}
|
|
|
|
param_3 = (undefined4 *)((int)param_3 + param_6);
|
|
|
|
puVar12 = param_4;
|
|
|
|
for (uVar7 = param_6 & 3; param_4 = puVar2, uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*(undefined1 *)puVar12 = *(undefined1 *)puVar11;
|
|
|
|
puVar11 = (undefined4 *)((int)puVar11 + 1);
|
|
|
|
puVar12 = (undefined4 *)((int)puVar12 + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar9 = 0.0;
|
|
|
|
pfVar9[1] = 0.0;
|
|
|
|
pfVar9[2] = 0.0;
|
|
|
|
*pfStack_c = 0.0;
|
|
|
|
pfStack_c[1] = 0.0;
|
|
|
|
pfStack_c[2] = 0.0;
|
|
|
|
if (DAT_00796344 <= *param_11) {
|
|
|
|
do {
|
|
|
|
uVar7 = FUN_005df4c4();
|
|
|
|
iVar5 = (uVar7 >> 1) * 2;
|
|
|
|
fVar10 = (float)iVar5;
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
fVar10 = fVar10 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar10 = *param_11 - fVar10;
|
|
|
|
iVar5 = (uVar7 >> 1) * 0x40;
|
|
|
|
thunk_FUN_005e09a5(&fStack_18,fStack_1c,param_1 + iVar5);
|
|
|
|
thunk_FUN_005e09d7(&fStack_28,fStack_8,iVar5 + param_2);
|
|
|
|
fStack_18 = fStack_18 * fVar10;
|
|
|
|
param_11 = param_11 + 1;
|
|
|
|
fStack_14 = fStack_14 * fVar10;
|
|
|
|
fStack_10 = fStack_10 * fVar10;
|
|
|
|
fStack_28 = fStack_28 * fVar10;
|
|
|
|
fStack_24 = fStack_24 * fVar10;
|
|
|
|
fStack_20 = fStack_20 * fVar10;
|
|
|
|
*pfVar9 = fStack_18 + *pfVar9;
|
|
|
|
pfVar9[1] = fStack_14 + pfVar9[1];
|
|
|
|
pfVar9[2] = fStack_10 + pfVar9[2];
|
|
|
|
*pfStack_c = fStack_28 + *pfStack_c;
|
|
|
|
pfStack_c[1] = fStack_24 + pfStack_c[1];
|
|
|
|
pfStack_c[2] = fStack_20 + pfStack_c[2];
|
|
|
|
} while (DAT_00796344 <= *param_11);
|
|
|
|
}
|
|
|
|
fStack_1c = (float)((int)fStack_1c + param_6);
|
|
|
|
fStack_8 = (float)((int)fStack_8 + param_6);
|
|
|
|
pfStack_c = (float *)((int)pfStack_c + param_6);
|
|
|
|
param_11 = param_11 + 1;
|
|
|
|
pfVar9 = (float *)((int)pfVar9 + param_6);
|
|
|
|
param_7 = (float *)((int)param_7 - 1);
|
|
|
|
} while (param_7 != (float *)0x0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_005ff084:
|
|
|
|
pfStack_c = (float *)0x0;
|
|
|
|
if (param_5 != 0) {
|
|
|
|
do {
|
|
|
|
uVar7 = uStack_30;
|
|
|
|
pfVar9 = afStack_33c;
|
|
|
|
for (uVar8 = uStack_30 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {
|
|
|
|
*pfVar9 = 0.0;
|
|
|
|
pfVar9 = pfVar9 + 1;
|
|
|
|
}
|
|
|
|
for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*(undefined1 *)pfVar9 = 0;
|
|
|
|
pfVar9 = (float *)((int)pfVar9 + 1);
|
|
|
|
}
|
|
|
|
for (; DAT_00796344 <= *param_11; param_11 = param_11 + 1) {
|
|
|
|
uVar7 = FUN_005df4c4();
|
|
|
|
uVar7 = uVar7 >> 1;
|
|
|
|
fStack_8 = (float)(int)(uVar7 * 2);
|
|
|
|
if ((int)(uVar7 * 2) < 0) {
|
|
|
|
fStack_8 = fStack_8 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fStack_8 = *param_11 - fStack_8;
|
|
|
|
fVar10 = 0.0;
|
|
|
|
if (param_10 != 0.0) {
|
|
|
|
pfVar9 = afStack_33c + 2;
|
|
|
|
do {
|
|
|
|
bVar3 = param_9[(int)fVar10];
|
|
|
|
if (bVar3 == 0) {
|
|
|
|
thunk_FUN_005e09a5(&fStack_18,param_7[(int)fVar10],uVar7 * 0x40 + param_1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (bVar3 == 3) {
|
|
|
|
iVar5 = uVar7 * 0x40 + param_2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (bVar3 < 6) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (7 < bVar3) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar5 = uVar7 * 0x40 + param_1;
|
|
|
|
}
|
|
|
|
thunk_FUN_005e09d7(&fStack_18,param_7[(int)fVar10],iVar5);
|
|
|
|
}
|
|
|
|
fVar10 = (float)((int)fVar10 + 1);
|
|
|
|
fStack_18 = fStack_18 * fStack_8;
|
|
|
|
fStack_14 = fStack_14 * fStack_8;
|
|
|
|
fStack_10 = fStack_10 * fStack_8;
|
|
|
|
pfVar9[-2] = fStack_18 + pfVar9[-2];
|
|
|
|
pfVar9[-1] = fStack_14 + pfVar9[-1];
|
|
|
|
*pfVar9 = fStack_10 + *pfVar9;
|
|
|
|
pfVar9 = pfVar9 + 3;
|
|
|
|
} while ((uint)fVar10 < (uint)param_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (uStack_2c != 0) {
|
|
|
|
puVar2 = (undefined4 *)((int)param_4 + param_6);
|
|
|
|
puVar11 = param_3;
|
|
|
|
for (uVar7 = param_6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*param_4 = *puVar11;
|
|
|
|
puVar11 = puVar11 + 1;
|
|
|
|
param_4 = param_4 + 1;
|
|
|
|
}
|
|
|
|
param_3 = (undefined4 *)((int)param_3 + param_6);
|
|
|
|
puVar12 = param_4;
|
|
|
|
for (uVar7 = param_6 & 3; param_4 = puVar2, uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*(undefined1 *)puVar12 = *(undefined1 *)puVar11;
|
|
|
|
puVar11 = (undefined4 *)((int)puVar11 + 1);
|
|
|
|
puVar12 = (undefined4 *)((int)puVar12 + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_10 != 0.0) {
|
|
|
|
pfVar9 = afStack_33c;
|
|
|
|
fStack_8 = param_10;
|
|
|
|
piVar6 = param_8;
|
|
|
|
do {
|
|
|
|
pfVar4 = (float *)*piVar6;
|
|
|
|
*pfVar4 = *pfVar9;
|
|
|
|
pfVar4[1] = pfVar9[1];
|
|
|
|
pfVar4[2] = pfVar9[2];
|
|
|
|
*piVar6 = *piVar6 + param_6;
|
|
|
|
piVar1 = (int *)(((int)param_7 - (int)param_8) + (int)piVar6);
|
|
|
|
*piVar1 = *piVar1 + param_6;
|
|
|
|
pfVar9 = pfVar9 + 3;
|
|
|
|
piVar6 = piVar6 + 1;
|
|
|
|
fStack_8 = (float)((int)fStack_8 + -1);
|
|
|
|
} while (fStack_8 != 0.0);
|
|
|
|
}
|
|
|
|
param_11 = param_11 + 1;
|
|
|
|
pfStack_c = (float *)((int)pfStack_c + 1);
|
|
|
|
} while (pfStack_c < param_5);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005fee97 at 0x005FEE97 (size: 888) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_005fee97(int param_1,int param_2,undefined4 *param_3,undefined4 *param_4,uint param_5,
|
|
|
|
uint param_6,float *param_7,int *param_8,char *param_9,float param_10,
|
|
|
|
float *param_11)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
byte bVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
int iVar5;
|
|
|
|
int *piVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
float *pfVar9;
|
|
|
|
float fVar10;
|
|
|
|
undefined4 *puVar11;
|
|
|
|
undefined4 *puVar12;
|
|
|
|
float local_33c [195];
|
|
|
|
uint local_30;
|
|
|
|
uint local_2c;
|
|
|
|
float local_28;
|
|
|
|
float local_24;
|
|
|
|
float local_20;
|
|
|
|
float local_1c;
|
|
|
|
float local_18;
|
|
|
|
float local_14;
|
|
|
|
float local_10;
|
|
|
|
float *local_c;
|
|
|
|
float local_8;
|
|
|
|
|
|
|
|
local_30 = (int)param_10 * 0xc;
|
|
|
|
local_2c = (uint)((int)param_10 * 0xc != param_6);
|
|
|
|
if (param_2 == 0) {
|
|
|
|
param_2 = param_1;
|
|
|
|
}
|
|
|
|
if (param_10 == 2.8026e-45) {
|
|
|
|
if ((*param_9 == '\0') && (param_9[1] == '\x03')) {
|
|
|
|
local_1c = *param_7;
|
|
|
|
local_8 = param_7[1];
|
|
|
|
local_c = (float *)param_8[1];
|
|
|
|
pfVar9 = (float *)*param_8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((param_9[1] != '\0') || (*param_9 != '\x03')) goto LAB_005ff084;
|
|
|
|
local_1c = param_7[1];
|
|
|
|
local_8 = *param_7;
|
|
|
|
pfVar9 = (float *)param_8[1];
|
|
|
|
local_c = (float *)*param_8;
|
|
|
|
}
|
|
|
|
if (local_1c != 0.0) {
|
|
|
|
if (param_5 == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
param_7 = (float *)param_5;
|
|
|
|
do {
|
|
|
|
if (local_2c != 0) {
|
|
|
|
puVar2 = (undefined4 *)((int)param_4 + param_6);
|
|
|
|
puVar11 = param_3;
|
|
|
|
for (uVar7 = param_6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*param_4 = *puVar11;
|
|
|
|
puVar11 = puVar11 + 1;
|
|
|
|
param_4 = param_4 + 1;
|
|
|
|
}
|
|
|
|
param_3 = (undefined4 *)((int)param_3 + param_6);
|
|
|
|
puVar12 = param_4;
|
|
|
|
for (uVar7 = param_6 & 3; param_4 = puVar2, uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*(undefined1 *)puVar12 = *(undefined1 *)puVar11;
|
|
|
|
puVar11 = (undefined4 *)((int)puVar11 + 1);
|
|
|
|
puVar12 = (undefined4 *)((int)puVar12 + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*pfVar9 = 0.0;
|
|
|
|
pfVar9[1] = 0.0;
|
|
|
|
pfVar9[2] = 0.0;
|
|
|
|
*local_c = 0.0;
|
|
|
|
local_c[1] = 0.0;
|
|
|
|
local_c[2] = 0.0;
|
|
|
|
if (DAT_00796344 <= *param_11) {
|
|
|
|
do {
|
|
|
|
uVar7 = FUN_005df4c4();
|
|
|
|
iVar5 = (uVar7 >> 1) * 2;
|
|
|
|
fVar10 = (float)iVar5;
|
|
|
|
if (iVar5 < 0) {
|
|
|
|
fVar10 = fVar10 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar10 = *param_11 - fVar10;
|
|
|
|
iVar5 = (uVar7 >> 1) * 0x40;
|
|
|
|
thunk_FUN_005e09a5(&local_18,local_1c,param_1 + iVar5);
|
|
|
|
thunk_FUN_005e09d7(&local_28,local_8,iVar5 + param_2);
|
|
|
|
local_18 = local_18 * fVar10;
|
|
|
|
param_11 = param_11 + 1;
|
|
|
|
local_14 = local_14 * fVar10;
|
|
|
|
local_10 = local_10 * fVar10;
|
|
|
|
local_28 = local_28 * fVar10;
|
|
|
|
local_24 = local_24 * fVar10;
|
|
|
|
local_20 = local_20 * fVar10;
|
|
|
|
*pfVar9 = local_18 + *pfVar9;
|
|
|
|
pfVar9[1] = local_14 + pfVar9[1];
|
|
|
|
pfVar9[2] = local_10 + pfVar9[2];
|
|
|
|
*local_c = local_28 + *local_c;
|
|
|
|
local_c[1] = local_24 + local_c[1];
|
|
|
|
local_c[2] = local_20 + local_c[2];
|
|
|
|
} while (DAT_00796344 <= *param_11);
|
|
|
|
}
|
|
|
|
local_1c = (float)((int)local_1c + param_6);
|
|
|
|
local_8 = (float)((int)local_8 + param_6);
|
|
|
|
local_c = (float *)((int)local_c + param_6);
|
|
|
|
param_11 = param_11 + 1;
|
|
|
|
pfVar9 = (float *)((int)pfVar9 + param_6);
|
|
|
|
param_7 = (float *)((int)param_7 - 1);
|
|
|
|
} while (param_7 != (float *)0x0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
LAB_005ff084:
|
|
|
|
local_c = (float *)0x0;
|
|
|
|
if (param_5 != 0) {
|
|
|
|
do {
|
|
|
|
uVar7 = local_30;
|
|
|
|
pfVar9 = local_33c;
|
|
|
|
for (uVar8 = local_30 >> 2; uVar8 != 0; uVar8 = uVar8 - 1) {
|
|
|
|
*pfVar9 = 0.0;
|
|
|
|
pfVar9 = pfVar9 + 1;
|
|
|
|
}
|
|
|
|
for (uVar7 = uVar7 & 3; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*(undefined1 *)pfVar9 = 0;
|
|
|
|
pfVar9 = (float *)((int)pfVar9 + 1);
|
|
|
|
}
|
|
|
|
for (; DAT_00796344 <= *param_11; param_11 = param_11 + 1) {
|
|
|
|
uVar7 = FUN_005df4c4();
|
|
|
|
uVar7 = uVar7 >> 1;
|
|
|
|
local_8 = (float)(int)(uVar7 * 2);
|
|
|
|
if ((int)(uVar7 * 2) < 0) {
|
|
|
|
local_8 = local_8 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
local_8 = *param_11 - local_8;
|
|
|
|
fVar10 = 0.0;
|
|
|
|
if (param_10 != 0.0) {
|
|
|
|
pfVar9 = local_33c + 2;
|
|
|
|
do {
|
|
|
|
bVar3 = param_9[(int)fVar10];
|
|
|
|
if (bVar3 == 0) {
|
|
|
|
thunk_FUN_005e09a5(&local_18,param_7[(int)fVar10],uVar7 * 0x40 + param_1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (bVar3 == 3) {
|
|
|
|
iVar5 = uVar7 * 0x40 + param_2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (bVar3 < 6) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (7 < bVar3) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar5 = uVar7 * 0x40 + param_1;
|
|
|
|
}
|
|
|
|
thunk_FUN_005e09d7(&local_18,param_7[(int)fVar10],iVar5);
|
|
|
|
}
|
|
|
|
fVar10 = (float)((int)fVar10 + 1);
|
|
|
|
local_18 = local_18 * local_8;
|
|
|
|
local_14 = local_14 * local_8;
|
|
|
|
local_10 = local_10 * local_8;
|
|
|
|
pfVar9[-2] = local_18 + pfVar9[-2];
|
|
|
|
pfVar9[-1] = local_14 + pfVar9[-1];
|
|
|
|
*pfVar9 = local_10 + *pfVar9;
|
|
|
|
pfVar9 = pfVar9 + 3;
|
|
|
|
} while ((uint)fVar10 < (uint)param_10);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (local_2c != 0) {
|
|
|
|
puVar2 = (undefined4 *)((int)param_4 + param_6);
|
|
|
|
puVar11 = param_3;
|
|
|
|
for (uVar7 = param_6 >> 2; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*param_4 = *puVar11;
|
|
|
|
puVar11 = puVar11 + 1;
|
|
|
|
param_4 = param_4 + 1;
|
|
|
|
}
|
|
|
|
param_3 = (undefined4 *)((int)param_3 + param_6);
|
|
|
|
puVar12 = param_4;
|
|
|
|
for (uVar7 = param_6 & 3; param_4 = puVar2, uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*(undefined1 *)puVar12 = *(undefined1 *)puVar11;
|
|
|
|
puVar11 = (undefined4 *)((int)puVar11 + 1);
|
|
|
|
puVar12 = (undefined4 *)((int)puVar12 + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_10 != 0.0) {
|
|
|
|
pfVar9 = local_33c;
|
|
|
|
local_8 = param_10;
|
|
|
|
piVar6 = param_8;
|
|
|
|
do {
|
|
|
|
pfVar4 = (float *)*piVar6;
|
|
|
|
*pfVar4 = *pfVar9;
|
|
|
|
pfVar4[1] = pfVar9[1];
|
|
|
|
pfVar4[2] = pfVar9[2];
|
|
|
|
*piVar6 = *piVar6 + param_6;
|
|
|
|
piVar1 = (int *)(((int)param_7 - (int)param_8) + (int)piVar6);
|
|
|
|
*piVar1 = *piVar1 + param_6;
|
|
|
|
pfVar9 = pfVar9 + 3;
|
|
|
|
piVar6 = piVar6 + 1;
|
|
|
|
local_8 = (float)((int)local_8 + -1);
|
|
|
|
} while (local_8 != 0.0);
|
|
|
|
}
|
|
|
|
param_11 = param_11 + 1;
|
|
|
|
local_c = (float *)((int)local_c + 1);
|
|
|
|
} while (local_c < param_5);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff20f at 0x005FF20F (size: 159) ---
|
|
|
|
|
|
void FUN_005ff20f(float *param_1,float *param_2,float *param_3,float param_4,float *param_5)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
|
|
|
|
*param_5 = *param_1;
|
|
|
|
param_5[1] = param_1[1];
|
|
|
|
param_5[2] = param_1[2];
|
|
|
|
*param_5 = *param_5 - *param_2;
|
|
|
|
param_5[1] = param_5[1] - param_2[1];
|
|
|
|
fVar3 = param_5[2] - param_2[2];
|
|
|
|
param_5[2] = fVar3;
|
|
|
|
fVar4 = param_5[1] * param_3[1] + *param_3 * *param_5 + fVar3 * param_3[2];
|
|
|
|
fVar1 = *param_3;
|
|
|
|
fVar2 = param_3[1];
|
|
|
|
param_5[2] = fVar3 - fVar4 * param_3[2];
|
|
|
|
fVar1 = (*param_5 - fVar4 * fVar1) * param_4;
|
|
|
|
*param_5 = fVar1;
|
|
|
|
fVar2 = (param_5[1] - fVar4 * fVar2) * param_4;
|
|
|
|
param_5[1] = fVar2;
|
|
|
|
param_5[2] = param_4 * param_5[2];
|
|
|
|
*param_5 = fVar1 + *param_2;
|
|
|
|
param_5[1] = fVar2 + param_2[1];
|
|
|
|
param_5[2] = param_2[2] + param_5[2];
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff2ae at 0x005FF2AE (size: 857) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_005ff2ae(uint param_1,int param_2,uint param_3,float *param_4,float *param_5,float *param_6
|
|
|
|
,float *param_7,uint param_8)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float *pfVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
float *pfVar9;
|
|
|
|
float local_1cc [68];
|
|
|
|
float local_bc [10];
|
|
|
|
float local_94;
|
|
|
|
float local_8c;
|
|
|
|
float local_84;
|
|
|
|
float local_80;
|
|
|
|
float local_7c;
|
|
|
|
float local_78;
|
|
|
|
float local_74;
|
|
|
|
float local_70;
|
|
|
|
float fStack_6c;
|
|
|
|
float fStack_68;
|
|
|
|
float local_64;
|
|
|
|
float local_60;
|
|
|
|
float local_5c;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
float local_48;
|
|
|
|
float local_44;
|
|
|
|
float local_40;
|
|
|
|
float local_3c;
|
|
|
|
float local_38;
|
|
|
|
float local_34;
|
|
|
|
float local_30;
|
|
|
|
float local_2c;
|
|
|
|
float local_28;
|
|
|
|
float local_24;
|
|
|
|
float local_20;
|
|
|
|
float local_1c;
|
|
|
|
float local_18;
|
|
|
|
float local_14;
|
|
|
|
float local_10;
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
|
|
|
|
local_7c = *param_5;
|
|
|
|
local_78 = param_5[1];
|
|
|
|
local_74 = param_5[2];
|
|
|
|
local_34 = *param_6;
|
|
|
|
local_30 = param_6[1];
|
|
|
|
local_2c = param_6[2];
|
|
|
|
local_10 = *param_7;
|
|
|
|
local_c = param_7[1];
|
|
|
|
local_8 = param_7[2];
|
|
|
|
FUN_005ff20f(&local_34,&local_7c,param_1,_DAT_007e75f0,&local_70);
|
|
|
|
FUN_005ff20f(&local_10,&local_7c,param_1,_DAT_007e75f0,&local_64);
|
|
|
|
FUN_005ff20f(&local_7c,&local_34,param_1 + 0xc,_DAT_007e75f0,&local_58);
|
|
|
|
FUN_005ff20f(&local_7c,&local_10,param_1 + 0x18,_DAT_007e75f0,&local_40);
|
|
|
|
FUN_005ff20f(&local_10,&local_34,param_1 + 0xc,_DAT_007e75f0,&local_28);
|
|
|
|
FUN_005ff20f(&local_34,&local_10,param_1 + 0x18,_DAT_007e75f0,&local_1c);
|
|
|
|
fVar5 = _DAT_007938bc;
|
|
|
|
local_94 = local_10 + local_34 + local_7c;
|
|
|
|
local_8c = local_8 + local_2c + local_74;
|
|
|
|
param_1 = 0;
|
|
|
|
local_84 = (local_c + local_30 + local_78) * _DAT_007f13bc;
|
|
|
|
local_80 = local_8c * _DAT_007f13bc;
|
|
|
|
local_4c = (local_1c + local_28 + local_40 + local_58 + local_64 + local_70) * _DAT_007c97cc -
|
|
|
|
local_94 * _DAT_007f13bc;
|
|
|
|
local_48 = (local_18 + local_24 + local_3c + local_54 + local_60 + fStack_6c) * _DAT_007c97cc -
|
|
|
|
local_84;
|
|
|
|
local_44 = (local_14 + local_20 + local_38 + local_50 + local_5c + fStack_68) * _DAT_007c97cc -
|
|
|
|
local_80;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
do {
|
|
|
|
fVar1 = *(float *)(param_1 * 8 + param_2);
|
|
|
|
uVar7 = 0;
|
|
|
|
fVar2 = *(float *)(param_1 * 8 + 4 + param_2);
|
|
|
|
fVar3 = (1.0 - fVar1) - fVar2;
|
|
|
|
local_bc[0] = fVar2 * fVar2 * fVar2;
|
|
|
|
local_bc[1] = fVar3 * fVar2 * fVar2 * fVar5;
|
|
|
|
local_bc[2] = fVar2 * fVar2 * fVar1 * fVar5;
|
|
|
|
fVar4 = fVar3 * fVar3;
|
|
|
|
local_bc[3] = fVar4 * fVar2 * fVar5;
|
|
|
|
local_bc[4] = fVar3 * fVar2 * fVar1 * _DAT_007d07fc;
|
|
|
|
local_bc[5] = fVar2 * fVar1 * fVar1 * fVar5;
|
|
|
|
local_bc[6] = fVar4 * fVar3;
|
|
|
|
local_bc[7] = fVar4 * fVar1 * fVar5;
|
|
|
|
local_bc[8] = fVar3 * fVar1 * fVar1 * fVar5;
|
|
|
|
local_bc[9] = fVar1 * fVar1 * fVar1;
|
|
|
|
local_1cc[0] = 0.0;
|
|
|
|
local_1cc[1] = 0.0;
|
|
|
|
local_1cc[2] = 0.0;
|
|
|
|
pfVar6 = &local_78;
|
|
|
|
do {
|
|
|
|
pfVar9 = local_bc + uVar7;
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
local_1cc[0] = pfVar6[-1] * *pfVar9 + local_1cc[0];
|
|
|
|
local_1cc[1] = *pfVar9 * *pfVar6 + local_1cc[1];
|
|
|
|
local_1cc[2] = pfVar6[1] * *pfVar9 + local_1cc[2];
|
|
|
|
pfVar6 = pfVar6 + 3;
|
|
|
|
} while (uVar7 < 10);
|
|
|
|
if (3 < param_8) {
|
|
|
|
pfVar6 = param_6 + 3;
|
|
|
|
iVar8 = param_8 - 3;
|
|
|
|
do {
|
|
|
|
*(float *)(((int)local_1cc - (int)param_6) + (int)pfVar6) =
|
|
|
|
fVar3 * *pfVar6 +
|
|
|
|
fVar2 * *(float *)(((int)param_5 - (int)param_6) + (int)pfVar6) +
|
|
|
|
fVar1 * *(float *)(((int)param_7 - (int)param_6) + (int)pfVar6);
|
|
|
|
pfVar6 = pfVar6 + 1;
|
|
|
|
iVar8 = iVar8 + -1;
|
|
|
|
} while (iVar8 != 0);
|
|
|
|
}
|
|
|
|
pfVar6 = local_1cc;
|
|
|
|
pfVar9 = param_4;
|
|
|
|
for (uVar7 = param_8 & 0x3fffffff; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*pfVar9 = *pfVar6;
|
|
|
|
pfVar6 = pfVar6 + 1;
|
|
|
|
pfVar9 = pfVar9 + 1;
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 1;
|
|
|
|
for (iVar8 = 0; iVar8 != 0; iVar8 = iVar8 + -1) {
|
|
|
|
*(undefined1 *)pfVar9 = *(undefined1 *)pfVar6;
|
|
|
|
pfVar6 = (float *)((int)pfVar6 + 1);
|
|
|
|
pfVar9 = (float *)((int)pfVar9 + 1);
|
|
|
|
}
|
|
|
|
param_4 = param_4 + param_8;
|
|
|
|
} while (param_1 < param_3);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff607 at 0x005FF607 (size: 95) ---
|
|
|
|
|
|
undefined4 FUN_005ff607(LPBYTE param_1,LPCSTR param_2,LPBYTE param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
LSTATUS LVar1;
|
|
|
|
HKEY local_8;
|
|
|
|
|
|
|
|
local_8 = (HKEY)0x0;
|
|
|
|
LVar1 = RegOpenKeyA((HKEY)0x80000002,"Software\\Microsoft\\Direct3D",&local_8);
|
|
|
|
if (LVar1 == 0) {
|
|
|
|
LVar1 = RegQueryValueExA(local_8,param_2,(LPDWORD)0x0,(LPDWORD)¶m_3,param_3,
|
|
|
|
(LPDWORD)&stack0x00000010);
|
|
|
|
RegCloseKey(local_8);
|
|
|
|
if ((LVar1 == 0) && (param_3 == param_1)) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff666 at 0x005FF666 (size: 40) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005ff677) */
|
|
|
|
/* WARNING: Restarted to delay deadcode elimination for space: stack */
|
|
|
|
|
|
|
|
undefined8 __fastcall FUN_005ff666(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = cpuid_Version_info(1);
|
|
|
|
return CONCAT44(param_2,(uint)((*(uint *)(iVar1 + 8) & 0x800000) != 0));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff68e at 0x005FF68E (size: 178) ---
|
|
|
|
|
|
int FUN_005ff68e(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
LSTATUS LVar1;
|
|
|
|
int iVar2;
|
|
|
|
_union_530 local_38 [8];
|
|
|
|
ushort local_18;
|
|
|
|
int local_14;
|
|
|
|
DWORD local_10 [2];
|
|
|
|
HKEY local_8;
|
|
|
|
|
|
|
|
LVar1 = RegOpenKeyA((HKEY)0x80000002,"Software\\Microsoft\\Direct3D",&local_8);
|
|
|
|
if (LVar1 == 0) {
|
|
|
|
local_10[1] = 4;
|
|
|
|
LVar1 = RegQueryValueExA(local_8,"DisableMMX",(LPDWORD)0x0,local_10,(LPBYTE)&local_14,
|
|
|
|
local_10 + 1);
|
|
|
|
if (((LVar1 == 0) && (local_10[0] == 4)) && (local_14 != 0)) {
|
|
|
|
RegCloseKey(local_8);
|
|
|
|
DAT_00825d78 = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
RegCloseKey(local_8);
|
|
|
|
}
|
|
|
|
if (DAT_00825d78 < 0) {
|
|
|
|
DAT_00825d78 = 0;
|
|
|
|
GetSystemInfo((LPSYSTEM_INFO)&local_38[0].s);
|
|
|
|
if (((local_38[0].s.wProcessorArchitecture == 0) && (4 < local_18)) &&
|
|
|
|
(iVar2 = FUN_005ff666(), iVar2 != 0)) {
|
|
|
|
DAT_00825d78 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return DAT_00825d78;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff740 at 0x005FF740 (size: 66) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005ff772) */
|
|
|
|
|
|
|
|
void FUN_005ff740(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined4 uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
int unaff_EBP;
|
|
|
|
|
|
|
|
FUN_006b8bd4();
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x18) = DAT_00836f40;
|
|
|
|
*(undefined1 **)(unaff_EBP + -0x10) = &stack0xffffffc0;
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x14) = 0;
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x28) = s_GenuineIntel_007f13cc._0_4_;
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x24) = s_GenuineIntel_007f13cc._4_4_;
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x20) = s_GenuineIntel_007f13cc._8_4_;
|
|
|
|
*(char *)(unaff_EBP + -0x1c) = s_GenuineIntel_007f13cc[0xc];
|
|
|
|
*(undefined4 *)(unaff_EBP + -4) = 0;
|
|
|
|
puVar1 = (undefined4 *)cpuid_basic_info(0);
|
|
|
|
uVar4 = puVar1[1];
|
|
|
|
uVar3 = puVar1[2];
|
|
|
|
uVar2 = puVar1[3];
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x30) = *puVar1;
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x3c) = uVar4;
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x38) = uVar3;
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x34) = uVar2;
|
|
|
|
FUN_005ff78e();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- Catch@005ff782 at 0x005FF782 (size: 12) ---
|
|
|
|
|
|
undefined * Catch_005ff782(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int unaff_EBP;
|
|
|
|
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x40) = *(undefined4 *)(unaff_EBP + -0x14);
|
|
|
|
return &DAT_005ff794;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff78e at 0x005FF78E (size: 94) ---
|
|
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005ff7a9) */
|
|
|
|
|
|
|
|
undefined4 FUN_005ff78e(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 *puVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
int unaff_EBP;
|
|
|
|
|
|
|
|
*(undefined4 *)(unaff_EBP + -4) = 0xffffffff;
|
|
|
|
if (*(int *)(unaff_EBP + -0x30) == 0) {
|
|
|
|
uVar2 = *(undefined4 *)(unaff_EBP + -0x14);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
puVar1 = (undefined4 *)cpuid_Version_info(1);
|
|
|
|
uVar2 = puVar1[2];
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x30) = *puVar1;
|
|
|
|
*(undefined4 *)(unaff_EBP + -0x2c) = uVar2;
|
|
|
|
if ((*(uint *)(unaff_EBP + -0x2c) & 0x2000000) != 0) {
|
|
|
|
*(uint *)(unaff_EBP + -0x14) = *(uint *)(unaff_EBP + -0x14) | 4;
|
|
|
|
}
|
|
|
|
if ((*(uint *)(unaff_EBP + -0x2c) & 0x4000000) != 0) {
|
|
|
|
*(uint *)(unaff_EBP + -0x14) = *(uint *)(unaff_EBP + -0x14) | 8;
|
|
|
|
}
|
|
|
|
uVar2 = *(undefined4 *)(unaff_EBP + -0x14);
|
|
|
|
}
|
|
|
|
ExceptionList = *(void **)(unaff_EBP + -0xc);
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff7f1 at 0x005FF7F1 (size: 259) ---
|
|
|
|
|
|
int FUN_005ff7f1(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
BOOL BVar1;
|
|
|
|
uint uVar2;
|
|
|
|
int iVar3;
|
|
|
|
undefined **ppuVar4;
|
|
|
|
undefined **ppuVar5;
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
FUN_005efc68();
|
|
|
|
if (param_1 == 0) {
|
|
|
|
DAT_00825d7c = 0xffff;
|
|
|
|
ppuVar4 = &PTR_FUN_00825310;
|
|
|
|
ppuVar5 = &PTR_FUN_008251e8;
|
|
|
|
for (iVar3 = 0x4a; iVar3 != 0; iVar3 = iVar3 + -1) {
|
|
|
|
*ppuVar5 = *ppuVar4;
|
|
|
|
ppuVar4 = ppuVar4 + 1;
|
|
|
|
ppuVar5 = ppuVar5 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (DAT_00825d7c == 0xffff) {
|
|
|
|
DAT_00825d7c = 0;
|
|
|
|
ppuVar4 = &PTR_FUN_00825310;
|
|
|
|
ppuVar5 = &PTR_FUN_008251e8;
|
|
|
|
for (iVar3 = 0x4a; iVar3 != 0; iVar3 = iVar3 + -1) {
|
|
|
|
*ppuVar5 = *ppuVar4;
|
|
|
|
ppuVar4 = ppuVar4 + 1;
|
|
|
|
ppuVar5 = ppuVar5 + 1;
|
|
|
|
}
|
|
|
|
FUN_00600850(&PTR_FUN_008251e8);
|
|
|
|
iVar3 = FUN_005ff607(4,"DisablePSGP",¶m_1,4);
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
param_1 = 0;
|
|
|
|
}
|
|
|
|
iVar3 = FUN_005ff607(4,"DisableD3DXPSGP",&local_8,4);
|
|
|
|
if (iVar3 != 0) {
|
|
|
|
param_1 = local_8;
|
|
|
|
}
|
|
|
|
if (param_1 != 1) {
|
|
|
|
if ((param_1 == 2) || (BVar1 = IsProcessorFeaturePresent(7), BVar1 == 0)) {
|
|
|
|
uVar2 = FUN_005ff740();
|
|
|
|
if ((uVar2 & 8) == 0) {
|
|
|
|
BVar1 = IsProcessorFeaturePresent(6);
|
|
|
|
if (BVar1 != 0) {
|
|
|
|
FUN_00602783(&PTR_FUN_008251e8);
|
|
|
|
DAT_00825d7c = 3;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_006028f6(&PTR_FUN_008251e8);
|
|
|
|
DAT_00825d7c = 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_00602b55(&PTR_FUN_008251e8);
|
|
|
|
DAT_00825d7c = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return DAT_00825d7c;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff8f4 at 0x005FF8F4 (size: 19) ---
|
|
|
|
|
|
int __fastcall FUN_005ff8f4(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 *puVar2;
|
|
|
|
|
|
|
|
puVar2 = (undefined4 *)(param_1 + 0x48);
|
|
|
|
for (iVar1 = 0x10; iVar1 != 0; iVar1 = iVar1 + -1) {
|
|
|
|
*puVar2 = 0;
|
|
|
|
puVar2 = puVar2 + 1;
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff907 at 0x005FF907 (size: 29) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005ff907(undefined4 *param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
*param_1 = param_2;
|
|
|
|
uVar1 = FUN_005e537f(param_2);
|
|
|
|
param_1[1] = uVar1;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff924 at 0x005FF924 (size: 46) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_005ff924(undefined4 *param_1,int param_2,undefined4 param_3,int param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
param_1[param_2 + 2] = param_3;
|
|
|
|
if (param_4 == 0) {
|
|
|
|
param_4 = FUN_005e4f99(*param_1,param_2);
|
|
|
|
}
|
|
|
|
param_1[param_2 + 0x12] = param_4;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff952 at 0x005FF952 (size: 35) ---
|
|
|
|
|
|
int __thiscall FUN_005ff952(int param_1,ushort *param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(int *)(param_1 + 0x48 + (uint)*param_2 * 4) * param_3 +
|
|
|
|
*(int *)(param_1 + 8 + (uint)*param_2 * 4) + (uint)param_2[1];
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ff975 at 0x005FF975 (size: 972) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005ffc66) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005ffc4c) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x005ffc84) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_005ff975(int param_1,undefined4 param_2,float *param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float *pfVar3;
|
|
|
|
uint uVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
int iVar7;
|
|
|
|
float local_14 [4];
|
|
|
|
|
|
|
|
if (param_1 == 0) {
|
|
|
|
local_14[0] = 0.0;
|
|
|
|
LAB_005ffd15:
|
|
|
|
local_14[1] = 0.0;
|
|
|
|
LAB_005ffd17:
|
|
|
|
goto LAB_005ffd1a;
|
|
|
|
}
|
|
|
|
pfVar3 = (float *)FUN_005ff952(param_1,param_2);
|
|
|
|
fVar1 = _DAT_00799208;
|
|
|
|
switch(*(undefined1 *)(param_1 + 4)) {
|
|
|
|
case 0:
|
|
|
|
local_14[0] = *pfVar3;
|
|
|
|
goto LAB_005ffd15;
|
|
|
|
case 1:
|
|
|
|
local_14[0] = *pfVar3;
|
|
|
|
local_14[1] = pfVar3[1];
|
|
|
|
goto LAB_005ffd1a;
|
|
|
|
case 2:
|
|
|
|
local_14[0] = *pfVar3;
|
|
|
|
local_14[1] = pfVar3[1];
|
|
|
|
local_14[2] = pfVar3[2];
|
|
|
|
goto LAB_005ffd1f;
|
|
|
|
case 3:
|
|
|
|
local_14[0] = *pfVar3;
|
|
|
|
local_14[1] = pfVar3[1];
|
|
|
|
local_14[2] = pfVar3[2];
|
|
|
|
local_14[3] = pfVar3[3];
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
local_14[0] = (float)*(byte *)((int)pfVar3 + 2) * _DAT_00799208;
|
|
|
|
local_14[1] = (float)((uint)*pfVar3 >> 8 & 0xff) * _DAT_00799208;
|
|
|
|
local_14[2] = (float)*(byte *)pfVar3 * _DAT_00799208;
|
|
|
|
fVar2 = (float)*(byte *)((int)pfVar3 + 3);
|
|
|
|
goto LAB_005ffa33;
|
|
|
|
case 5:
|
|
|
|
local_14[0] = (float)*(byte *)pfVar3;
|
|
|
|
local_14[1] = (float)*(byte *)((int)pfVar3 + 1);
|
|
|
|
local_14[2] = (float)*(byte *)((int)pfVar3 + 2);
|
|
|
|
local_14[3] = (float)*(byte *)((int)pfVar3 + 3);
|
|
|
|
goto LAB_005ffd21;
|
|
|
|
case 6:
|
|
|
|
local_14[0] = (float)(int)(short)*(ushort *)pfVar3;
|
|
|
|
local_14[1] = (float)(int)(short)*(ushort *)((int)pfVar3 + 2);
|
|
|
|
goto LAB_005ffd17;
|
|
|
|
case 7:
|
|
|
|
local_14[0] = (float)(int)(short)*(ushort *)pfVar3;
|
|
|
|
local_14[1] = (float)(int)(short)*(ushort *)((int)pfVar3 + 2);
|
|
|
|
local_14[2] = (float)(int)(short)*(ushort *)(pfVar3 + 1);
|
|
|
|
local_14[3] = (float)(int)(short)*(ushort *)((int)pfVar3 + 6);
|
|
|
|
goto LAB_005ffd21;
|
|
|
|
case 8:
|
|
|
|
local_14[0] = (float)*(byte *)pfVar3 * _DAT_00799208;
|
|
|
|
local_14[1] = (float)*(byte *)((int)pfVar3 + 1) * _DAT_00799208;
|
|
|
|
local_14[2] = (float)*(byte *)((int)pfVar3 + 2) * _DAT_00799208;
|
|
|
|
fVar2 = (float)*(byte *)((int)pfVar3 + 3);
|
|
|
|
goto LAB_005ffa33;
|
|
|
|
case 9:
|
|
|
|
local_14[0] = (float)(int)(short)((ushort)(*(ushort *)pfVar3 == 0x8000) + *(ushort *)pfVar3) *
|
|
|
|
_DAT_007cbd08;
|
|
|
|
uVar4 = (uint)(short)((ushort)(*(ushort *)((int)pfVar3 + 2) == 0x8000) +
|
|
|
|
*(ushort *)((int)pfVar3 + 2));
|
|
|
|
fVar1 = _DAT_007cbd08;
|
|
|
|
goto LAB_005ffbec;
|
|
|
|
case 10:
|
|
|
|
local_14[0] = (float)(int)(short)((ushort)(*(ushort *)pfVar3 == 0x8000) + *(ushort *)pfVar3) *
|
|
|
|
_DAT_007cbd08;
|
|
|
|
local_14[1] = (float)(int)(short)((ushort)(*(ushort *)((int)pfVar3 + 2) == 0x8000) +
|
|
|
|
*(ushort *)((int)pfVar3 + 2)) * _DAT_007cbd08;
|
|
|
|
local_14[2] = (float)(int)(short)((ushort)(*(ushort *)(pfVar3 + 1) == 0x8000) +
|
|
|
|
*(ushort *)(pfVar3 + 1)) * _DAT_007cbd08;
|
|
|
|
local_14[3] = (float)(int)(short)((ushort)(*(ushort *)((int)pfVar3 + 6) == 0x8000) +
|
|
|
|
*(ushort *)((int)pfVar3 + 6)) * _DAT_007cbd08;
|
|
|
|
break;
|
|
|
|
case 0xb:
|
|
|
|
local_14[0] = (float)*(ushort *)pfVar3 * _DAT_007edf18;
|
|
|
|
uVar4 = (uint)*(ushort *)((int)pfVar3 + 2);
|
|
|
|
fVar1 = _DAT_007edf18;
|
|
|
|
LAB_005ffbec:
|
|
|
|
local_14[1] = (float)(int)uVar4 * fVar1;
|
|
|
|
goto LAB_005ffd1a;
|
|
|
|
case 0xc:
|
|
|
|
local_14[0] = (float)*(ushort *)pfVar3 * _DAT_007edf18;
|
|
|
|
local_14[1] = (float)*(ushort *)((int)pfVar3 + 2) * _DAT_007edf18;
|
|
|
|
local_14[2] = (float)*(ushort *)(pfVar3 + 1) * _DAT_007edf18;
|
|
|
|
fVar2 = (float)*(ushort *)((int)pfVar3 + 6);
|
|
|
|
fVar1 = _DAT_007edf18;
|
|
|
|
LAB_005ffa33:
|
|
|
|
local_14[3] = fVar2 * fVar1;
|
|
|
|
break;
|
|
|
|
case 0xd:
|
|
|
|
local_14[0] = (float)((uint)*pfVar3 & 0x3ff);
|
|
|
|
local_14[1] = (float)((uint)*pfVar3 >> 10 & 0x3ff);
|
|
|
|
local_14[2] = (float)((uint)*pfVar3 >> 0x14 & 0x3ff);
|
|
|
|
goto LAB_005ffd1c;
|
|
|
|
case 0xe:
|
|
|
|
fVar1 = *pfVar3;
|
|
|
|
iVar6 = ((int)fVar1 << 0x16) >> 0x16;
|
|
|
|
iVar7 = ((int)fVar1 << 0xc) >> 0x16;
|
|
|
|
iVar5 = ((int)fVar1 << 2) >> 0x16;
|
|
|
|
local_14[0] = (float)(int)((uint)(iVar6 == -0x200) + iVar6) * _DAT_007ee04c;
|
|
|
|
local_14[1] = (float)(int)((uint)(iVar7 == -0x200) + iVar7) * _DAT_007ee04c;
|
|
|
|
local_14[2] = (float)(int)((uint)(iVar5 == -0x200) + iVar5) * _DAT_007ee04c;
|
|
|
|
goto LAB_005ffd1f;
|
|
|
|
case 0xf:
|
|
|
|
thunk_FUN_005e038f(local_14,pfVar3,2);
|
|
|
|
LAB_005ffd1a:
|
|
|
|
local_14[2] = 0.0;
|
|
|
|
LAB_005ffd1c:
|
|
|
|
LAB_005ffd1f:
|
|
|
|
local_14[3] = 1.0;
|
|
|
|
LAB_005ffd21:
|
|
|
|
break;
|
|
|
|
case 0x10:
|
|
|
|
thunk_FUN_005e038f(local_14,pfVar3,4);
|
|
|
|
}
|
|
|
|
if (4 < param_4) {
|
|
|
|
param_4 = 4;
|
|
|
|
}
|
|
|
|
if (param_4 != 0) {
|
|
|
|
pfVar3 = local_14;
|
|
|
|
for (; param_4 != 0; param_4 = param_4 - 1) {
|
|
|
|
*param_3 = *pfVar3;
|
|
|
|
pfVar3 = pfVar3 + 1;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_005ffd85 at 0x005FFD85 (size: 1047) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_005ffd85(int param_1,undefined4 param_2,float *param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
undefined1 uVar2;
|
|
|
|
undefined2 uVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
uint uVar7;
|
|
|
|
uint uVar8;
|
|
|
|
undefined4 uVar9;
|
|
|
|
float local_18 [5];
|
|
|
|
|
|
|
|
uVar7 = 0;
|
|
|
|
if (4 < param_4) {
|
|
|
|
param_4 = 4;
|
|
|
|
}
|
|
|
|
uVar2 = *(undefined1 *)(param_1 + 4);
|
|
|
|
switch(uVar2) {
|
|
|
|
case 4:
|
|
|
|
case 8:
|
|
|
|
case 0xb:
|
|
|
|
case 0xc:
|
|
|
|
if (param_4 == 0) break;
|
|
|
|
iVar6 = (int)local_18 - (int)param_3;
|
|
|
|
uVar7 = param_4;
|
|
|
|
do {
|
|
|
|
if (0.0 <= *param_3) {
|
|
|
|
if (*param_3 <= 1.0) {
|
|
|
|
fVar1 = *param_3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 0.0;
|
|
|
|
}
|
|
|
|
*(float *)(iVar6 + (int)param_3) = fVar1;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
uVar7 = uVar7 - 1;
|
|
|
|
} while (uVar7 != 0);
|
|
|
|
LAB_005ffe80:
|
|
|
|
uVar7 = param_4;
|
|
|
|
if (param_4 < 3) break;
|
|
|
|
goto LAB_005ffe96;
|
|
|
|
case 5:
|
|
|
|
case 0xd:
|
|
|
|
if (param_4 != 0) {
|
|
|
|
iVar6 = (int)local_18 - (int)param_3;
|
|
|
|
uVar7 = param_4;
|
|
|
|
do {
|
|
|
|
if (0.0 <= *param_3) {
|
|
|
|
fVar1 = *param_3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 0.0;
|
|
|
|
}
|
|
|
|
*(float *)((int)param_3 + iVar6) = fVar1;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
uVar7 = uVar7 - 1;
|
|
|
|
} while (uVar7 != 0);
|
|
|
|
goto LAB_005ffe80;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
if (param_4 != 0) {
|
|
|
|
pfVar4 = local_18;
|
|
|
|
for (uVar7 = param_4; uVar7 != 0; uVar7 = uVar7 - 1) {
|
|
|
|
*pfVar4 = *param_3;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
pfVar4 = pfVar4 + 1;
|
|
|
|
}
|
|
|
|
goto LAB_005ffe80;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
case 10:
|
|
|
|
case 0xe:
|
|
|
|
if (param_4 != 0) {
|
|
|
|
iVar6 = (int)local_18 - (int)param_3;
|
|
|
|
uVar7 = param_4;
|
|
|
|
do {
|
|
|
|
fVar1 = _DAT_0079a1a0;
|
|
|
|
if (_DAT_0079a1a0 <= *param_3) {
|
|
|
|
if (*param_3 <= 1.0) {
|
|
|
|
fVar1 = *param_3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*(float *)((int)param_3 + iVar6) = fVar1;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
uVar7 = uVar7 - 1;
|
|
|
|
} while (uVar7 != 0);
|
|
|
|
goto LAB_005ffe80;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pfVar4 = local_18 + uVar7;
|
|
|
|
for (iVar6 = 3 - uVar7; iVar6 != 0; iVar6 = iVar6 + -1) {
|
|
|
|
*pfVar4 = 0.0;
|
|
|
|
pfVar4 = pfVar4 + 1;
|
|
|
|
}
|
|
|
|
param_4 = uVar7 + (3 - uVar7);
|
|
|
|
LAB_005ffe96:
|
|
|
|
if (param_4 < 4) {
|
|
|
|
pfVar4 = local_18 + param_4;
|
|
|
|
for (iVar6 = 4 - param_4; iVar6 != 0; iVar6 = iVar6 + -1) {
|
|
|
|
*pfVar4 = 1.0;
|
|
|
|
pfVar4 = pfVar4 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pfVar4 = (float *)FUN_005ff952(param_1,param_2);
|
|
|
|
switch(uVar2) {
|
|
|
|
case 0:
|
|
|
|
*pfVar4 = local_18[0];
|
|
|
|
break;
|
|
|
|
case 1:
|
|
|
|
*pfVar4 = local_18[0];
|
|
|
|
pfVar4[1] = local_18[1];
|
|
|
|
break;
|
|
|
|
case 2:
|
|
|
|
*pfVar4 = local_18[0];
|
|
|
|
pfVar4[1] = local_18[1];
|
|
|
|
pfVar4[2] = local_18[2];
|
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
*pfVar4 = local_18[0];
|
|
|
|
pfVar4[1] = local_18[1];
|
|
|
|
pfVar4[2] = local_18[2];
|
|
|
|
pfVar4[3] = local_18[3];
|
|
|
|
break;
|
|
|
|
case 4:
|
|
|
|
uVar7 = FUN_005df4c4();
|
|
|
|
uVar8 = 0xff;
|
|
|
|
iVar6 = FUN_005df4c4();
|
|
|
|
uVar5 = FUN_005df4c4();
|
|
|
|
uVar7 = ((uVar7 & 0xff | iVar6 << 8) << 8 | uVar5 & 0xff) << 8;
|
|
|
|
goto LAB_00600170;
|
|
|
|
case 5:
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
*(undefined1 *)pfVar4 = uVar2;
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
*(undefined1 *)((int)pfVar4 + 1) = uVar2;
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
*(undefined1 *)((int)pfVar4 + 2) = uVar2;
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
goto LAB_00600041;
|
|
|
|
case 6:
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)pfVar4 = uVar3;
|
|
|
|
goto LAB_00600095;
|
|
|
|
case 7:
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)pfVar4 = uVar3;
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)((int)pfVar4 + 2) = uVar3;
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)(pfVar4 + 1) = uVar3;
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
goto LAB_006000f2;
|
|
|
|
case 8:
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
*(undefined1 *)pfVar4 = uVar2;
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
*(undefined1 *)((int)pfVar4 + 1) = uVar2;
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
*(undefined1 *)((int)pfVar4 + 2) = uVar2;
|
|
|
|
uVar2 = FUN_005df4c4();
|
|
|
|
LAB_00600041:
|
|
|
|
*(undefined1 *)((int)pfVar4 + 3) = uVar2;
|
|
|
|
break;
|
|
|
|
case 9:
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)pfVar4 = uVar3;
|
|
|
|
goto LAB_00600095;
|
|
|
|
case 10:
|
|
|
|
goto LAB_006000af;
|
|
|
|
case 0xb:
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)pfVar4 = uVar3;
|
|
|
|
LAB_00600095:
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)((int)pfVar4 + 2) = uVar3;
|
|
|
|
break;
|
|
|
|
case 0xc:
|
|
|
|
LAB_006000af:
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)pfVar4 = uVar3;
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)((int)pfVar4 + 2) = uVar3;
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
*(undefined2 *)(pfVar4 + 1) = uVar3;
|
|
|
|
uVar3 = FUN_005df4c4();
|
|
|
|
LAB_006000f2:
|
|
|
|
*(undefined2 *)((int)pfVar4 + 6) = uVar3;
|
|
|
|
break;
|
|
|
|
case 0xd:
|
|
|
|
uVar7 = FUN_005df4c4();
|
|
|
|
uVar8 = 0x3ff;
|
|
|
|
uVar5 = FUN_005df4c4();
|
|
|
|
uVar7 = ((uVar7 & 0x3ff) << 10 | uVar5 & 0x3ff) << 10;
|
|
|
|
uVar5 = FUN_005df4c4();
|
|
|
|
goto LAB_0060017b;
|
|
|
|
case 0xe:
|
|
|
|
uVar7 = FUN_005df4c4();
|
|
|
|
uVar8 = 0x3ff;
|
|
|
|
uVar5 = FUN_005df4c4();
|
|
|
|
uVar7 = ((uVar7 & 0x3ff) << 10 | uVar5 & 0x3ff) << 10;
|
|
|
|
LAB_00600170:
|
|
|
|
uVar5 = FUN_005df4c4();
|
|
|
|
LAB_0060017b:
|
|
|
|
*pfVar4 = (float)(uVar7 | uVar5 & uVar8);
|
|
|
|
break;
|
|
|
|
case 0xf:
|
|
|
|
uVar9 = 2;
|
|
|
|
goto LAB_0060018b;
|
|
|
|
case 0x10:
|
|
|
|
uVar9 = 4;
|
|
|
|
LAB_0060018b:
|
|
|
|
thunk_FUN_005e02d4(pfVar4,local_18,uVar9);
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|