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>
7615 lines
253 KiB
C
7615 lines
253 KiB
C
// Decompiled from acclient.exe — chunk 0x00600000
|
|
// Ghidra 12.0.4 + pyghidra headless
|
|
|
|
// --- FUN_006001fb at 0x006001FB (size: 16) ---
|
|
|
|
|
|
void __fastcall FUN_006001fb(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = &PTR_FUN_007f15d4;
|
|
|
|
operator_delete((void *)param_1[3]);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060020b at 0x0060020B (size: 44) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_0060020b(int param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
|
|
|
|
iVar1 = FUN_005df0f5(param_2);
|
|
|
|
*(int *)(param_1 + 0xc) = iVar1;
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
uVar2 = 0x8007000e;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*(undefined4 *)(param_1 + 8) = param_2;
|
|
|
|
uVar2 = 0;
|
|
|
|
}
|
|
|
|
return uVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00600237 at 0x00600237 (size: 36) ---
|
|
|
|
|
|
undefined4 __thiscall FUN_00600237(int param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
operator_delete(*(void **)(param_1 + 0xc));
|
|
|
|
*(undefined4 *)(param_1 + 0xc) = param_2;
|
|
|
|
*(undefined4 *)(param_1 + 8) = param_3;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060025b at 0x0060025B (size: 18) ---
|
|
|
|
|
|
undefined4 FUN_0060025b(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*(int *)(param_1 + 4) = *(int *)(param_1 + 4) + 1;
|
|
|
|
return *(undefined4 *)(param_1 + 4);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060026d at 0x0060026D (size: 37) ---
|
|
|
|
|
|
int FUN_0060026d(int *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
iVar2 = param_1[1];
|
|
|
|
iVar1 = iVar2 + -1;
|
|
|
|
param_1[1] = iVar1;
|
|
|
|
if (iVar2 == 1) {
|
|
|
|
(**(code **)(*param_1 + 0x14))(1);
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00600292 at 0x00600292 (size: 15) ---
|
|
|
|
|
|
undefined4 FUN_00600292(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 0xc);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006002a1 at 0x006002A1 (size: 15) ---
|
|
|
|
|
|
undefined4 FUN_006002a1(int param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
return *(undefined4 *)(param_1 + 8);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006002b0 at 0x006002B0 (size: 33) ---
|
|
|
|
|
|
void * __thiscall FUN_006002b0(void *param_1,byte param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_006001fb();
|
|
|
|
if ((param_2 & 1) != 0) {
|
|
|
|
operator_delete(param_1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006002d1 at 0x006002D1 (size: 73) ---
|
|
|
|
|
|
undefined4 FUN_006002d1(int *param_1,int *param_2,undefined4 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int *piVar3;
|
|
|
|
bool bVar4;
|
|
|
|
|
|
|
|
*param_3 = 0;
|
|
|
|
iVar1 = 4;
|
|
|
|
bVar4 = true;
|
|
|
|
piVar2 = param_2;
|
|
|
|
piVar3 = &DAT_007cc670;
|
|
|
|
do {
|
|
|
|
if (iVar1 == 0) break;
|
|
|
|
iVar1 = iVar1 + -1;
|
|
|
|
bVar4 = *piVar2 == *piVar3;
|
|
|
|
piVar2 = piVar2 + 1;
|
|
|
|
piVar3 = piVar3 + 1;
|
|
|
|
} while (bVar4);
|
|
|
|
if (!bVar4) {
|
|
|
|
iVar1 = 4;
|
|
|
|
bVar4 = true;
|
|
|
|
piVar2 = &DAT_007f14d8;
|
|
|
|
do {
|
|
|
|
if (iVar1 == 0) break;
|
|
|
|
iVar1 = iVar1 + -1;
|
|
|
|
bVar4 = *param_2 == *piVar2;
|
|
|
|
param_2 = param_2 + 1;
|
|
|
|
piVar2 = piVar2 + 1;
|
|
|
|
} while (bVar4);
|
|
|
|
if (!bVar4) {
|
|
|
|
return 0x80004002;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*param_3 = param_1;
|
|
|
|
(**(code **)(*param_1 + 4))(param_1);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060031a at 0x0060031A (size: 24) ---
|
|
|
|
|
|
void __fastcall FUN_0060031a(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[2] = 0;
|
|
|
|
*param_1 = &PTR_FUN_007f15d4;
|
|
|
|
param_1[1] = 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00600332 at 0x00600332 (size: 98) ---
|
|
|
|
|
|
int FUN_00600332(undefined4 param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
int *piVar2;
|
|
|
|
|
|
|
|
if (param_2 == (undefined4 *)0x0) {
|
|
|
|
iVar1 = -0x7789f794;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = FUN_005df0f5(0x10);
|
|
|
|
if (iVar1 == 0) {
|
|
|
|
piVar2 = (int *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar2 = (int *)FUN_0060031a();
|
|
|
|
}
|
|
|
|
if (piVar2 == (int *)0x0) {
|
|
|
|
iVar1 = -0x7ff8fff2;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar1 = (**(code **)(*piVar2 + 0x18))(param_1);
|
|
|
|
if (iVar1 < 0) {
|
|
|
|
(**(code **)(*piVar2 + 0x14))(1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_2 = piVar2;
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00600394 at 0x00600394 (size: 11) ---
|
|
|
|
|
|
void FUN_00600394(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
FUN_00600332();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060039f at 0x0060039F (size: 107) ---
|
|
|
|
|
|
float * FUN_0060039f(float *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
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;
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_3[2];
|
|
|
|
fVar3 = *param_2;
|
|
|
|
fVar4 = param_3[1];
|
|
|
|
fVar5 = *param_2;
|
|
|
|
fVar6 = param_3[3];
|
|
|
|
fVar7 = param_2[1];
|
|
|
|
fVar8 = param_3[6];
|
|
|
|
fVar9 = param_2[1];
|
|
|
|
fVar10 = param_3[5];
|
|
|
|
fVar11 = param_2[1];
|
|
|
|
fVar12 = param_3[7];
|
|
|
|
fVar13 = param_3[0xd];
|
|
|
|
fVar14 = param_3[0xe];
|
|
|
|
fVar15 = param_3[0xf];
|
|
|
|
*param_1 = param_3[0xc] + param_2[1] * param_3[4] + *param_2 * *param_3;
|
|
|
|
param_1[1] = fVar13 + fVar9 * fVar10 + fVar3 * fVar4;
|
|
|
|
param_1[2] = fVar14 + fVar7 * fVar8 + fVar1 * fVar2;
|
|
|
|
param_1[3] = fVar15 + fVar11 * fVar12 + fVar5 * fVar6;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060040a at 0x0060040A (size: 55) ---
|
|
|
|
|
|
float * FUN_0060040a(float *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_3[1];
|
|
|
|
fVar3 = param_2[1];
|
|
|
|
fVar4 = param_3[5];
|
|
|
|
*param_1 = param_2[1] * param_3[4] + *param_2 * *param_3;
|
|
|
|
param_1[1] = fVar3 * fVar4 + fVar1 * fVar2;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00600441 at 0x00600441 (size: 141) ---
|
|
|
|
|
|
float * FUN_00600441(float *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
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;
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_3[2];
|
|
|
|
fVar3 = *param_2;
|
|
|
|
fVar4 = param_3[1];
|
|
|
|
fVar5 = *param_2;
|
|
|
|
fVar6 = param_3[3];
|
|
|
|
fVar7 = param_2[1];
|
|
|
|
fVar8 = param_3[6];
|
|
|
|
fVar9 = param_2[1];
|
|
|
|
fVar10 = param_3[5];
|
|
|
|
fVar11 = param_2[1];
|
|
|
|
fVar12 = param_3[7];
|
|
|
|
fVar13 = param_2[2];
|
|
|
|
fVar14 = param_3[10];
|
|
|
|
fVar15 = param_2[2];
|
|
|
|
fVar16 = param_3[9];
|
|
|
|
fVar17 = param_2[2];
|
|
|
|
fVar18 = param_3[0xb];
|
|
|
|
fVar19 = param_3[0xd];
|
|
|
|
fVar20 = param_3[0xe];
|
|
|
|
fVar21 = param_3[0xf];
|
|
|
|
*param_1 = param_3[0xc] + param_2[2] * param_3[8] + param_2[1] * param_3[4] + *param_2 * *param_3;
|
|
|
|
param_1[1] = fVar19 + fVar15 * fVar16 + fVar9 * fVar10 + fVar3 * fVar4;
|
|
|
|
param_1[2] = fVar20 + fVar13 * fVar14 + fVar7 * fVar8 + fVar1 * fVar2;
|
|
|
|
param_1[3] = fVar21 + fVar17 * fVar18 + fVar11 * fVar12 + fVar5 * fVar6;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006004ce at 0x006004CE (size: 97) ---
|
|
|
|
|
|
float * FUN_006004ce(float *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_3[1];
|
|
|
|
fVar3 = *param_2;
|
|
|
|
fVar4 = param_3[2];
|
|
|
|
fVar5 = param_2[1];
|
|
|
|
fVar6 = param_3[5];
|
|
|
|
fVar7 = param_2[1];
|
|
|
|
fVar8 = param_3[6];
|
|
|
|
fVar9 = param_2[2];
|
|
|
|
fVar10 = param_3[9];
|
|
|
|
fVar11 = param_2[2];
|
|
|
|
fVar12 = param_3[10];
|
|
|
|
*param_1 = param_2[2] * param_3[8] + param_2[1] * param_3[4] + *param_2 * *param_3;
|
|
|
|
param_1[1] = fVar9 * fVar10 + fVar5 * fVar6 + fVar1 * fVar2;
|
|
|
|
param_1[2] = fVar11 * fVar12 + fVar7 * fVar8 + fVar3 * fVar4;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060052f at 0x0060052F (size: 155) ---
|
|
|
|
|
|
float * FUN_0060052f(float *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
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;
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_3[2];
|
|
|
|
fVar3 = *param_2;
|
|
|
|
fVar4 = param_3[1];
|
|
|
|
fVar5 = *param_2;
|
|
|
|
fVar6 = param_3[3];
|
|
|
|
fVar7 = param_2[1];
|
|
|
|
fVar8 = param_3[6];
|
|
|
|
fVar9 = param_2[1];
|
|
|
|
fVar10 = param_3[5];
|
|
|
|
fVar11 = param_2[1];
|
|
|
|
fVar12 = param_3[7];
|
|
|
|
fVar13 = param_2[2];
|
|
|
|
fVar14 = param_3[10];
|
|
|
|
fVar15 = param_2[2];
|
|
|
|
fVar16 = param_3[9];
|
|
|
|
fVar17 = param_2[2];
|
|
|
|
fVar18 = param_3[0xb];
|
|
|
|
fVar19 = param_2[3];
|
|
|
|
fVar20 = param_3[0xe];
|
|
|
|
fVar21 = param_2[3];
|
|
|
|
fVar22 = param_3[0xd];
|
|
|
|
fVar23 = param_2[3];
|
|
|
|
fVar24 = param_3[0xf];
|
|
|
|
*param_1 = param_2[3] * param_3[0xc] +
|
|
|
|
param_2[2] * param_3[8] + param_2[1] * param_3[4] + *param_2 * *param_3;
|
|
|
|
param_1[1] = fVar21 * fVar22 + fVar15 * fVar16 + fVar9 * fVar10 + fVar3 * fVar4;
|
|
|
|
param_1[2] = fVar19 * fVar20 + fVar13 * fVar14 + fVar7 * fVar8 + fVar1 * fVar2;
|
|
|
|
param_1[3] = fVar23 * fVar24 + fVar17 * fVar18 + fVar11 * fVar12 + fVar5 * fVar6;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006005ca at 0x006005CA (size: 69) ---
|
|
|
|
|
|
float10 FUN_006005ca(uint param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
|
|
|
|
uVar1 = param_1 >> 0xc & 0xff8;
|
|
|
|
return ((float10)(float)(param_1 & 0xffffff | 0x3f000000) *
|
|
|
|
(float10)*(float *)(&DAT_00826ab8 + uVar1) + (float10)*(float *)(&DAT_00826abc + uVar1)) *
|
|
|
|
(float10)(float)(0xbeffffff - param_1 >> 1 & 0xff800000);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060060f at 0x0060060F (size: 204) ---
|
|
|
|
|
|
float * FUN_0060060f(float *param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
uint uVar4;
|
|
|
|
float10 fVar5;
|
|
|
|
|
|
|
|
fVar5 = (float10)*param_2 * (float10)*param_2 + (float10)param_2[1] * (float10)param_2[1] +
|
|
|
|
(float10)param_2[2] * (float10)param_2[2];
|
|
|
|
fVar1 = (float)fVar5;
|
|
|
|
if (fVar1 == 0.0) {
|
|
|
|
ffree(fVar5);
|
|
|
|
*param_1 = 0.0;
|
|
|
|
param_1[1] = 0.0;
|
|
|
|
param_1[2] = 0.0;
|
|
|
|
}
|
|
|
|
else if ((uint)ABS((float)(fVar5 - (float10)1)) < 0x3727c5ad) {
|
|
|
|
if (param_1 != param_2) {
|
|
|
|
*param_1 = *param_2;
|
|
|
|
param_1[1] = param_2[1];
|
|
|
|
param_1[2] = param_2[2];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = (uint)fVar1 >> 0xc & 0xff8;
|
|
|
|
fVar3 = ((float)((uint)fVar1 & 0xffffff | 0x3f000000) * *(float *)(&DAT_00826ab8 + uVar4) +
|
|
|
|
*(float *)(&DAT_00826abc + uVar4)) * (float)(0xbeffffffU - (int)fVar1 >> 1 & 0xff800000)
|
|
|
|
;
|
|
|
|
fVar1 = param_2[1];
|
|
|
|
fVar2 = param_2[2];
|
|
|
|
*param_1 = *param_2 * fVar3;
|
|
|
|
param_1[1] = fVar1 * fVar3;
|
|
|
|
param_1[2] = fVar2 * fVar3;
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006006db at 0x006006DB (size: 229) ---
|
|
|
|
|
|
void FUN_006006db(float *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
float *pfVar7;
|
|
|
|
float local_44 [16];
|
|
|
|
|
|
|
|
if (param_3 == param_1) {
|
|
|
|
if (param_2 != param_1) {
|
|
|
|
iVar6 = -4;
|
|
|
|
do {
|
|
|
|
iVar5 = -0x10;
|
|
|
|
fVar1 = param_3[iVar6 + 4];
|
|
|
|
fVar2 = param_3[iVar6 + 8];
|
|
|
|
fVar3 = param_3[iVar6 + 0xc];
|
|
|
|
fVar4 = param_3[iVar6 + 0x10];
|
|
|
|
do {
|
|
|
|
param_1[iVar5 + 0x10] =
|
|
|
|
(float)((float10)fVar4 * (float10)param_2[iVar5 + 0x13] +
|
|
|
|
(float10)fVar2 * (float10)param_2[iVar5 + 0x11] +
|
|
|
|
(float10)fVar1 * (float10)param_2[iVar5 + 0x10] +
|
|
|
|
(float10)fVar3 * (float10)param_2[iVar5 + 0x12]);
|
|
|
|
iVar5 = iVar5 + 4;
|
|
|
|
} while (iVar5 != 0);
|
|
|
|
ffree((float10)fVar1);
|
|
|
|
ffree((float10)fVar2);
|
|
|
|
ffree((float10)fVar3);
|
|
|
|
ffree((float10)fVar4);
|
|
|
|
param_1 = param_1 + 1;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 != 0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
pfVar7 = local_44;
|
|
|
|
for (iVar6 = 0x10; iVar6 != 0; iVar6 = iVar6 + -1) {
|
|
|
|
*pfVar7 = *param_3;
|
|
|
|
param_3 = param_3 + 1;
|
|
|
|
pfVar7 = pfVar7 + 1;
|
|
|
|
}
|
|
|
|
param_3 = local_44;
|
|
|
|
}
|
|
|
|
iVar6 = -4;
|
|
|
|
do {
|
|
|
|
iVar5 = -4;
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = param_2[3];
|
|
|
|
do {
|
|
|
|
param_1[iVar5 + 4] =
|
|
|
|
(float)((float10)fVar4 * (float10)param_3[iVar5 + 0x10] +
|
|
|
|
(float10)fVar2 * (float10)param_3[iVar5 + 8] +
|
|
|
|
(float10)fVar1 * (float10)param_3[iVar5 + 4] +
|
|
|
|
(float10)fVar3 * (float10)param_3[iVar5 + 0xc]);
|
|
|
|
iVar5 = iVar5 + 1;
|
|
|
|
} while (iVar5 != 0);
|
|
|
|
ffree((float10)fVar1);
|
|
|
|
ffree((float10)fVar2);
|
|
|
|
ffree((float10)fVar3);
|
|
|
|
ffree((float10)fVar4);
|
|
|
|
param_2 = param_2 + 4;
|
|
|
|
param_1 = param_1 + 4;
|
|
|
|
iVar6 = iVar6 + 1;
|
|
|
|
} while (iVar6 != 0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006007c0 at 0x006007C0 (size: 144) ---
|
|
|
|
|
|
void FUN_006007c0(float *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float *pfVar5;
|
|
|
|
float *pfVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
float local_48 [17];
|
|
|
|
|
|
|
|
if ((param_1 == param_2) || (pfVar5 = param_1, param_1 == param_3)) {
|
|
|
|
pfVar5 = local_48;
|
|
|
|
}
|
|
|
|
iVar8 = -4;
|
|
|
|
do {
|
|
|
|
iVar7 = -4;
|
|
|
|
pfVar6 = pfVar5 + iVar8 + 4;
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = param_2[3];
|
|
|
|
do {
|
|
|
|
*pfVar6 = (float)((float10)fVar4 * (float10)param_3[iVar7 + 0x10] +
|
|
|
|
(float10)fVar2 * (float10)param_3[iVar7 + 8] +
|
|
|
|
(float10)fVar1 * (float10)param_3[iVar7 + 4] +
|
|
|
|
(float10)fVar3 * (float10)param_3[iVar7 + 0xc]);
|
|
|
|
pfVar6 = pfVar6 + 4;
|
|
|
|
iVar7 = iVar7 + 1;
|
|
|
|
} while (iVar7 != 0);
|
|
|
|
ffree((float10)fVar1);
|
|
|
|
ffree((float10)fVar2);
|
|
|
|
ffree((float10)fVar3);
|
|
|
|
ffree((float10)fVar4);
|
|
|
|
param_2 = param_2 + 4;
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
} while (iVar8 != 0);
|
|
|
|
if (pfVar5 != param_1) {
|
|
|
|
for (iVar8 = 0x10; iVar8 != 0; iVar8 = iVar8 + -1) {
|
|
|
|
*param_1 = *pfVar5;
|
|
|
|
pfVar5 = pfVar5 + 1;
|
|
|
|
param_1 = param_1 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00600850 at 0x00600850 (size: 74) ---
|
|
|
|
|
|
void FUN_00600850(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = FUN_0060039f;
|
|
|
|
param_1[1] = FUN_00600441;
|
|
|
|
param_1[2] = FUN_0060052f;
|
|
|
|
param_1[3] = FUN_006006db;
|
|
|
|
param_1[4] = FUN_006007c0;
|
|
|
|
param_1[5] = FUN_0060040a;
|
|
|
|
param_1[6] = FUN_006004ce;
|
|
|
|
param_1[7] = FUN_0060060f;
|
|
|
|
param_1[0x23] = FUN_0060052f;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060089a at 0x0060089A (size: 78) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void __fastcall FUN_0060089a(uint param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float *in_EAX;
|
|
|
|
|
|
|
|
fVar1 = _DAT_007edee8;
|
|
|
|
*in_EAX = (float)(param_1 >> 0xb & 0x1f) * _DAT_007edee8;
|
|
|
|
in_EAX[1] = (float)(param_1 >> 5 & 0x3f) * _DAT_007edee0;
|
|
|
|
in_EAX[2] = (float)(param_1 & 0x1f) * fVar1;
|
|
|
|
in_EAX[3] = 1.0;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006008e8 at 0x006008E8 (size: 132) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_006008e8(float *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
|
|
|
|
iVar3 = 0x10;
|
|
|
|
do {
|
|
|
|
if (DAT_00796344 == param_1[3]) {
|
|
|
|
*param_1 = 0.0;
|
|
|
|
param_1[1] = 0.0;
|
|
|
|
fVar1 = 0.0;
|
|
|
|
LAB_00600960:
|
|
|
|
param_1[2] = fVar1;
|
|
|
|
}
|
|
|
|
else if (param_1[3] < 1.0) {
|
|
|
|
fVar1 = 1.0 / param_1[3];
|
|
|
|
if (param_1[3] <= *param_1) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = fVar1 * *param_1;
|
|
|
|
}
|
|
|
|
*param_1 = fVar2;
|
|
|
|
if (param_1[3] <= param_1[1]) {
|
|
|
|
fVar2 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = fVar1 * param_1[1];
|
|
|
|
}
|
|
|
|
param_1[1] = fVar2;
|
|
|
|
if (param_1[3] <= param_1[2]) {
|
|
|
|
fVar1 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar1 = fVar1 * param_1[2];
|
|
|
|
}
|
|
|
|
goto LAB_00600960;
|
|
|
|
}
|
|
|
|
param_1 = param_1 + 4;
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
if (iVar3 == 0) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060096c at 0x0060096C (size: 48) ---
|
|
|
|
|
|
undefined4 __fastcall FUN_0060096c(float *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *in_EAX;
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = 0x10;
|
|
|
|
do {
|
|
|
|
*param_1 = in_EAX[3] * *in_EAX;
|
|
|
|
iVar1 = iVar1 + -1;
|
|
|
|
param_1[1] = in_EAX[1] * in_EAX[3];
|
|
|
|
param_1[2] = in_EAX[2] * in_EAX[3];
|
|
|
|
param_1[3] = in_EAX[3];
|
|
|
|
in_EAX = in_EAX + 4;
|
|
|
|
param_1 = param_1 + 4;
|
|
|
|
} while (iVar1 != 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060099c at 0x0060099C (size: 259) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
uint __fastcall FUN_0060099c(float *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
float local_20;
|
|
|
|
float local_1c;
|
|
|
|
float local_18;
|
|
|
|
|
|
|
|
if (DAT_00796344 <= *param_1) {
|
|
|
|
if (_DAT_007938b0 < *param_1) {
|
|
|
|
local_20 = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_20 = *param_1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_20 = 0.0;
|
|
|
|
}
|
|
|
|
if (DAT_00796344 <= param_1[1]) {
|
|
|
|
if (_DAT_007938b0 < param_1[1]) {
|
|
|
|
local_1c = 1.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_1c = param_1[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_1c = 0.0;
|
|
|
|
}
|
|
|
|
if (DAT_00796344 <= param_1[2]) {
|
|
|
|
if (param_1[2] <= _DAT_007938b0) {
|
|
|
|
local_18 = param_1[2];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_18 = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_18 = 0.0;
|
|
|
|
}
|
|
|
|
return ((int)ROUND(local_20 * _DAT_007edeec + _DAT_007938b8) << 6 |
|
|
|
|
(int)ROUND(local_1c * _DAT_007edee4 + _DAT_007938b8)) << 5 |
|
|
|
|
(int)ROUND(local_18 * _DAT_007edeec + _DAT_007938b8);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00600a9f at 0x00600A9F (size: 807) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_00600a9f(float *param_1,float *param_2,int param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float *pfVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
float *pfVar5;
|
|
|
|
uint uVar6;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_58 [6];
|
|
|
|
undefined4 local_40;
|
|
|
|
undefined4 local_3c;
|
|
|
|
undefined4 local_38;
|
|
|
|
uint local_34;
|
|
|
|
float local_30;
|
|
|
|
float local_2c;
|
|
|
|
float local_28;
|
|
|
|
uint local_24;
|
|
|
|
undefined4 *local_20;
|
|
|
|
float local_1c;
|
|
|
|
float local_18;
|
|
|
|
float local_14;
|
|
|
|
float local_10;
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
|
|
|
|
if (param_4 == 6) {
|
|
|
|
pfVar5 = (float *)&DAT_007f2b7c;
|
|
|
|
local_20 = &DAT_007f2b64;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
pfVar5 = (float *)&DAT_007f2b44;
|
|
|
|
local_20 = (undefined4 *)&DAT_007f2b24;
|
|
|
|
}
|
|
|
|
uVar3 = 0;
|
|
|
|
local_8 = 1.0;
|
|
|
|
local_c = 0.0;
|
|
|
|
if (param_4 == 8) {
|
|
|
|
do {
|
|
|
|
pfVar2 = (float *)(param_3 + uVar3 * 4);
|
|
|
|
if (*pfVar2 < local_8) {
|
|
|
|
local_8 = *pfVar2;
|
|
|
|
}
|
|
|
|
if (local_c < *pfVar2) {
|
|
|
|
local_c = *pfVar2;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < 0x10);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
do {
|
|
|
|
pfVar2 = (float *)(param_3 + uVar3 * 4);
|
|
|
|
if ((*pfVar2 < local_8) && (DAT_00796344 < *pfVar2)) {
|
|
|
|
local_8 = *pfVar2;
|
|
|
|
}
|
|
|
|
if ((local_c < *pfVar2) && (*pfVar2 < _DAT_007938b0)) {
|
|
|
|
local_c = *pfVar2;
|
|
|
|
}
|
|
|
|
uVar3 = uVar3 + 1;
|
|
|
|
} while (uVar3 < 0x10);
|
|
|
|
if (local_8 == local_c) {
|
|
|
|
local_c = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar3 = param_4 - 1;
|
|
|
|
local_28 = (float)(int)uVar3;
|
|
|
|
if ((int)uVar3 < 0) {
|
|
|
|
local_28 = local_28 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
local_24 = CONCAT22(local_24._2_2_,in_FPUControlWord);
|
|
|
|
local_38 = local_24;
|
|
|
|
local_24 = 0;
|
|
|
|
while (_DAT_007e75f8 <= local_c - local_8) {
|
|
|
|
local_2c = local_28 / (local_c - local_8);
|
|
|
|
if (param_4 != 0) {
|
|
|
|
iVar4 = (int)local_20 - (int)pfVar5;
|
|
|
|
pfVar2 = pfVar5;
|
|
|
|
uVar6 = param_4;
|
|
|
|
do {
|
|
|
|
*(float *)(((int)local_58 - (int)pfVar5) + (int)pfVar2) =
|
|
|
|
local_8 * *pfVar2 + local_c * *(float *)(iVar4 + (int)pfVar2);
|
|
|
|
pfVar2 = pfVar2 + 1;
|
|
|
|
uVar6 = uVar6 - 1;
|
|
|
|
} while (uVar6 != 0);
|
|
|
|
}
|
|
|
|
if (param_4 == 6) {
|
|
|
|
local_40 = 0;
|
|
|
|
local_3c = 0x3f800000;
|
|
|
|
}
|
|
|
|
uVar6 = 0;
|
|
|
|
local_10 = 0.0;
|
|
|
|
local_14 = 0.0;
|
|
|
|
local_18 = 0.0;
|
|
|
|
local_1c = 0.0;
|
|
|
|
do {
|
|
|
|
pfVar2 = (float *)(param_3 + uVar6 * 4);
|
|
|
|
fVar1 = (*pfVar2 - local_8) * local_2c;
|
|
|
|
if (fVar1 < DAT_00796344 == (fVar1 == DAT_00796344)) {
|
|
|
|
if (fVar1 < local_28) {
|
|
|
|
local_30 = fVar1 + _DAT_007938b8;
|
|
|
|
local_34 = (uint)ROUND(fVar1 + _DAT_007938b8);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_34 = uVar3;
|
|
|
|
if ((param_4 == 6) &&
|
|
|
|
(fVar1 = (local_c + _DAT_007938b0) * _DAT_007938b8,
|
|
|
|
fVar1 < *pfVar2 != (fVar1 == *pfVar2))) goto LAB_00600cca;
|
|
|
|
}
|
|
|
|
LAB_00600c88:
|
|
|
|
if (local_34 < param_4) {
|
|
|
|
local_10 = (*pfVar2 - local_58[local_34]) * pfVar5[local_34] + local_10;
|
|
|
|
local_18 = pfVar5[local_34] * pfVar5[local_34] + local_18;
|
|
|
|
local_14 = (*pfVar2 - local_58[local_34]) * (float)local_20[local_34] + local_14;
|
|
|
|
fVar1 = (float)local_20[local_34];
|
|
|
|
local_1c = fVar1 * fVar1 + local_1c;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((param_4 != 6) || (local_8 * _DAT_007938b8 < *pfVar2)) {
|
|
|
|
local_34 = 0;
|
|
|
|
goto LAB_00600c88;
|
|
|
|
}
|
|
|
|
LAB_00600cca:
|
|
|
|
uVar6 = uVar6 + 1;
|
|
|
|
} while (uVar6 < 0x10);
|
|
|
|
if (DAT_00796344 < local_18) {
|
|
|
|
local_8 = local_8 - local_10 / local_18;
|
|
|
|
}
|
|
|
|
if (DAT_00796344 < local_1c) {
|
|
|
|
local_c = local_c - local_14 / local_1c;
|
|
|
|
}
|
|
|
|
fVar1 = local_c;
|
|
|
|
if (local_c < local_8) {
|
|
|
|
local_c = local_8;
|
|
|
|
local_8 = fVar1;
|
|
|
|
}
|
|
|
|
if (((local_10 * local_10 < _DAT_007f2b20) && (local_14 * local_14 < _DAT_007f2b20)) ||
|
|
|
|
(local_24 = local_24 + 1, 7 < local_24)) break;
|
|
|
|
}
|
|
|
|
if (DAT_00796344 <= local_8) {
|
|
|
|
if (_DAT_007938b0 < local_8) {
|
|
|
|
local_8 = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = 0.0;
|
|
|
|
}
|
|
|
|
*param_1 = local_8;
|
|
|
|
if (DAT_00796344 <= local_c) {
|
|
|
|
if (_DAT_007938b0 < local_c) {
|
|
|
|
local_c = 1.0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_c = 0.0;
|
|
|
|
}
|
|
|
|
*param_2 = local_c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00600dc6 at 0x00600DC6 (size: 1408) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_00600dc6(float *param_1,float *param_2,float param_3,float param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
int iVar10;
|
|
|
|
int iVar11;
|
|
|
|
float *pfVar12;
|
|
|
|
int iVar13;
|
|
|
|
uint uVar14;
|
|
|
|
int iVar15;
|
|
|
|
uint uVar16;
|
|
|
|
float *pfVar17;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_c4 [16];
|
|
|
|
int local_84;
|
|
|
|
float *local_80;
|
|
|
|
undefined4 local_7c;
|
|
|
|
float local_78;
|
|
|
|
float local_74;
|
|
|
|
float local_70;
|
|
|
|
undefined4 *local_68;
|
|
|
|
uint local_64;
|
|
|
|
float local_60;
|
|
|
|
float *local_5c;
|
|
|
|
float local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
float local_44;
|
|
|
|
float local_40;
|
|
|
|
float local_3c;
|
|
|
|
float local_34 [6];
|
|
|
|
float local_1c;
|
|
|
|
float local_14;
|
|
|
|
float local_10;
|
|
|
|
float local_c;
|
|
|
|
undefined4 uStack_8;
|
|
|
|
|
|
|
|
iVar10 = (int)param_4;
|
|
|
|
if (param_4 == 4.2039e-45) {
|
|
|
|
local_5c = (float *)&DAT_007f2bc8;
|
|
|
|
local_68 = &DAT_007f2bbc;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_5c = (float *)&DAT_007f2bac;
|
|
|
|
local_68 = (undefined4 *)&DAT_007f2b9c;
|
|
|
|
}
|
|
|
|
local_34[4] = 0.0;
|
|
|
|
local_34[5] = 0.0;
|
|
|
|
local_14 = DAT_00827ac0;
|
|
|
|
local_10 = DAT_00827ac4;
|
|
|
|
local_1c = 0.0;
|
|
|
|
local_c = DAT_00827ac8;
|
|
|
|
uStack_8 = DAT_00827acc;
|
|
|
|
pfVar17 = (float *)((int)param_3 + 8);
|
|
|
|
iVar11 = 0x10;
|
|
|
|
local_80 = pfVar17;
|
|
|
|
pfVar12 = pfVar17;
|
|
|
|
iVar13 = iVar11;
|
|
|
|
do {
|
|
|
|
if (pfVar12[-2] < local_14) {
|
|
|
|
local_14 = pfVar12[-2];
|
|
|
|
}
|
|
|
|
if (pfVar12[-1] < local_10) {
|
|
|
|
local_10 = pfVar12[-1];
|
|
|
|
}
|
|
|
|
fVar3 = local_10;
|
|
|
|
if (*pfVar12 < local_c) {
|
|
|
|
local_c = *pfVar12;
|
|
|
|
}
|
|
|
|
if (local_34[4] < pfVar12[-2]) {
|
|
|
|
local_34[4] = pfVar12[-2];
|
|
|
|
}
|
|
|
|
if (local_34[5] < pfVar12[-1]) {
|
|
|
|
local_34[5] = pfVar12[-1];
|
|
|
|
}
|
|
|
|
if (local_1c < *pfVar12) {
|
|
|
|
local_1c = *pfVar12;
|
|
|
|
}
|
|
|
|
fVar9 = local_1c;
|
|
|
|
pfVar12 = pfVar12 + 4;
|
|
|
|
iVar13 = iVar13 + -1;
|
|
|
|
} while (iVar13 != 0);
|
|
|
|
fVar5 = local_34[4] - local_14;
|
|
|
|
fVar7 = local_34[5] - local_10;
|
|
|
|
fVar4 = local_1c - local_c;
|
|
|
|
local_58 = fVar5 * fVar5 + fVar7 * fVar7 + fVar4 * fVar4;
|
|
|
|
if (_DAT_007ed300 <= local_58) {
|
|
|
|
fVar8 = 1.0 / local_58;
|
|
|
|
local_78 = fVar5 * fVar8;
|
|
|
|
local_74 = fVar7 * fVar8;
|
|
|
|
local_70 = fVar8 * fVar4;
|
|
|
|
local_54 = (local_34[4] + local_14) * _DAT_007938b8;
|
|
|
|
local_50 = (local_34[5] + local_10) * _DAT_007938b8;
|
|
|
|
local_4c = (local_1c + local_c) * _DAT_007938b8;
|
|
|
|
local_34[3] = 0.0;
|
|
|
|
local_34[2] = 0.0;
|
|
|
|
local_34[1] = 0.0;
|
|
|
|
local_34[0] = 0.0;
|
|
|
|
do {
|
|
|
|
local_44 = (pfVar17[-2] - local_54) * fVar5 * fVar8;
|
|
|
|
local_40 = (pfVar17[-1] - local_50) * fVar7 * fVar8;
|
|
|
|
fVar2 = *pfVar17;
|
|
|
|
pfVar17 = pfVar17 + 4;
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
fVar2 = (fVar2 - local_4c) * fVar8 * fVar4;
|
|
|
|
fVar6 = local_40 + fVar2 + local_44;
|
|
|
|
local_34[0] = fVar6 * fVar6 + local_34[0];
|
|
|
|
fVar6 = (local_40 + local_44) - fVar2;
|
|
|
|
local_34[1] = fVar6 * fVar6 + local_34[1];
|
|
|
|
fVar6 = (local_44 - local_40) + fVar2;
|
|
|
|
local_34[2] = fVar6 * fVar6 + local_34[2];
|
|
|
|
fVar2 = (local_44 - local_40) - fVar2;
|
|
|
|
local_34[3] = fVar2 * fVar2 + local_34[3];
|
|
|
|
} while (iVar11 != 0);
|
|
|
|
uVar16 = 0;
|
|
|
|
uVar14 = 1;
|
|
|
|
do {
|
|
|
|
if (local_34[0] < local_34[uVar14]) {
|
|
|
|
local_34[0] = local_34[uVar14];
|
|
|
|
uVar16 = uVar14;
|
|
|
|
}
|
|
|
|
uVar14 = uVar14 + 1;
|
|
|
|
} while (uVar14 < 4);
|
|
|
|
if ((uVar16 & 2) != 0) {
|
|
|
|
local_10 = local_34[5];
|
|
|
|
local_34[5] = fVar3;
|
|
|
|
}
|
|
|
|
if ((uVar16 & 1) != 0) {
|
|
|
|
local_1c = local_c;
|
|
|
|
local_c = fVar9;
|
|
|
|
}
|
|
|
|
if (_DAT_007f2b98 <= local_58) {
|
|
|
|
iVar11 = (int)param_4 + -1;
|
|
|
|
local_58 = (float)iVar11;
|
|
|
|
if (iVar11 < 0) {
|
|
|
|
local_58 = local_58 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
param_4 = (float)CONCAT22((short)((uint)iVar11 >> 0x10),in_FPUControlWord);
|
|
|
|
local_64 = 0;
|
|
|
|
local_7c = param_4;
|
|
|
|
while( true ) {
|
|
|
|
iVar11 = 0x10;
|
|
|
|
if (iVar10 != 0) {
|
|
|
|
pfVar12 = local_c4 + 1;
|
|
|
|
iVar15 = (int)local_68 - (int)local_5c;
|
|
|
|
pfVar17 = local_5c;
|
|
|
|
iVar13 = iVar10;
|
|
|
|
do {
|
|
|
|
pfVar12[-1] = local_34[4] * *(float *)(iVar15 + (int)pfVar17) + local_14 * *pfVar17;
|
|
|
|
*pfVar12 = local_34[5] * *(float *)(iVar15 + (int)pfVar17) + local_10 * *pfVar17;
|
|
|
|
fVar3 = *pfVar17;
|
|
|
|
pfVar1 = (float *)(iVar15 + (int)pfVar17);
|
|
|
|
pfVar17 = pfVar17 + 1;
|
|
|
|
pfVar12[1] = local_1c * *pfVar1 + local_c * fVar3;
|
|
|
|
pfVar12 = pfVar12 + 4;
|
|
|
|
iVar13 = iVar13 + -1;
|
|
|
|
} while (iVar13 != 0);
|
|
|
|
}
|
|
|
|
fVar9 = local_34[4] - local_14;
|
|
|
|
fVar3 = local_34[5] - local_10;
|
|
|
|
fVar7 = local_1c - local_c;
|
|
|
|
fVar5 = fVar9 * fVar9 + fVar3 * fVar3 + fVar7 * fVar7;
|
|
|
|
if (fVar5 < _DAT_007f2b98) break;
|
|
|
|
fVar5 = local_58 / fVar5;
|
|
|
|
local_44 = fVar5 * fVar9;
|
|
|
|
local_40 = fVar3 * fVar5;
|
|
|
|
local_3c = fVar5 * fVar7;
|
|
|
|
local_34[2] = 0.0;
|
|
|
|
local_34[1] = 0.0;
|
|
|
|
local_34[0] = 0.0;
|
|
|
|
local_4c = 0.0;
|
|
|
|
local_50 = 0.0;
|
|
|
|
local_54 = 0.0;
|
|
|
|
param_3 = 0.0;
|
|
|
|
param_4 = 0.0;
|
|
|
|
pfVar12 = local_80;
|
|
|
|
do {
|
|
|
|
fVar4 = (*pfVar12 - local_c) * fVar5 * fVar7 +
|
|
|
|
(pfVar12[-2] - local_14) * fVar5 * fVar9 +
|
|
|
|
(pfVar12[-1] - local_10) * fVar3 * fVar5;
|
|
|
|
local_60 = fVar4;
|
|
|
|
if (fVar4 < local_58) {
|
|
|
|
local_60 = fVar4 + _DAT_007938b8;
|
|
|
|
local_84 = (int)ROUND(fVar4 + _DAT_007938b8);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_84 = iVar10 + -1;
|
|
|
|
}
|
|
|
|
pfVar17 = pfVar12 + -2;
|
|
|
|
local_74 = local_c4[local_84 * 4 + 1] - pfVar12[-1];
|
|
|
|
fVar4 = *pfVar12;
|
|
|
|
fVar2 = local_5c[local_84] * _DAT_007c7624;
|
|
|
|
pfVar12 = pfVar12 + 4;
|
|
|
|
iVar11 = iVar11 + -1;
|
|
|
|
fVar8 = (float)local_68[local_84] * _DAT_007c7624;
|
|
|
|
param_4 = fVar2 * local_5c[local_84] + param_4;
|
|
|
|
local_54 = fVar2 * (local_c4[local_84 * 4] - *pfVar17) + local_54;
|
|
|
|
local_50 = fVar2 * local_74 + local_50;
|
|
|
|
local_4c = fVar2 * (local_c4[local_84 * 4 + 2] - fVar4) + local_4c;
|
|
|
|
param_3 = fVar8 * (float)local_68[local_84] + param_3;
|
|
|
|
local_34[0] = fVar8 * (local_c4[local_84 * 4] - *pfVar17) + local_34[0];
|
|
|
|
local_34[1] = local_74 * fVar8 + local_34[1];
|
|
|
|
local_34[2] = fVar8 * (local_c4[local_84 * 4 + 2] - fVar4) + local_34[2];
|
|
|
|
} while (iVar11 != 0);
|
|
|
|
if (DAT_00796344 < param_4) {
|
|
|
|
param_4 = _DAT_0079a1a0 / param_4;
|
|
|
|
local_14 = local_54 * param_4 + local_14;
|
|
|
|
local_10 = local_50 * param_4 + local_10;
|
|
|
|
local_c = param_4 * local_4c + local_c;
|
|
|
|
}
|
|
|
|
if (DAT_00796344 < param_3) {
|
|
|
|
param_3 = _DAT_0079a1a0 / param_3;
|
|
|
|
local_34[4] = local_34[0] * param_3 + local_34[4];
|
|
|
|
local_34[5] = local_34[1] * param_3 + local_34[5];
|
|
|
|
local_1c = param_3 * local_34[2] + local_1c;
|
|
|
|
}
|
|
|
|
if (((((local_54 * local_54 < _DAT_007f2b94) && (local_50 * local_50 < _DAT_007f2b94)) &&
|
|
|
|
(local_4c * local_4c < _DAT_007f2b94)) &&
|
|
|
|
(((local_34[0] * local_34[0] < _DAT_007f2b94 &&
|
|
|
|
(local_34[1] * local_34[1] < _DAT_007f2b94)) &&
|
|
|
|
(local_34[2] * local_34[2] < _DAT_007f2b94)))) ||
|
|
|
|
(local_64 = local_64 + 1, 7 < local_64)) break;
|
|
|
|
}
|
|
|
|
*param_1 = local_14;
|
|
|
|
param_1[1] = local_10;
|
|
|
|
param_1[2] = local_c;
|
|
|
|
*param_2 = local_34[4];
|
|
|
|
param_2[1] = local_34[5];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = local_14;
|
|
|
|
param_1[1] = local_10;
|
|
|
|
param_1[2] = local_c;
|
|
|
|
param_2[1] = local_34[5];
|
|
|
|
*param_2 = local_34[4];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = local_14;
|
|
|
|
param_1[1] = local_10;
|
|
|
|
param_1[2] = local_c;
|
|
|
|
param_2[1] = local_34[5];
|
|
|
|
*param_2 = local_34[4];
|
|
|
|
}
|
|
|
|
param_2[2] = local_1c;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00601346 at 0x00601346 (size: 2387) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 FUN_00601346(ushort *param_1,float param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
int in_EAX;
|
|
|
|
float *pfVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
int iVar7;
|
|
|
|
int iVar8;
|
|
|
|
ushort uVar9;
|
|
|
|
uint uVar10;
|
|
|
|
uint uVar11;
|
|
|
|
ushort uVar12;
|
|
|
|
int iVar13;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
undefined2 uVar14;
|
|
|
|
float local_2e0;
|
|
|
|
float local_2dc [63];
|
|
|
|
float local_1e0;
|
|
|
|
float local_1dc;
|
|
|
|
undefined1 local_1d8 [4];
|
|
|
|
undefined1 local_1d4 [4];
|
|
|
|
undefined1 local_1d0 [4];
|
|
|
|
undefined1 local_1cc [20];
|
|
|
|
undefined1 local_1b8 [4];
|
|
|
|
undefined1 local_1b4 [4];
|
|
|
|
undefined1 local_1b0 [4];
|
|
|
|
undefined1 local_1ac [4];
|
|
|
|
undefined1 local_1a8 [4];
|
|
|
|
float local_1a4;
|
|
|
|
float local_1a0 [2];
|
|
|
|
undefined1 local_198 [4];
|
|
|
|
undefined1 local_194 [4];
|
|
|
|
undefined1 local_190 [4];
|
|
|
|
undefined1 local_18c [172];
|
|
|
|
int local_e0;
|
|
|
|
float local_dc;
|
|
|
|
float local_d8;
|
|
|
|
float local_d4;
|
|
|
|
int local_cc;
|
|
|
|
int local_c8;
|
|
|
|
int local_c4;
|
|
|
|
undefined1 *local_c0;
|
|
|
|
undefined1 *local_bc;
|
|
|
|
int local_b8;
|
|
|
|
undefined1 *local_b4;
|
|
|
|
undefined1 *local_b0;
|
|
|
|
undefined1 *local_ac;
|
|
|
|
float local_a8 [4];
|
|
|
|
float local_98;
|
|
|
|
float local_94;
|
|
|
|
float local_90;
|
|
|
|
float local_8c;
|
|
|
|
float local_88;
|
|
|
|
float local_84;
|
|
|
|
float local_80;
|
|
|
|
float local_7c;
|
|
|
|
float local_78;
|
|
|
|
float local_74;
|
|
|
|
float local_70;
|
|
|
|
float local_6c;
|
|
|
|
undefined1 *local_68;
|
|
|
|
undefined1 *local_64;
|
|
|
|
undefined1 *local_60;
|
|
|
|
undefined4 local_5c;
|
|
|
|
undefined1 *local_58;
|
|
|
|
float local_54;
|
|
|
|
float local_50;
|
|
|
|
float local_4c;
|
|
|
|
float fStack_48;
|
|
|
|
float local_44;
|
|
|
|
float local_40;
|
|
|
|
float local_3c;
|
|
|
|
undefined1 *local_34;
|
|
|
|
float local_30;
|
|
|
|
undefined1 *local_2c;
|
|
|
|
int local_28;
|
|
|
|
undefined1 *local_24;
|
|
|
|
float local_20;
|
|
|
|
float local_1c;
|
|
|
|
float local_18;
|
|
|
|
float local_14;
|
|
|
|
float fStack_10;
|
|
|
|
float *local_c;
|
|
|
|
undefined *local_8;
|
|
|
|
|
|
|
|
if (param_2 == 0.0) {
|
|
|
|
local_28 = 4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 0;
|
|
|
|
pfVar5 = (float *)(in_EAX + 0xc);
|
|
|
|
iVar13 = 0x10;
|
|
|
|
do {
|
|
|
|
if (*pfVar5 < _DAT_007938b8) {
|
|
|
|
iVar8 = iVar8 + 1;
|
|
|
|
}
|
|
|
|
pfVar5 = pfVar5 + 4;
|
|
|
|
iVar13 = iVar13 + -1;
|
|
|
|
} while (iVar13 != 0);
|
|
|
|
if (iVar8 == 0x10) {
|
|
|
|
param_1[1] = 0xffff;
|
|
|
|
param_1[2] = 0xffff;
|
|
|
|
param_1[3] = 0xffff;
|
|
|
|
*param_1 = 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
local_28 = 4 - (uint)(iVar8 != 0);
|
|
|
|
}
|
|
|
|
if (param_3 != 0) {
|
|
|
|
pfVar5 = &local_1e0;
|
|
|
|
for (iVar13 = 0x40; iVar13 != 0; iVar13 = iVar13 + -1) {
|
|
|
|
*pfVar5 = 0.0;
|
|
|
|
pfVar5 = pfVar5 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_2 = (float)CONCAT22(param_2._2_2_,in_FPUControlWord);
|
|
|
|
local_b8 = (int)&local_1e0 - in_EAX;
|
|
|
|
local_64 = (undefined1 *)((int)local_2dc - in_EAX);
|
|
|
|
local_58 = local_1d8 + -in_EAX;
|
|
|
|
local_c0 = local_1d4 + -in_EAX;
|
|
|
|
local_b4 = local_1d0 + -in_EAX;
|
|
|
|
local_60 = local_1b8 + -in_EAX;
|
|
|
|
local_bc = local_1b4 + -in_EAX;
|
|
|
|
local_b0 = local_1b0 + -in_EAX;
|
|
|
|
local_2c = local_1a8 + -in_EAX;
|
|
|
|
local_24 = local_198 + -in_EAX;
|
|
|
|
local_ac = local_194 + -in_EAX;
|
|
|
|
local_34 = local_190 + -in_EAX;
|
|
|
|
iVar13 = (int)&local_1a4 - in_EAX;
|
|
|
|
iVar8 = (int)local_1a0 - in_EAX;
|
|
|
|
local_5c = param_2;
|
|
|
|
local_30 = (float)((int)&local_2e0 - in_EAX);
|
|
|
|
param_2 = 0.0;
|
|
|
|
pfVar5 = (float *)(in_EAX + 8);
|
|
|
|
local_e0 = iVar13;
|
|
|
|
local_c8 = iVar8;
|
|
|
|
uVar11 = 0;
|
|
|
|
do {
|
|
|
|
local_1c = pfVar5[-2];
|
|
|
|
local_18 = pfVar5[-1];
|
|
|
|
local_14 = *pfVar5;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
local_1c = pfVar5[-2] + *(float *)((int)&local_1e0 + uVar11);
|
|
|
|
local_18 = pfVar5[-1] + *(float *)(local_1d8 + (uVar11 - 4));
|
|
|
|
local_14 = *pfVar5 + *(float *)(local_b8 + (int)pfVar5);
|
|
|
|
}
|
|
|
|
local_cc = (int)ROUND(local_1c * _DAT_007edeec + _DAT_007938b8);
|
|
|
|
fVar1 = (float)local_cc * _DAT_007edee8;
|
|
|
|
local_20 = fVar1;
|
|
|
|
*(float *)((int)&local_2e0 + uVar11) = fVar1;
|
|
|
|
local_c4 = (int)ROUND(local_18 * _DAT_007edee4 + _DAT_007938b8);
|
|
|
|
fVar2 = (float)local_c4 * _DAT_007edee0;
|
|
|
|
local_8 = (undefined *)fVar2;
|
|
|
|
*(float *)((int)local_2dc + uVar11) = fVar2;
|
|
|
|
local_68 = (undefined1 *)(int)ROUND(local_14 * _DAT_007edeec + _DAT_007938b8);
|
|
|
|
local_c = (float *)local_68;
|
|
|
|
fVar3 = (float)(int)local_68 * _DAT_007edee8;
|
|
|
|
*(float *)((int)local_30 + (int)pfVar5) = fVar3;
|
|
|
|
*(undefined4 *)((int)local_64 + (int)pfVar5) = 0x3f800000;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
fVar1 = local_1c - fVar1;
|
|
|
|
uVar10 = (uint)param_2 & 3;
|
|
|
|
fVar2 = local_18 - fVar2;
|
|
|
|
local_c = (float *)uVar10;
|
|
|
|
local_40 = fVar2;
|
|
|
|
fVar4 = local_14 - fVar3;
|
|
|
|
local_3c = fVar4;
|
|
|
|
if (uVar10 != 3) {
|
|
|
|
*(float *)(local_58 + (int)pfVar5) =
|
|
|
|
fVar1 * _DAT_007f2bf4 + *(float *)(local_58 + (int)pfVar5);
|
|
|
|
*(float *)(local_c0 + (int)pfVar5) =
|
|
|
|
fVar2 * _DAT_007f2bf4 + *(float *)(local_c0 + (int)pfVar5);
|
|
|
|
*(float *)(local_b4 + (int)pfVar5) =
|
|
|
|
fVar4 * _DAT_007f2bf4 + *(float *)(local_b4 + (int)pfVar5);
|
|
|
|
}
|
|
|
|
if (uVar11 < 0xc0) {
|
|
|
|
if (uVar10 != 0) {
|
|
|
|
*(float *)(local_60 + (int)pfVar5) =
|
|
|
|
fVar1 * _DAT_007edf08 + *(float *)(local_60 + (int)pfVar5);
|
|
|
|
*(float *)(local_bc + (int)pfVar5) =
|
|
|
|
fVar2 * _DAT_007edf08 + *(float *)(local_bc + (int)pfVar5);
|
|
|
|
*(float *)(local_b0 + (int)pfVar5) =
|
|
|
|
fVar4 * _DAT_007edf08 + *(float *)(local_b0 + (int)pfVar5);
|
|
|
|
}
|
|
|
|
*(float *)(local_2c + (int)pfVar5) =
|
|
|
|
fVar1 * _DAT_007edf04 + *(float *)(local_2c + (int)pfVar5);
|
|
|
|
*(float *)(iVar13 + (int)pfVar5) = fVar2 * _DAT_007edf04 + *(float *)(iVar13 + (int)pfVar5);
|
|
|
|
*(float *)(iVar8 + (int)pfVar5) = fVar4 * _DAT_007edf04 + *(float *)(iVar8 + (int)pfVar5);
|
|
|
|
if (uVar10 != 3) {
|
|
|
|
*(float *)(local_24 + (int)pfVar5) =
|
|
|
|
fVar1 * _DAT_007edf00 + *(float *)(local_24 + (int)pfVar5);
|
|
|
|
*(float *)(local_ac + (int)pfVar5) =
|
|
|
|
local_40 * _DAT_007edf00 + *(float *)(local_ac + (int)pfVar5);
|
|
|
|
*(float *)(local_34 + (int)pfVar5) =
|
|
|
|
local_3c * _DAT_007edf00 + *(float *)(local_34 + (int)pfVar5);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_2 = (float)((int)param_2 + 1);
|
|
|
|
uVar10 = uVar11 + 0x10;
|
|
|
|
*(float *)((int)&local_2e0 + uVar11) = local_20 * DAT_00827ac0;
|
|
|
|
*(float *)((int)local_2dc + uVar11) = (float)local_8 * DAT_00827ac4;
|
|
|
|
*(float *)((int)local_30 + (int)pfVar5) = fVar3 * DAT_00827ac8;
|
|
|
|
pfVar5 = pfVar5 + 4;
|
|
|
|
uVar11 = uVar10;
|
|
|
|
} while (uVar10 < 0x100);
|
|
|
|
uVar14 = (undefined2)local_5c;
|
|
|
|
FUN_00600dc6(&local_1c,&local_54,&local_2e0,local_28);
|
|
|
|
local_dc = local_1c * _DAT_00827ad0;
|
|
|
|
local_d8 = local_18 * _DAT_00827ad4;
|
|
|
|
local_d4 = local_14 * _DAT_00827ad8;
|
|
|
|
local_44 = local_54 * _DAT_00827ad0;
|
|
|
|
local_40 = local_50 * _DAT_00827ad4;
|
|
|
|
local_3c = local_4c * _DAT_00827ad8;
|
|
|
|
uVar6 = FUN_0060099c();
|
|
|
|
local_2c = (undefined1 *)uVar6;
|
|
|
|
local_24 = (undefined1 *)FUN_0060099c();
|
|
|
|
uVar9 = (ushort)uVar6;
|
|
|
|
uVar12 = (ushort)local_24;
|
|
|
|
if ((local_28 == 4) && (uVar9 == uVar12)) {
|
|
|
|
param_1[2] = 0;
|
|
|
|
param_1[3] = 0;
|
|
|
|
*param_1 = uVar9;
|
|
|
|
param_1[1] = uVar12;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
FUN_0060089a();
|
|
|
|
FUN_0060089a();
|
|
|
|
local_1c = local_dc * DAT_00827ac0;
|
|
|
|
local_18 = local_d8 * DAT_00827ac4;
|
|
|
|
local_14 = local_d4 * DAT_00827ac8;
|
|
|
|
local_54 = local_44 * DAT_00827ac0;
|
|
|
|
local_50 = local_40 * DAT_00827ac4;
|
|
|
|
local_4c = local_3c * DAT_00827ac8;
|
|
|
|
if ((local_28 == 3) == uVar9 <= uVar12) {
|
|
|
|
*param_1 = uVar9;
|
|
|
|
param_1[1] = uVar12;
|
|
|
|
local_a8[0] = local_1c;
|
|
|
|
local_a8[1] = local_18;
|
|
|
|
local_a8[2] = local_14;
|
|
|
|
local_a8[3] = fStack_10;
|
|
|
|
pfVar5 = &local_54;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
param_1[1] = uVar9;
|
|
|
|
*param_1 = uVar12;
|
|
|
|
local_a8[0] = local_54;
|
|
|
|
local_a8[1] = local_50;
|
|
|
|
local_a8[2] = local_4c;
|
|
|
|
local_a8[3] = fStack_48;
|
|
|
|
pfVar5 = &local_1c;
|
|
|
|
}
|
|
|
|
local_98 = *pfVar5;
|
|
|
|
local_94 = pfVar5[1];
|
|
|
|
local_90 = pfVar5[2];
|
|
|
|
local_8c = pfVar5[3];
|
|
|
|
fVar1 = *pfVar5 - local_a8[0];
|
|
|
|
if (local_28 == 3) {
|
|
|
|
local_8 = &DAT_007f2be8;
|
|
|
|
local_88 = _DAT_007938b8 * fVar1 + local_a8[0];
|
|
|
|
local_84 = (local_94 - local_a8[1]) * _DAT_007938b8 + local_a8[1];
|
|
|
|
local_80 = (local_90 - local_a8[2]) * _DAT_007938b8 + local_a8[2];
|
|
|
|
local_7c = (local_8c - local_a8[3]) * _DAT_007938b8 + local_a8[3];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_8 = &DAT_007f2bd8;
|
|
|
|
local_88 = _DAT_007e75f0 * fVar1 + local_a8[0];
|
|
|
|
local_84 = _DAT_007e75f0 * (local_94 - local_a8[1]) + local_a8[1];
|
|
|
|
local_80 = _DAT_007e75f0 * (local_90 - local_a8[2]) + local_a8[2];
|
|
|
|
local_7c = _DAT_007e75f0 * (local_8c - local_a8[3]) + local_a8[3];
|
|
|
|
local_78 = fVar1 * _DAT_007f2bd4 + local_a8[0];
|
|
|
|
local_74 = (local_94 - local_a8[1]) * _DAT_007f2bd4 + local_a8[1];
|
|
|
|
local_70 = (local_90 - local_a8[2]) * _DAT_007f2bd4 + local_a8[2];
|
|
|
|
local_6c = (local_8c - local_a8[3]) * _DAT_007f2bd4 + local_a8[3];
|
|
|
|
}
|
|
|
|
param_2 = local_90 - local_a8[2];
|
|
|
|
local_94 = local_94 - local_a8[1];
|
|
|
|
iVar13 = local_28 + -1;
|
|
|
|
local_30 = (float)iVar13;
|
|
|
|
if (iVar13 < 0) {
|
|
|
|
local_30 = local_30 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
if ((short)local_2c == (short)local_24) {
|
|
|
|
fVar2 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar2 = local_30 / (fVar1 * fVar1 + local_94 * local_94 + param_2 * param_2);
|
|
|
|
}
|
|
|
|
local_20 = 0.0;
|
|
|
|
local_54 = fVar1 * fVar2;
|
|
|
|
local_50 = fVar2 * local_94;
|
|
|
|
local_4c = fVar2 * param_2;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
pfVar5 = &local_1e0;
|
|
|
|
for (iVar8 = 0x40; iVar8 != 0; iVar8 = iVar8 + -1) {
|
|
|
|
*pfVar5 = 0.0;
|
|
|
|
pfVar5 = pfVar5 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_2._2_2_ = (undefined2)((uint)iVar13 >> 0x10);
|
|
|
|
param_2 = (float)CONCAT22(param_2._2_2_,uVar14);
|
|
|
|
local_5c = param_2;
|
|
|
|
local_c = &local_1e0;
|
|
|
|
local_58 = local_1cc + -in_EAX;
|
|
|
|
param_2 = 0.0;
|
|
|
|
local_64 = local_1ac + -in_EAX;
|
|
|
|
iVar13 = (int)local_2dc + (4 - in_EAX);
|
|
|
|
iVar8 = (int)local_1a0 + (4 - in_EAX);
|
|
|
|
pfVar5 = (float *)(in_EAX + 4);
|
|
|
|
local_24 = local_1d8 + (-4 - in_EAX);
|
|
|
|
local_68 = local_18c + -in_EAX;
|
|
|
|
do {
|
|
|
|
if ((local_28 != 3) || (_DAT_007938b8 <= pfVar5[2])) {
|
|
|
|
local_1c = DAT_00827ac0 * pfVar5[-1];
|
|
|
|
local_18 = DAT_00827ac4 * *pfVar5;
|
|
|
|
local_14 = DAT_00827ac8 * pfVar5[1];
|
|
|
|
if (param_3 != 0) {
|
|
|
|
local_1c = DAT_00827ac0 * pfVar5[-1] + *local_c;
|
|
|
|
local_18 = DAT_00827ac4 * *pfVar5 + *(float *)((int)pfVar5 + local_b8);
|
|
|
|
local_14 = DAT_00827ac8 * pfVar5[1] + *(float *)(local_24 + (int)pfVar5);
|
|
|
|
}
|
|
|
|
fVar1 = (local_1c - local_a8[0]) * local_54 +
|
|
|
|
(local_18 - local_a8[1]) * local_50 + (local_14 - local_a8[2]) * local_4c;
|
|
|
|
if (fVar1 < DAT_00796344 == (fVar1 == DAT_00796344)) {
|
|
|
|
if (fVar1 < local_30) {
|
|
|
|
local_2c = (undefined1 *)(fVar1 + _DAT_007938b8);
|
|
|
|
local_60 = (undefined1 *)(int)ROUND(fVar1 + _DAT_007938b8);
|
|
|
|
iVar7 = *(int *)(local_8 + (int)local_60 * 4);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = 0;
|
|
|
|
}
|
|
|
|
local_20 = (float)(iVar7 << 0x1e | (uint)local_20 >> 2);
|
|
|
|
if (param_3 != 0) {
|
|
|
|
uVar11 = (uint)param_2 & 3;
|
|
|
|
fVar2 = (local_1c - local_a8[iVar7 * 4]) * *(float *)(iVar13 + (int)pfVar5);
|
|
|
|
fVar3 = (local_18 - local_a8[iVar7 * 4 + 1]) * *(float *)(iVar13 + (int)pfVar5);
|
|
|
|
local_40 = fVar3;
|
|
|
|
fVar1 = (local_14 - local_a8[iVar7 * 4 + 2]) * *(float *)(iVar13 + (int)pfVar5);
|
|
|
|
local_3c = fVar1;
|
|
|
|
if (uVar11 != 3) {
|
|
|
|
*(float *)(local_c0 + (int)pfVar5) =
|
|
|
|
fVar2 * _DAT_007f2bf4 + *(float *)(local_c0 + (int)pfVar5);
|
|
|
|
*(float *)(local_b4 + (int)pfVar5) =
|
|
|
|
_DAT_007f2bf4 * fVar3 + *(float *)(local_b4 + (int)pfVar5);
|
|
|
|
*(float *)(local_58 + (int)pfVar5) =
|
|
|
|
fVar1 * _DAT_007f2bf4 + *(float *)(local_58 + (int)pfVar5);
|
|
|
|
}
|
|
|
|
if ((uint)param_2 < 0xc) {
|
|
|
|
if (uVar11 != 0) {
|
|
|
|
*(float *)(local_bc + (int)pfVar5) =
|
|
|
|
fVar2 * _DAT_007edf08 + *(float *)(local_bc + (int)pfVar5);
|
|
|
|
*(float *)(local_b0 + (int)pfVar5) =
|
|
|
|
_DAT_007edf08 * fVar3 + *(float *)(local_b0 + (int)pfVar5);
|
|
|
|
*(float *)(local_64 + (int)pfVar5) =
|
|
|
|
fVar1 * _DAT_007edf08 + *(float *)(local_64 + (int)pfVar5);
|
|
|
|
}
|
|
|
|
*(float *)(local_e0 + (int)pfVar5) =
|
|
|
|
fVar2 * _DAT_007edf04 + *(float *)(local_e0 + (int)pfVar5);
|
|
|
|
*(float *)(local_c8 + (int)pfVar5) =
|
|
|
|
fVar3 * _DAT_007edf04 + *(float *)(local_c8 + (int)pfVar5);
|
|
|
|
*(float *)(iVar8 + (int)pfVar5) =
|
|
|
|
fVar1 * _DAT_007edf04 + *(float *)(iVar8 + (int)pfVar5);
|
|
|
|
if (uVar11 != 3) {
|
|
|
|
*(float *)(local_ac + (int)pfVar5) =
|
|
|
|
fVar2 * _DAT_007edf00 + *(float *)(local_ac + (int)pfVar5);
|
|
|
|
*(float *)(local_34 + (int)pfVar5) =
|
|
|
|
local_40 * _DAT_007edf00 + *(float *)(local_34 + (int)pfVar5);
|
|
|
|
*(float *)(local_68 + (int)pfVar5) =
|
|
|
|
local_3c * _DAT_007edf00 + *(float *)(local_68 + (int)pfVar5);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_20 = (float)((uint)local_20 >> 2 | 0xc0000000);
|
|
|
|
}
|
|
|
|
param_2 = (float)((int)param_2 + 1);
|
|
|
|
local_c = local_c + 4;
|
|
|
|
pfVar5 = pfVar5 + 4;
|
|
|
|
} while ((uint)param_2 < 0x10);
|
|
|
|
*(float *)(param_1 + 2) = local_20;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00601c99 at 0x00601C99 (size: 322) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined4 FUN_00601c99(float *param_1,ushort *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
ushort uVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
float local_5c [4];
|
|
|
|
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;
|
|
|
|
undefined4 local_1c;
|
|
|
|
undefined4 local_18;
|
|
|
|
undefined4 local_14;
|
|
|
|
undefined4 local_10;
|
|
|
|
float local_c;
|
|
|
|
float local_8;
|
|
|
|
|
|
|
|
uVar2 = *param_2;
|
|
|
|
FUN_0060089a();
|
|
|
|
uVar3 = param_2[1];
|
|
|
|
FUN_0060089a();
|
|
|
|
if (uVar3 < uVar2) {
|
|
|
|
local_3c = (local_4c - local_5c[0]) * _DAT_007e75f0 + local_5c[0];
|
|
|
|
local_38 = (local_48 - local_5c[1]) * _DAT_007e75f0 + local_5c[1];
|
|
|
|
local_8 = local_44 - local_5c[2];
|
|
|
|
local_34 = local_8 * _DAT_007e75f0 + local_5c[2];
|
|
|
|
local_c = local_40 - local_5c[3];
|
|
|
|
local_30 = local_c * _DAT_007e75f0 + local_5c[3];
|
|
|
|
local_2c = (local_4c - local_5c[0]) * _DAT_007f2bd4 + local_5c[0];
|
|
|
|
local_28 = (local_48 - local_5c[1]) * _DAT_007f2bd4 + local_5c[1];
|
|
|
|
local_24 = local_8 * _DAT_007f2bd4 + local_5c[2];
|
|
|
|
local_20 = local_c * _DAT_007f2bd4 + local_5c[3];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_3c = (local_4c - local_5c[0]) * _DAT_007938b8 + local_5c[0];
|
|
|
|
local_38 = (local_48 - local_5c[1]) * _DAT_007938b8 + local_5c[1];
|
|
|
|
local_34 = (local_44 - local_5c[2]) * _DAT_007938b8 + local_5c[2];
|
|
|
|
local_30 = (local_40 - local_5c[3]) * _DAT_007938b8 + local_5c[3];
|
|
|
|
local_1c = 0;
|
|
|
|
local_18 = 0;
|
|
|
|
local_14 = 0;
|
|
|
|
local_10 = 0;
|
|
|
|
local_2c = 0.0;
|
|
|
|
local_28 = 0.0;
|
|
|
|
local_24 = 0.0;
|
|
|
|
local_20 = 0.0;
|
|
|
|
}
|
|
|
|
uVar6 = *(uint *)(param_2 + 2);
|
|
|
|
iVar4 = 0x10;
|
|
|
|
do {
|
|
|
|
uVar5 = uVar6 & 3;
|
|
|
|
*param_1 = local_5c[uVar5 * 4];
|
|
|
|
param_1[1] = local_5c[uVar5 * 4 + 1];
|
|
|
|
pfVar1 = param_1 + 3;
|
|
|
|
param_1[2] = local_5c[uVar5 * 4 + 2];
|
|
|
|
param_1 = param_1 + 4;
|
|
|
|
uVar6 = uVar6 >> 2;
|
|
|
|
iVar4 = iVar4 + -1;
|
|
|
|
*pfVar1 = local_5c[uVar5 * 4 + 3];
|
|
|
|
} while (iVar4 != 0);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00601ddb at 0x00601DDB (size: 133) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00601e14) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00601e43) */
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
int FUN_00601ddb(int param_1,uint *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
int iVar2;
|
|
|
|
float *pfVar3;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
iVar2 = FUN_00601c99(param_1,param_2 + 2);
|
|
|
|
fVar1 = _DAT_0079cc80;
|
|
|
|
if (-1 < iVar2) {
|
|
|
|
uVar4 = *param_2;
|
|
|
|
iVar2 = 8;
|
|
|
|
pfVar3 = (float *)(param_1 + 0xc);
|
|
|
|
do {
|
|
|
|
uVar5 = uVar4 & 0xf;
|
|
|
|
uVar4 = uVar4 >> 4;
|
|
|
|
*pfVar3 = (float)uVar5 * fVar1;
|
|
|
|
pfVar3 = pfVar3 + 4;
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
uVar4 = param_2[1];
|
|
|
|
iVar2 = 8;
|
|
|
|
pfVar3 = (float *)(param_1 + 0x8c);
|
|
|
|
do {
|
|
|
|
uVar5 = uVar4 & 0xf;
|
|
|
|
uVar4 = uVar4 >> 4;
|
|
|
|
*pfVar3 = (float)uVar5 * fVar1;
|
|
|
|
pfVar3 = pfVar3 + 4;
|
|
|
|
iVar2 = iVar2 + -1;
|
|
|
|
} while (iVar2 != 0);
|
|
|
|
iVar2 = 0;
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00601e60 at 0x00601E60 (size: 318) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
int FUN_00601e60(int param_1,byte *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
int iVar3;
|
|
|
|
uint uVar4;
|
|
|
|
float *pfVar5;
|
|
|
|
uint uVar6;
|
|
|
|
float local_24 [8];
|
|
|
|
|
|
|
|
iVar3 = FUN_00601c99(param_1,param_2 + 8);
|
|
|
|
if (-1 < iVar3) {
|
|
|
|
local_24[0] = (float)*param_2 * _DAT_00799208;
|
|
|
|
local_24[1] = (float)param_2[1] * _DAT_00799208;
|
|
|
|
if (param_2[1] < *param_2) {
|
|
|
|
uVar4 = 1;
|
|
|
|
do {
|
|
|
|
fVar1 = (float)(int)(7 - uVar4);
|
|
|
|
if ((int)(7 - uVar4) < 0) {
|
|
|
|
fVar1 = fVar1 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar2 = (float)(int)uVar4;
|
|
|
|
if ((int)uVar4 < 0) {
|
|
|
|
fVar2 = fVar2 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
local_24[uVar4] = (fVar2 * local_24[1] + fVar1 * local_24[0]) * _DAT_007edf0c;
|
|
|
|
} while (uVar4 < 7);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar4 = 1;
|
|
|
|
do {
|
|
|
|
fVar1 = (float)(int)(5 - uVar4);
|
|
|
|
if ((int)(5 - uVar4) < 0) {
|
|
|
|
fVar1 = fVar1 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar2 = (float)(int)uVar4;
|
|
|
|
if ((int)uVar4 < 0) {
|
|
|
|
fVar2 = fVar2 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 + 1;
|
|
|
|
local_24[uVar4] = (fVar2 * local_24[1] + fVar1 * local_24[0]) * _DAT_0079a1e8;
|
|
|
|
} while (uVar4 < 5);
|
|
|
|
local_24[6] = 0.0;
|
|
|
|
local_24[7] = 1.0;
|
|
|
|
}
|
|
|
|
iVar3 = 8;
|
|
|
|
uVar4 = (uint)*(uint3 *)(param_2 + 2);
|
|
|
|
pfVar5 = (float *)(param_1 + 0xc);
|
|
|
|
do {
|
|
|
|
uVar6 = uVar4 & 7;
|
|
|
|
uVar4 = uVar4 >> 3;
|
|
|
|
*pfVar5 = local_24[uVar6];
|
|
|
|
pfVar5 = pfVar5 + 4;
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
} while (iVar3 != 0);
|
|
|
|
iVar3 = 8;
|
|
|
|
uVar4 = (uint)*(uint3 *)(param_2 + 5);
|
|
|
|
pfVar5 = (float *)(param_1 + 0x8c);
|
|
|
|
do {
|
|
|
|
uVar6 = uVar4 & 7;
|
|
|
|
uVar4 = uVar4 >> 3;
|
|
|
|
*pfVar5 = local_24[uVar6];
|
|
|
|
pfVar5 = pfVar5 + 4;
|
|
|
|
iVar3 = iVar3 + -1;
|
|
|
|
} while (iVar3 != 0);
|
|
|
|
iVar3 = 0;
|
|
|
|
}
|
|
|
|
return iVar3;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00601f9e at 0x00601F9E (size: 292) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
int FUN_00601f9e(undefined4 param_1,int param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
int iVar5;
|
|
|
|
float *pfVar6;
|
|
|
|
uint uVar7;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_150 [64];
|
|
|
|
float local_50 [16];
|
|
|
|
uint local_10;
|
|
|
|
uint local_c;
|
|
|
|
float local_8;
|
|
|
|
|
|
|
|
if (param_3 != 0) {
|
|
|
|
pfVar4 = local_50;
|
|
|
|
for (iVar5 = 0x10; iVar5 != 0; iVar5 = iVar5 + -1) {
|
|
|
|
*pfVar4 = 0.0;
|
|
|
|
pfVar4 = pfVar4 + 1;
|
|
|
|
}
|
|
|
|
local_8 = (float)CONCAT22(local_8._2_2_,in_FPUControlWord);
|
|
|
|
local_c = (uint)local_8 | 0xc00;
|
|
|
|
local_10 = (uint)local_8;
|
|
|
|
uVar7 = 0;
|
|
|
|
pfVar6 = local_150 + 1;
|
|
|
|
pfVar4 = (float *)(param_2 + 0xc);
|
|
|
|
do {
|
|
|
|
fVar2 = local_50[uVar7];
|
|
|
|
pfVar6[-1] = pfVar4[-3];
|
|
|
|
fVar3 = *pfVar4;
|
|
|
|
*pfVar6 = pfVar4[-2];
|
|
|
|
local_8 = fVar2 + fVar3;
|
|
|
|
pfVar6[1] = pfVar4[-1];
|
|
|
|
iVar5 = (int)ROUND(fVar2 + fVar3 + _DAT_007938b8);
|
|
|
|
local_c = iVar5;
|
|
|
|
uVar1 = uVar7 & 3;
|
|
|
|
*(float *)(((int)local_150 - param_2) + (int)pfVar4) = (float)iVar5;
|
|
|
|
fVar2 = local_8 - (float)iVar5;
|
|
|
|
if (uVar1 != 3) {
|
|
|
|
local_50[uVar7 + 1] = _DAT_007f2bf4 * fVar2 + local_50[uVar7 + 1];
|
|
|
|
}
|
|
|
|
if (uVar7 < 0xc) {
|
|
|
|
if (uVar1 != 0) {
|
|
|
|
local_50[uVar7 + 3] = _DAT_007edf08 * fVar2 + local_50[uVar7 + 3];
|
|
|
|
}
|
|
|
|
local_50[uVar7 + 4] = _DAT_007edf04 * fVar2 + local_50[uVar7 + 4];
|
|
|
|
if (uVar1 != 3) {
|
|
|
|
local_50[uVar7 + 5] = fVar2 * _DAT_007edf00 + local_50[uVar7 + 5];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar7 = uVar7 + 1;
|
|
|
|
pfVar6 = pfVar6 + 4;
|
|
|
|
pfVar4 = pfVar4 + 4;
|
|
|
|
} while (uVar7 < 0x10);
|
|
|
|
}
|
|
|
|
iVar5 = FUN_00601346(param_1,1,param_3);
|
|
|
|
if (-1 < iVar5) {
|
|
|
|
iVar5 = 0;
|
|
|
|
}
|
|
|
|
return iVar5;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006020c2 at 0x006020C2 (size: 303) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_006020c2(undefined4 *param_1,int param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint *puVar1;
|
|
|
|
float fVar2;
|
|
|
|
undefined4 *puVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
float *pfVar7;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_54 [17];
|
|
|
|
float local_10;
|
|
|
|
float local_c;
|
|
|
|
float *local_8;
|
|
|
|
|
|
|
|
puVar3 = param_1;
|
|
|
|
uVar5 = 0;
|
|
|
|
*param_1 = 0;
|
|
|
|
param_1[1] = 0;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
pfVar7 = local_54;
|
|
|
|
for (iVar4 = 0x10; iVar4 != 0; iVar4 = iVar4 + -1) {
|
|
|
|
*pfVar7 = 0.0;
|
|
|
|
pfVar7 = pfVar7 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_1 = (undefined4 *)CONCAT22(param_1._2_2_,in_FPUControlWord);
|
|
|
|
local_54[0x10] = (float)param_1;
|
|
|
|
local_8 = (float *)(param_2 + 0xc);
|
|
|
|
do {
|
|
|
|
param_1 = (undefined4 *)*local_8;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
param_1 = (undefined4 *)((float)param_1 + local_54[uVar5]);
|
|
|
|
}
|
|
|
|
local_c = (float)param_1 * _DAT_0079c6d8 + _DAT_007938b8;
|
|
|
|
local_10 = (float)(int)ROUND(local_c);
|
|
|
|
puVar1 = puVar3 + (uVar5 >> 3);
|
|
|
|
*puVar1 = *puVar1 >> 4 | (int)local_10 << 0x1c;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
fVar2 = (float)(int)local_10;
|
|
|
|
if ((int)local_10 < 0) {
|
|
|
|
fVar2 = fVar2 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
uVar6 = uVar5 & 3;
|
|
|
|
fVar2 = (float)param_1 - fVar2 * _DAT_0079cc80;
|
|
|
|
if (uVar6 != 3) {
|
|
|
|
local_54[uVar5 + 1] = _DAT_007f2bf4 * fVar2 + local_54[uVar5 + 1];
|
|
|
|
}
|
|
|
|
local_c = local_10;
|
|
|
|
if (uVar5 < 0xc) {
|
|
|
|
if (uVar6 != 0) {
|
|
|
|
local_54[uVar5 + 3] = _DAT_007edf08 * fVar2 + local_54[uVar5 + 3];
|
|
|
|
}
|
|
|
|
local_54[uVar5 + 4] = _DAT_007edf04 * fVar2 + local_54[uVar5 + 4];
|
|
|
|
if (uVar6 != 3) {
|
|
|
|
local_54[uVar5 + 5] = fVar2 * _DAT_007edf00 + local_54[uVar5 + 5];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_8 = local_8 + 4;
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
} while (uVar5 < 0x10);
|
|
|
|
FUN_00601346(puVar3 + 2,0,param_3);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006021f1 at 0x006021F1 (size: 1236) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
int FUN_006021f1(char *param_1,float param_2,int param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
char *pcVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
char cVar6;
|
|
|
|
char cVar7;
|
|
|
|
int iVar8;
|
|
|
|
int iVar9;
|
|
|
|
uint uVar10;
|
|
|
|
uint uVar11;
|
|
|
|
uint uVar12;
|
|
|
|
uint uVar13;
|
|
|
|
float *pfVar14;
|
|
|
|
float *pfVar15;
|
|
|
|
undefined2 in_FPUControlWord;
|
|
|
|
float local_a4 [32];
|
|
|
|
int local_24;
|
|
|
|
float local_20;
|
|
|
|
float *local_1c;
|
|
|
|
uint local_18;
|
|
|
|
float *local_14;
|
|
|
|
float local_10;
|
|
|
|
undefined *local_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
|
|
|
|
pcVar1 = param_1;
|
|
|
|
pfVar15 = (float *)((int)param_2 + 0xc);
|
|
|
|
uVar13 = 0;
|
|
|
|
local_1c = pfVar15;
|
|
|
|
local_14 = (float *)*pfVar15;
|
|
|
|
local_8 = (float *)*pfVar15;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
pfVar14 = local_a4;
|
|
|
|
for (iVar8 = 0x10; iVar8 != 0; iVar8 = iVar8 + -1) {
|
|
|
|
*pfVar14 = 0.0;
|
|
|
|
pfVar14 = pfVar14 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_2 = (float)CONCAT22(param_2._2_2_,in_FPUControlWord);
|
|
|
|
local_c = (undefined *)((uint)param_2 | 0xc00);
|
|
|
|
local_18 = (uint)param_2;
|
|
|
|
do {
|
|
|
|
param_2 = *pfVar15;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
param_2 = param_2 + local_a4[uVar13];
|
|
|
|
}
|
|
|
|
local_10 = (float)(int)ROUND(param_2 * _DAT_00797188 + _DAT_007938b8);
|
|
|
|
local_c = (undefined *)local_10;
|
|
|
|
fVar2 = (float)(int)local_10 * _DAT_00799208;
|
|
|
|
local_a4[uVar13 + 0x10] = fVar2;
|
|
|
|
if ((float)local_14 <= fVar2) {
|
|
|
|
if ((float)local_8 < fVar2) {
|
|
|
|
local_8 = (float *)fVar2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_14 = (float *)fVar2;
|
|
|
|
}
|
|
|
|
if (param_3 != 0) {
|
|
|
|
fVar2 = param_2 - fVar2;
|
|
|
|
uVar10 = uVar13 & 3;
|
|
|
|
if (uVar10 != 3) {
|
|
|
|
local_a4[uVar13 + 1] = _DAT_007f2bf4 * fVar2 + local_a4[uVar13 + 1];
|
|
|
|
}
|
|
|
|
if (uVar13 < 0xc) {
|
|
|
|
if (uVar10 != 0) {
|
|
|
|
local_a4[uVar13 + 3] = _DAT_007edf08 * fVar2 + local_a4[uVar13 + 3];
|
|
|
|
}
|
|
|
|
local_a4[uVar13 + 4] = _DAT_007edf04 * fVar2 + local_a4[uVar13 + 4];
|
|
|
|
if (uVar10 != 3) {
|
|
|
|
local_a4[uVar13 + 5] = fVar2 * _DAT_007edf00 + local_a4[uVar13 + 5];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar13 = uVar13 + 1;
|
|
|
|
pfVar15 = pfVar15 + 4;
|
|
|
|
} while (uVar13 < 0x10);
|
|
|
|
iVar8 = FUN_00601346(param_1 + 8,0,param_3);
|
|
|
|
if (iVar8 < 0) {
|
|
|
|
return iVar8;
|
|
|
|
}
|
|
|
|
if (_DAT_007938b0 == (float)local_14) {
|
|
|
|
*param_1 = -1;
|
|
|
|
param_1[1] = -1;
|
|
|
|
LAB_00602424:
|
|
|
|
pcVar1[2] = '\0';
|
|
|
|
pcVar1[3] = '\0';
|
|
|
|
pcVar1[4] = '\0';
|
|
|
|
pcVar1[5] = '\0';
|
|
|
|
pcVar1[6] = '\0';
|
|
|
|
pcVar1[7] = '\0';
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if ((DAT_00796344 == (float)local_14) || (_DAT_007938b0 == (float)local_8)) {
|
|
|
|
param_1 = (char *)0x6;
|
|
|
|
iVar8 = 6;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 8;
|
|
|
|
param_1 = (char *)0x8;
|
|
|
|
}
|
|
|
|
FUN_00600a9f(&local_10,¶m_2,local_a4 + 0x10,iVar8);
|
|
|
|
uVar13 = (uint)ROUND(local_10 * _DAT_00797188 + _DAT_007938b8);
|
|
|
|
uVar10 = (uint)ROUND(param_2 * _DAT_00797188 + _DAT_007938b8);
|
|
|
|
fVar2 = (float)(uVar13 & 0xff) * _DAT_00799208;
|
|
|
|
fVar3 = (float)(uVar10 & 0xff) * _DAT_00799208;
|
|
|
|
cVar6 = (char)uVar13;
|
|
|
|
cVar7 = (char)uVar10;
|
|
|
|
if (iVar8 == 8) {
|
|
|
|
if (cVar6 == cVar7) {
|
|
|
|
*pcVar1 = cVar6;
|
|
|
|
pcVar1[1] = cVar7;
|
|
|
|
goto LAB_00602424;
|
|
|
|
}
|
|
|
|
LAB_00602499:
|
|
|
|
pcVar1[1] = cVar6;
|
|
|
|
local_a4[0x18] = fVar3;
|
|
|
|
local_a4[0x19] = fVar2;
|
|
|
|
*pcVar1 = cVar7;
|
|
|
|
uVar13 = 1;
|
|
|
|
do {
|
|
|
|
fVar4 = (float)(int)(7 - uVar13);
|
|
|
|
if ((int)(7 - uVar13) < 0) {
|
|
|
|
fVar4 = fVar4 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar5 = (float)(int)uVar13;
|
|
|
|
if ((int)uVar13 < 0) {
|
|
|
|
fVar5 = fVar5 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
uVar10 = uVar13 + 1;
|
|
|
|
local_a4[uVar13 + 0x19] = (fVar5 * fVar2 + fVar4 * fVar3) * _DAT_007edf0c;
|
|
|
|
uVar13 = uVar10;
|
|
|
|
} while (uVar10 < 7);
|
|
|
|
local_c = &DAT_007f2bf8;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (iVar8 != 6) goto LAB_00602499;
|
|
|
|
*pcVar1 = cVar6;
|
|
|
|
local_a4[0x18] = fVar2;
|
|
|
|
local_a4[0x19] = fVar3;
|
|
|
|
pcVar1[1] = cVar7;
|
|
|
|
uVar13 = 1;
|
|
|
|
do {
|
|
|
|
fVar4 = (float)(int)(5 - uVar13);
|
|
|
|
if ((int)(5 - uVar13) < 0) {
|
|
|
|
fVar4 = fVar4 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
fVar5 = (float)(int)uVar13;
|
|
|
|
if ((int)uVar13 < 0) {
|
|
|
|
fVar5 = fVar5 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
uVar10 = uVar13 + 1;
|
|
|
|
local_a4[uVar13 + 0x19] = (fVar5 * fVar3 + fVar4 * fVar2) * _DAT_0079a1e8;
|
|
|
|
uVar13 = uVar10;
|
|
|
|
} while (uVar10 < 5);
|
|
|
|
local_c = &DAT_007f2c18;
|
|
|
|
local_a4[0x1e] = 0.0;
|
|
|
|
local_a4[0x1f] = 1.0;
|
|
|
|
}
|
|
|
|
iVar8 = iVar8 + -1;
|
|
|
|
local_10 = (float)iVar8;
|
|
|
|
if (iVar8 < 0) {
|
|
|
|
local_10 = local_10 + _DAT_0079920c;
|
|
|
|
}
|
|
|
|
if (local_a4[0x18] == local_a4[0x19]) {
|
|
|
|
local_20 = 0.0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_20 = local_10 / (local_a4[0x19] - local_a4[0x18]);
|
|
|
|
}
|
|
|
|
if (param_3 != 0) {
|
|
|
|
pfVar15 = local_a4;
|
|
|
|
for (iVar9 = 0x10; iVar9 != 0; iVar9 = iVar9 + -1) {
|
|
|
|
*pfVar15 = 0.0;
|
|
|
|
pfVar15 = pfVar15 + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
param_2._2_2_ = (undefined2)((uint)iVar8 >> 0x10);
|
|
|
|
param_2 = (float)CONCAT22(param_2._2_2_,in_FPUControlWord);
|
|
|
|
local_18 = (uint)param_2;
|
|
|
|
local_14 = local_1c;
|
|
|
|
uVar13 = 0;
|
|
|
|
do {
|
|
|
|
uVar12 = 0;
|
|
|
|
uVar10 = uVar13 + 8;
|
|
|
|
local_8._2_1_ = '\0';
|
|
|
|
if (uVar13 < uVar10) {
|
|
|
|
local_8 = local_14;
|
|
|
|
do {
|
|
|
|
param_2 = *local_8;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
param_2 = param_2 + local_a4[uVar13];
|
|
|
|
}
|
|
|
|
fVar2 = (param_2 - local_a4[0x18]) * local_20;
|
|
|
|
if (fVar2 < DAT_00796344 == (fVar2 == DAT_00796344)) {
|
|
|
|
if (fVar2 < local_10) {
|
|
|
|
local_1c = (float *)(fVar2 + _DAT_007938b8);
|
|
|
|
local_24 = (int)ROUND(fVar2 + _DAT_007938b8);
|
|
|
|
iVar8 = *(int *)(local_c + local_24 * 4);
|
|
|
|
}
|
|
|
|
else if ((param_1 == (char *)0x6) &&
|
|
|
|
(fVar2 = (local_a4[0x19] + _DAT_007938b0) * _DAT_007938b8,
|
|
|
|
fVar2 < param_2 != (fVar2 == param_2))) {
|
|
|
|
iVar8 = 7;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if ((param_1 != (char *)0x6) || (local_a4[0x18] * _DAT_007938b8 < param_2)) {
|
|
|
|
iVar8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar8 = 6;
|
|
|
|
}
|
|
|
|
uVar12 = uVar12 >> 3 | iVar8 << 0x15;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
param_2 = param_2 - local_a4[iVar8 + 0x18];
|
|
|
|
uVar11 = uVar13 & 3;
|
|
|
|
if (uVar11 != 3) {
|
|
|
|
local_a4[uVar13 + 1] = _DAT_007f2bf4 * param_2 + local_a4[uVar13 + 1];
|
|
|
|
}
|
|
|
|
if (uVar13 < 0xc) {
|
|
|
|
if (uVar11 != 0) {
|
|
|
|
local_a4[uVar13 + 3] = _DAT_007edf08 * param_2 + local_a4[uVar13 + 3];
|
|
|
|
}
|
|
|
|
local_a4[uVar13 + 4] = _DAT_007edf04 * param_2 + local_a4[uVar13 + 4];
|
|
|
|
if (uVar11 != 3) {
|
|
|
|
local_a4[uVar13 + 5] = param_2 * _DAT_007edf00 + local_a4[uVar13 + 5];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
local_8 = local_8 + 4;
|
|
|
|
uVar13 = uVar13 + 1;
|
|
|
|
} while (uVar13 < uVar10);
|
|
|
|
local_8._2_1_ = (char)(uVar12 >> 0x10);
|
|
|
|
}
|
|
|
|
local_14 = local_14 + 0x20;
|
|
|
|
pcVar1[4] = local_8._2_1_;
|
|
|
|
pcVar1[2] = (char)uVar12;
|
|
|
|
pcVar1[3] = (char)(uVar12 >> 8);
|
|
|
|
uVar13 = uVar10;
|
|
|
|
pcVar1 = pcVar1 + 3;
|
|
|
|
} while (uVar10 < 0x10);
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006026c5 at 0x006026C5 (size: 38) ---
|
|
|
|
|
|
int FUN_006026c5(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_00601ddb(param_1,param_2);
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
iVar1 = FUN_006008e8();
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006026eb at 0x006026EB (size: 38) ---
|
|
|
|
|
|
int FUN_006026eb(undefined4 param_1,undefined4 param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
|
|
|
|
iVar1 = FUN_00601e60(param_1,param_2);
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
iVar1 = FUN_006008e8();
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00602711 at 0x00602711 (size: 57) ---
|
|
|
|
|
|
int FUN_00602711(undefined4 param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 local_104 [256];
|
|
|
|
|
|
|
|
iVar1 = FUN_0060096c();
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
iVar1 = FUN_006020c2(param_1,local_104,param_3);
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060274a at 0x0060274A (size: 57) ---
|
|
|
|
|
|
int FUN_0060274a(undefined4 param_1,undefined4 param_2,undefined4 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
int iVar1;
|
|
|
|
undefined1 local_104 [256];
|
|
|
|
|
|
|
|
iVar1 = FUN_0060096c();
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
iVar1 = FUN_006021f1(param_1,local_104,param_3);
|
|
|
|
if (-1 < iVar1) {
|
|
|
|
iVar1 = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return iVar1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00602783 at 0x00602783 (size: 371) ---
|
|
|
|
|
|
void FUN_00602783(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
param_1[2] = FUN_00603c95;
|
|
|
|
param_1[0x23] = FUN_00603c95;
|
|
|
|
*param_1 = FUN_00603bc3;
|
|
|
|
param_1[1] = FUN_0060522a;
|
|
|
|
param_1[3] = FUN_00603d55;
|
|
|
|
param_1[4] = FUN_00607138;
|
|
|
|
param_1[5] = FUN_00603c5c;
|
|
|
|
param_1[6] = FUN_0060515e;
|
|
|
|
param_1[9] = FUN_00603c03;
|
|
|
|
param_1[10] = FUN_006052f1;
|
|
|
|
param_1[7] = FUN_00603e8b;
|
|
|
|
param_1[8] = FUN_0060432e;
|
|
|
|
param_1[0x16] = FUN_00603f1f;
|
|
|
|
param_1[0x11] = &LAB_0060426d;
|
|
|
|
param_1[0x15] = FUN_006038b8;
|
|
|
|
param_1[0x14] = FUN_0060383d;
|
|
|
|
param_1[0x19] = FUN_00603a97;
|
|
|
|
param_1[0x1a] = &LAB_006039d8;
|
|
|
|
param_1[0x17] = FUN_0060487a;
|
|
|
|
param_1[0x13] = &LAB_00603fc1;
|
|
|
|
param_1[0x32] = FUN_006045ac;
|
|
|
|
param_1[0x33] = FUN_006043ca;
|
|
|
|
param_1[0x34] = FUN_00604785;
|
|
|
|
param_1[0x35] = FUN_00604661;
|
|
|
|
param_1[0x36] = FUN_00604505;
|
|
|
|
param_1[0x37] = FUN_006047e1;
|
|
|
|
param_1[0x12] = FUN_006046fd;
|
|
|
|
param_1[0x30] = FUN_0060447e;
|
|
|
|
param_1[0x31] = FUN_00604829;
|
|
|
|
param_1[0xb] = &LAB_00607341;
|
|
|
|
param_1[0x1c] = &LAB_00604a16;
|
|
|
|
param_1[0xe] = &LAB_0060492a;
|
|
|
|
param_1[0x1d] = &LAB_00604b0e;
|
|
|
|
param_1[0x3b] = FUN_006061ed;
|
|
|
|
param_1[0x3c] = &LAB_0060571e;
|
|
|
|
param_1[0x3d] = &LAB_0060589e;
|
|
|
|
param_1[0x3e] = &LAB_006059fa;
|
|
|
|
param_1[0x3f] = &LAB_0060554b;
|
|
|
|
param_1[0x40] = &LAB_00605ebf;
|
|
|
|
param_1[0x41] = &LAB_00605d0b;
|
|
|
|
param_1[0x42] = &LAB_00605b0b;
|
|
|
|
param_1[0x45] = &LAB_00605b0b;
|
|
|
|
param_1[0x47] = &LAB_00604be6;
|
|
|
|
param_1[0x2d] = &LAB_00603954;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006028f6 at 0x006028F6 (size: 361) ---
|
|
|
|
|
|
void FUN_006028f6(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
param_1[2] = FUN_00603c95;
|
|
|
|
param_1[0x23] = FUN_00603c95;
|
|
|
|
*param_1 = FUN_00603bc3;
|
|
|
|
param_1[1] = FUN_0060522a;
|
|
|
|
param_1[3] = FUN_00603d55;
|
|
|
|
param_1[4] = FUN_00607138;
|
|
|
|
param_1[5] = FUN_00603c5c;
|
|
|
|
param_1[6] = FUN_0060515e;
|
|
|
|
param_1[9] = FUN_00603c03;
|
|
|
|
param_1[10] = FUN_006052f1;
|
|
|
|
param_1[7] = FUN_00607002;
|
|
|
|
param_1[8] = FUN_0060432e;
|
|
|
|
param_1[0x16] = FUN_00607096;
|
|
|
|
param_1[0x11] = &LAB_00607280;
|
|
|
|
param_1[0x15] = FUN_006038b8;
|
|
|
|
param_1[0x14] = FUN_0060383d;
|
|
|
|
param_1[0x19] = FUN_00607794;
|
|
|
|
param_1[0x1a] = &LAB_006076d5;
|
|
|
|
param_1[0x17] = FUN_0060487a;
|
|
|
|
param_1[0x13] = &LAB_00603fc1;
|
|
|
|
param_1[0x32] = FUN_006045ac;
|
|
|
|
param_1[0x33] = FUN_006043ca;
|
|
|
|
param_1[0x34] = FUN_00604785;
|
|
|
|
param_1[0x35] = FUN_00604661;
|
|
|
|
param_1[0x36] = FUN_00604505;
|
|
|
|
param_1[0x37] = FUN_006047e1;
|
|
|
|
param_1[0x12] = FUN_006046fd;
|
|
|
|
param_1[0x30] = FUN_0060447e;
|
|
|
|
param_1[0x31] = FUN_00604829;
|
|
|
|
param_1[0xb] = &LAB_00607341;
|
|
|
|
param_1[0x1c] = &LAB_00607505;
|
|
|
|
param_1[0xe] = &LAB_00607419;
|
|
|
|
param_1[0x1d] = &LAB_006075fd;
|
|
|
|
param_1[0x3b] = FUN_00606f2e;
|
|
|
|
param_1[0x3c] = &LAB_00606496;
|
|
|
|
param_1[0x3d] = &LAB_00606616;
|
|
|
|
param_1[0x3e] = &LAB_00606772;
|
|
|
|
param_1[0x3f] = &LAB_006062c3;
|
|
|
|
param_1[0x40] = &LAB_00606c37;
|
|
|
|
param_1[0x41] = &LAB_00606a83;
|
|
|
|
param_1[0x42] = &LAB_00606883;
|
|
|
|
param_1[0x45] = &LAB_00606883;
|
|
|
|
param_1[0x47] = &LAB_00604be6;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00602a5f at 0x00602A5F (size: 246) ---
|
|
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00602af7) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00602ae5) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00602ab9) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00602a9d) */
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00602a92) */
|
|
|
|
|
|
|
|
undefined8 FUN_00602a5f(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
char cVar1;
|
|
|
|
uint *puVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
char *pcVar5;
|
|
|
|
int *piVar6;
|
|
|
|
uint local_2c;
|
|
|
|
char local_28 [4];
|
|
|
|
char acStack_24 [4];
|
|
|
|
char acStack_20 [4];
|
|
|
|
char cStack_1c;
|
|
|
|
int local_18;
|
|
|
|
uint local_14;
|
|
|
|
int local_10;
|
|
|
|
char cStack_c;
|
|
|
|
undefined4 local_8;
|
|
|
|
|
|
|
|
cStack_c = s_UnknownVendr_007f30c8[0xc];
|
|
|
|
local_28 = (char [4])s_AuthenticAMD_007f30b8._0_4_;
|
|
|
|
acStack_24 = (char [4])s_AuthenticAMD_007f30b8._4_4_;
|
|
|
|
acStack_20 = (char [4])s_AuthenticAMD_007f30b8._8_4_;
|
|
|
|
local_8 = DAT_00836f40;
|
|
|
|
cStack_1c = s_AuthenticAMD_007f30b8[0xc];
|
|
|
|
cpuid_basic_info(0);
|
|
|
|
local_2c = 1;
|
|
|
|
piVar6 = (int *)cpuid_basic_info(0);
|
|
|
|
local_14 = piVar6[2];
|
|
|
|
local_18 = piVar6[1];
|
|
|
|
local_10 = piVar6[3];
|
|
|
|
if (*piVar6 != 0) {
|
|
|
|
iVar4 = cpuid_Version_info(1);
|
|
|
|
local_2c = -(uint)((*(uint *)(iVar4 + 8) & 0x800000) != 0) & 0x20 | 3 |
|
|
|
|
-(uint)((*(uint *)(iVar4 + 8) & 0x2000000) != 0) & 0x40;
|
|
|
|
puVar2 = (uint *)cpuid(0x80000000);
|
|
|
|
local_14 = puVar2[2];
|
|
|
|
if (0x80000000 < *puVar2) {
|
|
|
|
iVar4 = cpuid(0x80000001);
|
|
|
|
local_14 = *(uint *)(iVar4 + 8);
|
|
|
|
iVar4 = 0xc;
|
|
|
|
pcVar5 = local_28;
|
|
|
|
piVar6 = &local_18;
|
|
|
|
do {
|
|
|
|
if (iVar4 == 0) break;
|
|
|
|
iVar4 = iVar4 + -1;
|
|
|
|
iVar3 = *piVar6;
|
|
|
|
cVar1 = *pcVar5;
|
|
|
|
pcVar5 = pcVar5 + 1;
|
|
|
|
piVar6 = (int *)((int)piVar6 + 1);
|
|
|
|
} while (cVar1 == (char)iVar3);
|
|
|
|
local_2c = local_2c | 4 | -(uint)((local_14 & 0x80000000) != 0) & 0x80 |
|
|
|
|
-(uint)((local_14 & 0x40000000) != 0) & 0x100 |
|
|
|
|
-(uint)((local_14 & 0x400000) != 0) & 0x200;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return CONCAT44(local_14,local_2c);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00602b55 at 0x00602B55 (size: 662) ---
|
|
|
|
|
|
void FUN_00602b55(undefined4 *param_1)
|
|
|
|
|
|
|
|
{
|
|
|
|
byte bVar1;
|
|
|
|
byte extraout_AH;
|
|
|
|
|
|
|
|
bVar1 = FUN_00602a5f();
|
|
|
|
if (((bVar1 & 0x20) != 0) && ((char)bVar1 < '\0')) {
|
|
|
|
*param_1 = FUN_006122bb;
|
|
|
|
param_1[1] = FUN_00610964;
|
|
|
|
param_1[2] = FUN_00612582;
|
|
|
|
param_1[3] = &LAB_0060cb19;
|
|
|
|
param_1[5] = FUN_00612312;
|
|
|
|
param_1[6] = FUN_006109d7;
|
|
|
|
param_1[7] = FUN_00610a40;
|
|
|
|
param_1[8] = &LAB_00612606;
|
|
|
|
param_1[9] = FUN_0061234d;
|
|
|
|
param_1[10] = FUN_00610f24;
|
|
|
|
param_1[0xb] = &LAB_0060cd4b;
|
|
|
|
param_1[0xd] = &LAB_006129b0;
|
|
|
|
param_1[0xe] = &LAB_006129f3;
|
|
|
|
param_1[0xf] = FUN_00610f2f;
|
|
|
|
param_1[0x10] = &LAB_006110bb;
|
|
|
|
param_1[0x11] = &LAB_00612665;
|
|
|
|
param_1[0x12] = &LAB_006123b3;
|
|
|
|
param_1[0x13] = FUN_00610946;
|
|
|
|
param_1[0x14] = &LAB_0060b63c;
|
|
|
|
param_1[0x15] = &LAB_0060b6d5;
|
|
|
|
param_1[0x16] = FUN_00612b95;
|
|
|
|
param_1[0x17] = &LAB_00612ad7;
|
|
|
|
param_1[0x18] = FUN_0060b732;
|
|
|
|
param_1[0x19] = &LAB_0060b776;
|
|
|
|
param_1[0x1a] = &LAB_0060bba7;
|
|
|
|
param_1[0x1b] = &LAB_0060ce1a;
|
|
|
|
param_1[0x1c] = &LAB_0060ce6a;
|
|
|
|
param_1[0x1d] = &LAB_0060cf55;
|
|
|
|
param_1[0x1e] = FUN_0060bc6c;
|
|
|
|
param_1[0x1f] = &LAB_0060d031;
|
|
|
|
param_1[0x20] = &LAB_0060d096;
|
|
|
|
param_1[0x21] = &LAB_0060d0f6;
|
|
|
|
param_1[0x22] = &LAB_0060d151;
|
|
|
|
param_1[0x23] = &LAB_00612bf9;
|
|
|
|
param_1[0x24] = FUN_0060bcd8;
|
|
|
|
param_1[0x25] = FUN_0060be0f;
|
|
|
|
param_1[0x26] = &LAB_0060d198;
|
|
|
|
param_1[0x27] = &LAB_0060d207;
|
|
|
|
param_1[0x28] = FUN_0060d38e;
|
|
|
|
param_1[0x29] = FUN_0060e58a;
|
|
|
|
param_1[0x2a] = &LAB_0060e72f;
|
|
|
|
param_1[0x2b] = FUN_0060ec63;
|
|
|
|
param_1[0x2c] = FUN_0060be9c;
|
|
|
|
param_1[0x2d] = &LAB_0060bf2e;
|
|
|
|
param_1[0x37] = &LAB_00612799;
|
|
|
|
param_1[0x34] = &LAB_00610a9f;
|
|
|
|
param_1[0x31] = &LAB_0061244b;
|
|
|
|
param_1[0x2f] = &LAB_00612494;
|
|
|
|
param_1[0x35] = &LAB_0061280a;
|
|
|
|
param_1[0x32] = &LAB_00610b10;
|
|
|
|
param_1[0x38] = FUN_0060bf92;
|
|
|
|
param_1[0x39] = &LAB_0060c039;
|
|
|
|
param_1[0x36] = &LAB_006128d2;
|
|
|
|
param_1[0x30] = &LAB_006124d7;
|
|
|
|
param_1[0x33] = &LAB_00610be4;
|
|
|
|
param_1[4] = &LAB_00610218;
|
|
|
|
param_1[0x2e] = FUN_0060c0de;
|
|
|
|
param_1[0x3b] = FUN_00612000;
|
|
|
|
param_1[0x3a] = &LAB_00612140;
|
|
|
|
if (((extraout_AH & 1) != 0) && ((extraout_AH & 2) != 0)) {
|
|
|
|
param_1[0x10] = FUN_006112d8;
|
|
|
|
param_1[0x13] = FUN_0060ff36;
|
|
|
|
param_1[0x27] = &LAB_0060d2d9;
|
|
|
|
param_1[0x28] = FUN_0060ed7e;
|
|
|
|
param_1[0x19] = &LAB_0060b992;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((bVar1 & 0x40) != 0) {
|
|
|
|
param_1[0x3f] = FUN_0060b000;
|
|
|
|
param_1[0x40] = &LAB_0060b0a0;
|
|
|
|
param_1[0x41] = &LAB_0060b3c0;
|
|
|
|
param_1[0x3c] = &LAB_0060a000;
|
|
|
|
param_1[0x3d] = &LAB_0060a260;
|
|
|
|
param_1[0x3e] = &LAB_0060a4c0;
|
|
|
|
param_1[0x42] = FUN_00609000;
|
|
|
|
param_1[0x45] = FUN_00608000;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00602deb at 0x00602DEB (size: 84) ---
|
|
|
|
|
|
void FUN_00602deb(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
int in_EAX;
|
|
|
|
uint uVar3;
|
|
|
|
uint uVar4;
|
|
|
|
undefined4 *puVar5;
|
|
|
|
undefined4 *puVar6;
|
|
|
|
|
|
|
|
uVar4 = *(uint *)(*(int *)(in_EAX + 0x1c) + 0x14);
|
|
|
|
if (*(uint *)(in_EAX + 0x10) < uVar4) {
|
|
|
|
uVar4 = *(uint *)(in_EAX + 0x10);
|
|
|
|
}
|
|
|
|
if (uVar4 != 0) {
|
|
|
|
puVar5 = *(undefined4 **)(*(int *)(in_EAX + 0x1c) + 0x10);
|
|
|
|
puVar6 = *(undefined4 **)(in_EAX + 0xc);
|
|
|
|
for (uVar3 = uVar4 >> 2; uVar3 != 0; uVar3 = uVar3 - 1) {
|
|
|
|
*puVar6 = *puVar5;
|
|
|
|
puVar5 = puVar5 + 1;
|
|
|
|
puVar6 = puVar6 + 1;
|
|
|
|
}
|
|
|
|
for (uVar3 = uVar4 & 3; uVar3 != 0; uVar3 = uVar3 - 1) {
|
|
|
|
*(undefined1 *)puVar6 = *(undefined1 *)puVar5;
|
|
|
|
puVar5 = (undefined4 *)((int)puVar5 + 1);
|
|
|
|
puVar6 = (undefined4 *)((int)puVar6 + 1);
|
|
|
|
}
|
|
|
|
*(int *)(in_EAX + 0xc) = *(int *)(in_EAX + 0xc) + uVar4;
|
|
|
|
piVar1 = (int *)(*(int *)(in_EAX + 0x1c) + 0x10);
|
|
|
|
*piVar1 = *piVar1 + uVar4;
|
|
|
|
*(int *)(in_EAX + 0x14) = *(int *)(in_EAX + 0x14) + uVar4;
|
|
|
|
*(int *)(in_EAX + 0x10) = *(int *)(in_EAX + 0x10) - uVar4;
|
|
|
|
piVar1 = (int *)(*(int *)(in_EAX + 0x1c) + 0x14);
|
|
|
|
*piVar1 = *piVar1 - uVar4;
|
|
|
|
iVar2 = *(int *)(in_EAX + 0x1c);
|
|
|
|
if (*(int *)(iVar2 + 0x14) == 0) {
|
|
|
|
*(undefined4 *)(iVar2 + 0x10) = *(undefined4 *)(iVar2 + 8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00602e3f at 0x00602E3F (size: 332) ---
|
|
|
|
|
|
char * __thiscall FUN_00602e3f(int param_1,uint param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
char *pcVar2;
|
|
|
|
char *pcVar3;
|
|
|
|
char *pcVar4;
|
|
|
|
char *pcVar6;
|
|
|
|
char *pcVar7;
|
|
|
|
uint local_14;
|
|
|
|
char *local_10;
|
|
|
|
uint local_c;
|
|
|
|
char local_6;
|
|
|
|
char local_5;
|
|
|
|
char *pcVar5;
|
|
|
|
|
|
|
|
local_c = *(uint *)(param_1 + 0x74);
|
|
|
|
uVar1 = *(uint *)(param_1 + 100);
|
|
|
|
pcVar3 = (char *)(*(int *)(param_1 + 0x30) + uVar1);
|
|
|
|
pcVar7 = *(char **)(param_1 + 0x70);
|
|
|
|
if (*(int *)(param_1 + 0x24) - 0x106U < uVar1) {
|
|
|
|
local_14 = (uVar1 - *(int *)(param_1 + 0x24)) + 0x106;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
local_14 = 0;
|
|
|
|
}
|
|
|
|
local_5 = pcVar3[(int)(pcVar7 + -1)];
|
|
|
|
local_6 = pcVar3[(int)pcVar7];
|
|
|
|
if (*(char **)(param_1 + 0x84) <= pcVar7) {
|
|
|
|
local_c = local_c >> 2;
|
|
|
|
}
|
|
|
|
pcVar2 = *(char **)(param_1 + 0x6c);
|
|
|
|
local_10 = *(char **)(param_1 + 0x88);
|
|
|
|
if (pcVar2 < *(char **)(param_1 + 0x88)) {
|
|
|
|
local_10 = pcVar2;
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
pcVar6 = (char *)(*(int *)(param_1 + 0x30) + param_2);
|
|
|
|
if ((((pcVar6[(int)pcVar7] == local_6) && (pcVar6[(int)(pcVar7 + -1)] == local_5)) &&
|
|
|
|
(*pcVar6 == *pcVar3)) && (pcVar6[1] == pcVar3[1])) {
|
|
|
|
pcVar6 = pcVar6 + 2;
|
|
|
|
pcVar5 = pcVar3 + 2;
|
|
|
|
while (((((pcVar4 = pcVar5 + 1, *pcVar4 == pcVar6[1] &&
|
|
|
|
(pcVar4 = pcVar5 + 2, *pcVar4 == pcVar6[2])) &&
|
|
|
|
((pcVar4 = pcVar5 + 3, *pcVar4 == pcVar6[3] &&
|
|
|
|
((pcVar4 = pcVar5 + 4, *pcVar4 == pcVar6[4] &&
|
|
|
|
(pcVar4 = pcVar5 + 5, *pcVar4 == pcVar6[5])))))) &&
|
|
|
|
(pcVar4 = pcVar5 + 6, *pcVar4 == pcVar6[6])) &&
|
|
|
|
(pcVar4 = pcVar5 + 7, *pcVar4 == pcVar6[7]))) {
|
|
|
|
pcVar4 = pcVar5 + 8;
|
|
|
|
pcVar6 = pcVar6 + 8;
|
|
|
|
if ((*pcVar4 != *pcVar6) || (pcVar5 = pcVar4, pcVar3 + 0x102 <= pcVar4)) break;
|
|
|
|
}
|
|
|
|
pcVar4 = pcVar4 + (0x102 - (int)(pcVar3 + 0x102));
|
|
|
|
if ((int)pcVar7 < (int)pcVar4) {
|
|
|
|
*(uint *)(param_1 + 0x68) = param_2;
|
|
|
|
if ((int)local_10 <= (int)pcVar4) {
|
|
|
|
LAB_00602f7b:
|
|
|
|
if (pcVar4 <= pcVar2) {
|
|
|
|
pcVar2 = pcVar4;
|
|
|
|
}
|
|
|
|
return pcVar2;
|
|
|
|
}
|
|
|
|
local_5 = (pcVar3 + (int)pcVar4)[-1];
|
|
|
|
local_6 = pcVar3[(int)pcVar4];
|
|
|
|
pcVar7 = pcVar4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pcVar4 = pcVar7;
|
|
|
|
param_2 = (uint)*(ushort *)
|
|
|
|
(*(int *)(param_1 + 0x38) + (*(uint *)(param_1 + 0x2c) & param_2) * 2);
|
|
|
|
if ((param_2 <= local_14) || (local_c = local_c - 1, pcVar7 = pcVar4, local_c == 0))
|
|
|
|
goto LAB_00602f7b;
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00602f8b at 0x00602F8B (size: 346) ---
|
|
|
|
|
|
void FUN_00602f8b(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
int *piVar2;
|
|
|
|
int iVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
ushort *puVar6;
|
|
|
|
uint uVar7;
|
|
|
|
int iVar8;
|
|
|
|
uint uVar9;
|
|
|
|
int iVar10;
|
|
|
|
int *unaff_EBX;
|
|
|
|
undefined4 *puVar11;
|
|
|
|
undefined4 *puVar12;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
uVar1 = unaff_EBX[9];
|
|
|
|
do {
|
|
|
|
uVar9 = unaff_EBX[0x19];
|
|
|
|
uVar5 = (unaff_EBX[0xd] - uVar9) - unaff_EBX[0x1b];
|
|
|
|
if (uVar5 == 0) {
|
|
|
|
if ((uVar9 != 0) || (uVar7 = uVar1, unaff_EBX[0x1b] != 0)) {
|
|
|
|
LAB_00602fc3:
|
|
|
|
uVar7 = uVar5;
|
|
|
|
if ((uVar1 - 0x106) + unaff_EBX[9] <= uVar9) {
|
|
|
|
puVar11 = (undefined4 *)(unaff_EBX[0xc] + uVar1);
|
|
|
|
puVar12 = (undefined4 *)unaff_EBX[0xc];
|
|
|
|
for (uVar9 = uVar1 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {
|
|
|
|
*puVar12 = *puVar11;
|
|
|
|
puVar11 = puVar11 + 1;
|
|
|
|
puVar12 = puVar12 + 1;
|
|
|
|
}
|
|
|
|
for (uVar9 = uVar1 & 3; uVar9 != 0; uVar9 = uVar9 - 1) {
|
|
|
|
*(undefined1 *)puVar12 = *(undefined1 *)puVar11;
|
|
|
|
puVar11 = (undefined4 *)((int)puVar11 + 1);
|
|
|
|
puVar12 = (undefined4 *)((int)puVar12 + 1);
|
|
|
|
}
|
|
|
|
iVar10 = unaff_EBX[0x11];
|
|
|
|
unaff_EBX[0x1a] = unaff_EBX[0x1a] - uVar1;
|
|
|
|
unaff_EBX[0x19] = unaff_EBX[0x19] - uVar1;
|
|
|
|
unaff_EBX[0x15] = unaff_EBX[0x15] - uVar1;
|
|
|
|
puVar6 = (ushort *)(unaff_EBX[0xf] + iVar10 * 2);
|
|
|
|
do {
|
|
|
|
puVar6 = puVar6 + -1;
|
|
|
|
iVar10 = iVar10 + -1;
|
|
|
|
*puVar6 = ~-(ushort)(*puVar6 < uVar1) & *puVar6 - (short)uVar1;
|
|
|
|
} while (iVar10 != 0);
|
|
|
|
puVar6 = (ushort *)(unaff_EBX[0xe] + uVar1 * 2);
|
|
|
|
uVar9 = uVar1;
|
|
|
|
do {
|
|
|
|
puVar6 = puVar6 + -1;
|
|
|
|
uVar9 = uVar9 - 1;
|
|
|
|
*puVar6 = ~-(ushort)(*puVar6 < uVar1) & *puVar6 - (short)uVar1;
|
|
|
|
} while (uVar9 != 0);
|
|
|
|
uVar7 = uVar5 + uVar1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (uVar5 != 0xffffffff) goto LAB_00602fc3;
|
|
|
|
uVar7 = 0xfffffffe;
|
|
|
|
}
|
|
|
|
piVar2 = (int *)*unaff_EBX;
|
|
|
|
if (piVar2[1] == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
iVar10 = unaff_EBX[0x1b];
|
|
|
|
iVar3 = unaff_EBX[0x19];
|
|
|
|
uVar9 = piVar2[1];
|
|
|
|
iVar4 = unaff_EBX[0xc];
|
|
|
|
local_8 = uVar9;
|
|
|
|
if (uVar7 < uVar9) {
|
|
|
|
local_8 = uVar7;
|
|
|
|
}
|
|
|
|
if (local_8 == 0) {
|
|
|
|
local_8 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
piVar2[1] = uVar9 - local_8;
|
|
|
|
if (*(int *)(piVar2[7] + 0x18) == 0) {
|
|
|
|
iVar8 = FUN_00612c77(piVar2[0xc],*piVar2,local_8);
|
|
|
|
piVar2[0xc] = iVar8;
|
|
|
|
}
|
|
|
|
puVar11 = (undefined4 *)*piVar2;
|
|
|
|
puVar12 = (undefined4 *)(iVar10 + iVar3 + iVar4);
|
|
|
|
for (uVar9 = local_8 >> 2; uVar9 != 0; uVar9 = uVar9 - 1) {
|
|
|
|
*puVar12 = *puVar11;
|
|
|
|
puVar11 = puVar11 + 1;
|
|
|
|
puVar12 = puVar12 + 1;
|
|
|
|
}
|
|
|
|
for (uVar9 = local_8 & 3; uVar9 != 0; uVar9 = uVar9 - 1) {
|
|
|
|
*(undefined1 *)puVar12 = *(undefined1 *)puVar11;
|
|
|
|
puVar11 = (undefined4 *)((int)puVar11 + 1);
|
|
|
|
puVar12 = (undefined4 *)((int)puVar12 + 1);
|
|
|
|
}
|
|
|
|
*piVar2 = *piVar2 + local_8;
|
|
|
|
piVar2[2] = piVar2[2] + local_8;
|
|
|
|
}
|
|
|
|
unaff_EBX[0x1b] = unaff_EBX[0x1b] + local_8;
|
|
|
|
if (2 < (uint)unaff_EBX[0x1b]) {
|
|
|
|
uVar9 = (uint)*(byte *)(unaff_EBX[0x19] + unaff_EBX[0xc]);
|
|
|
|
unaff_EBX[0x10] = uVar9;
|
|
|
|
unaff_EBX[0x10] =
|
|
|
|
(uVar9 << ((byte)unaff_EBX[0x14] & 0x1f) ^
|
|
|
|
(uint)((byte *)(unaff_EBX[0x19] + unaff_EBX[0xc]))[1]) & unaff_EBX[0x13];
|
|
|
|
}
|
|
|
|
if (0x105 < (uint)unaff_EBX[0x1b]) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (*(int *)(*unaff_EBX + 4) == 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006030e5 at 0x006030E5 (size: 294) ---
|
|
|
|
|
|
char FUN_006030e5(int *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
uint uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
|
|
|
|
uVar5 = 0xffff;
|
|
|
|
if (param_1[3] - 5U < 0xffff) {
|
|
|
|
uVar5 = param_1[3] - 5U;
|
|
|
|
}
|
|
|
|
do {
|
|
|
|
uVar3 = param_1[0x1b];
|
|
|
|
if (uVar3 < 2) {
|
|
|
|
FUN_00602f8b();
|
|
|
|
uVar3 = param_1[0x1b];
|
|
|
|
if (uVar3 == 0) {
|
|
|
|
if (param_2 == 0) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
iVar2 = param_1[0x15];
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = param_1[0xc] + iVar2;
|
|
|
|
}
|
|
|
|
FUN_00614031(param_1,iVar4,param_1[0x19] - iVar2,param_2 == 4);
|
|
|
|
param_1[0x15] = param_1[0x19];
|
|
|
|
FUN_00602deb();
|
|
|
|
if (*(int *)(*param_1 + 0x10) == 0) {
|
|
|
|
if (param_2 != 4) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
return '\x02';
|
|
|
|
}
|
|
|
|
return (param_2 == 4) * '\x02' + '\x01';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
piVar1 = param_1 + 0x19;
|
|
|
|
*piVar1 = *piVar1 + uVar3;
|
|
|
|
iVar2 = param_1[0x15];
|
|
|
|
param_1[0x1b] = 0;
|
|
|
|
uVar3 = iVar2 + uVar5;
|
|
|
|
if ((*piVar1 == 0) || (uVar3 <= (uint)param_1[0x19])) {
|
|
|
|
param_1[0x1b] = param_1[0x19] - uVar3;
|
|
|
|
param_1[0x19] = uVar3;
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = param_1[0xc] + iVar2;
|
|
|
|
}
|
|
|
|
FUN_00614031(param_1,iVar4,uVar3 - iVar2,0);
|
|
|
|
param_1[0x15] = param_1[0x19];
|
|
|
|
FUN_00602deb();
|
|
|
|
if (*(int *)(*param_1 + 0x10) == 0) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
iVar2 = param_1[0x15];
|
|
|
|
if (param_1[9] - 0x106U <= (uint)(param_1[0x19] - iVar2)) {
|
|
|
|
if (iVar2 < 0) {
|
|
|
|
iVar4 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar4 = param_1[0xc] + iVar2;
|
|
|
|
}
|
|
|
|
FUN_00614031(param_1,iVar4,param_1[0x19] - iVar2,0);
|
|
|
|
param_1[0x15] = param_1[0x19];
|
|
|
|
FUN_00602deb();
|
|
|
|
if (*(int *)(*param_1 + 0x10) == 0) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060320b at 0x0060320B (size: 684) ---
|
|
|
|
|
|
char FUN_0060320b(int *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
short sVar2;
|
|
|
|
ushort uVar3;
|
|
|
|
int iVar4;
|
|
|
|
uint uVar5;
|
|
|
|
int iVar6;
|
|
|
|
byte bVar7;
|
|
|
|
uint uVar8;
|
|
|
|
bool bVar9;
|
|
|
|
|
|
|
|
uVar8 = 0;
|
|
|
|
do {
|
|
|
|
uVar5 = param_1[0x1b];
|
|
|
|
if (uVar5 < 0x106) {
|
|
|
|
FUN_00602f8b();
|
|
|
|
uVar5 = param_1[0x1b];
|
|
|
|
if ((uVar5 < 0x106) && (param_2 == 0)) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
if (uVar5 == 0) {
|
|
|
|
iVar4 = param_1[0x15];
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = param_1[0xc] + iVar4;
|
|
|
|
}
|
|
|
|
FUN_00614031(param_1,iVar6,param_1[0x19] - iVar4,param_2 == 4);
|
|
|
|
param_1[0x15] = param_1[0x19];
|
|
|
|
FUN_00602deb();
|
|
|
|
if (*(int *)(*param_1 + 0x10) == 0) {
|
|
|
|
if (param_2 != 4) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
return '\x02';
|
|
|
|
}
|
|
|
|
return (param_2 == 4) * '\x02' + '\x01';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (2 < uVar5) {
|
|
|
|
uVar8 = (param_1[0x10] << ((byte)param_1[0x14] & 0x1f) ^
|
|
|
|
(uint)*(byte *)(param_1[0xc] + 2 + param_1[0x19])) & param_1[0x13];
|
|
|
|
param_1[0x10] = uVar8;
|
|
|
|
uVar3 = *(ushort *)(param_1[0xf] + uVar8 * 2);
|
|
|
|
uVar8 = (uint)uVar3;
|
|
|
|
*(ushort *)(param_1[0xe] + (param_1[0xb] & param_1[0x19]) * 2) = uVar3;
|
|
|
|
*(short *)(param_1[0xf] + param_1[0x10] * 2) = (short)param_1[0x19];
|
|
|
|
}
|
|
|
|
if (((uVar8 != 0) && (param_1[0x19] - uVar8 <= param_1[9] - 0x106U)) && (param_1[0x20] != 2)) {
|
|
|
|
iVar4 = FUN_00602e3f(uVar8);
|
|
|
|
param_1[0x16] = iVar4;
|
|
|
|
}
|
|
|
|
if ((uint)param_1[0x16] < 3) {
|
|
|
|
bVar7 = *(byte *)(param_1[0x19] + param_1[0xc]);
|
|
|
|
*(undefined2 *)(param_1[0x5a7] + param_1[0x5a6] * 2) = 0;
|
|
|
|
*(byte *)(param_1[0x5a4] + param_1[0x5a6]) = bVar7;
|
|
|
|
param_1[0x5a6] = param_1[0x5a6] + 1;
|
|
|
|
*(short *)(param_1 + bVar7 + 0x23) = (short)param_1[bVar7 + 0x23] + 1;
|
|
|
|
bVar9 = param_1[0x5a6] == param_1[0x5a5] + -1;
|
|
|
|
param_1[0x1b] = param_1[0x1b] + -1;
|
|
|
|
LAB_00603415:
|
|
|
|
param_1[0x19] = param_1[0x19] + 1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
sVar2 = (short)param_1[0x19] - (short)param_1[0x1a];
|
|
|
|
bVar7 = (char)param_1[0x16] - 3;
|
|
|
|
*(short *)(param_1[0x5a7] + param_1[0x5a6] * 2) = sVar2;
|
|
|
|
*(byte *)(param_1[0x5a4] + param_1[0x5a6]) = bVar7;
|
|
|
|
param_1[0x5a6] = param_1[0x5a6] + 1;
|
|
|
|
uVar3 = sVar2 - 1;
|
|
|
|
*(short *)(param_1 + (byte)(&DAT_007f6350)[bVar7] + 0x124) =
|
|
|
|
(short)param_1[(byte)(&DAT_007f6350)[bVar7] + 0x124] + 1;
|
|
|
|
if (uVar3 < 0x100) {
|
|
|
|
bVar7 = (&DAT_007f6150)[uVar3];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar7 = (&DAT_007f6250)[uVar3 >> 7];
|
|
|
|
}
|
|
|
|
*(short *)(param_1 + bVar7 + 0x260) = (short)param_1[bVar7 + 0x260] + 1;
|
|
|
|
bVar9 = param_1[0x5a6] == param_1[0x5a5] + -1;
|
|
|
|
uVar5 = param_1[0x16];
|
|
|
|
param_1[0x1b] = param_1[0x1b] - uVar5;
|
|
|
|
if ((uVar5 <= (uint)param_1[0x1e]) && (2 < (uint)param_1[0x1b])) {
|
|
|
|
param_1[0x16] = uVar5 - 1;
|
|
|
|
do {
|
|
|
|
param_1[0x19] = param_1[0x19] + 1;
|
|
|
|
uVar8 = ((uint)*(byte *)(param_1[0x19] + 2U + param_1[0xc]) ^
|
|
|
|
param_1[0x10] << ((byte)param_1[0x14] & 0x1f)) & param_1[0x13];
|
|
|
|
param_1[0x10] = uVar8;
|
|
|
|
uVar3 = *(ushort *)(param_1[0xf] + uVar8 * 2);
|
|
|
|
uVar8 = (uint)uVar3;
|
|
|
|
*(ushort *)(param_1[0xe] + (param_1[0x19] & param_1[0xb]) * 2) = uVar3;
|
|
|
|
*(short *)(param_1[0xf] + param_1[0x10] * 2) = (short)param_1[0x19];
|
|
|
|
piVar1 = param_1 + 0x16;
|
|
|
|
*piVar1 = *piVar1 + -1;
|
|
|
|
} while (*piVar1 != 0);
|
|
|
|
goto LAB_00603415;
|
|
|
|
}
|
|
|
|
param_1[0x19] = param_1[0x19] + uVar5;
|
|
|
|
param_1[0x16] = 0;
|
|
|
|
uVar5 = (uint)*(byte *)(param_1[0x19] + param_1[0xc]);
|
|
|
|
param_1[0x10] = uVar5;
|
|
|
|
param_1[0x10] =
|
|
|
|
(uVar5 << ((byte)param_1[0x14] & 0x1f) ^
|
|
|
|
(uint)((byte *)(param_1[0x19] + param_1[0xc]))[1]) & param_1[0x13];
|
|
|
|
}
|
|
|
|
if (bVar9) {
|
|
|
|
iVar4 = param_1[0x15];
|
|
|
|
if (iVar4 < 0) {
|
|
|
|
iVar6 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar6 = param_1[0xc] + iVar4;
|
|
|
|
}
|
|
|
|
FUN_00614031(param_1,iVar6,param_1[0x19] - iVar4,0);
|
|
|
|
param_1[0x15] = param_1[0x19];
|
|
|
|
FUN_00602deb();
|
|
|
|
if (*(int *)(*param_1 + 0x10) == 0) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006034b7 at 0x006034B7 (size: 902) ---
|
|
|
|
|
|
char FUN_006034b7(int *param_1,int param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
int *piVar1;
|
|
|
|
int iVar2;
|
|
|
|
int iVar3;
|
|
|
|
short sVar4;
|
|
|
|
ushort uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
int iVar7;
|
|
|
|
uint uVar8;
|
|
|
|
byte bVar9;
|
|
|
|
int iVar10;
|
|
|
|
uint local_8;
|
|
|
|
|
|
|
|
local_8 = 0;
|
|
|
|
LAB_006034c7:
|
|
|
|
do {
|
|
|
|
uVar6 = param_1[0x1b];
|
|
|
|
if (uVar6 < 0x106) {
|
|
|
|
FUN_00602f8b();
|
|
|
|
uVar6 = param_1[0x1b];
|
|
|
|
if ((uVar6 < 0x106) && (param_2 == 0)) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
if (uVar6 == 0) {
|
|
|
|
if (param_1[0x18] != 0) {
|
|
|
|
bVar9 = *(byte *)(param_1[0x19] + -1 + param_1[0xc]);
|
|
|
|
piVar1 = param_1 + 0x5a6;
|
|
|
|
*(undefined2 *)(param_1[0x5a7] + *piVar1 * 2) = 0;
|
|
|
|
*(byte *)(param_1[0x5a4] + *piVar1) = bVar9;
|
|
|
|
*piVar1 = *piVar1 + 1;
|
|
|
|
*(short *)(param_1 + bVar9 + 0x23) = (short)param_1[bVar9 + 0x23] + 1;
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
}
|
|
|
|
iVar7 = param_1[0x15];
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar10 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar10 = param_1[0xc] + iVar7;
|
|
|
|
}
|
|
|
|
FUN_00614031(param_1,iVar10,param_1[0x19] - iVar7,param_2 == 4);
|
|
|
|
param_1[0x15] = param_1[0x19];
|
|
|
|
FUN_00602deb();
|
|
|
|
if (*(int *)(*param_1 + 0x10) == 0) {
|
|
|
|
if (param_2 != 4) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
return '\x02';
|
|
|
|
}
|
|
|
|
return (param_2 == 4) * '\x02' + '\x01';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (2 < uVar6) {
|
|
|
|
uVar6 = (param_1[0x10] << ((byte)param_1[0x14] & 0x1f) ^
|
|
|
|
(uint)*(byte *)(param_1[0xc] + 2 + param_1[0x19])) & param_1[0x13];
|
|
|
|
param_1[0x10] = uVar6;
|
|
|
|
uVar5 = *(ushort *)(param_1[0xf] + uVar6 * 2);
|
|
|
|
local_8 = (uint)uVar5;
|
|
|
|
*(ushort *)(param_1[0xe] + (param_1[0xb] & param_1[0x19]) * 2) = uVar5;
|
|
|
|
*(short *)(param_1[0xf] + param_1[0x10] * 2) = (short)param_1[0x19];
|
|
|
|
}
|
|
|
|
param_1[0x1c] = param_1[0x16];
|
|
|
|
param_1[0x17] = param_1[0x1a];
|
|
|
|
param_1[0x16] = 2;
|
|
|
|
if (((local_8 != 0) && ((uint)param_1[0x1c] < (uint)param_1[0x1e])) &&
|
|
|
|
(param_1[0x19] - local_8 <= param_1[9] - 0x106U)) {
|
|
|
|
if (param_1[0x20] != 2) {
|
|
|
|
iVar7 = FUN_00602e3f(local_8);
|
|
|
|
param_1[0x16] = iVar7;
|
|
|
|
}
|
|
|
|
if (((uint)param_1[0x16] < 6) &&
|
|
|
|
((param_1[0x20] == 1 ||
|
|
|
|
((param_1[0x16] == 3 && (0x1000 < (uint)(param_1[0x19] - param_1[0x1a]))))))) {
|
|
|
|
param_1[0x16] = 2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (((uint)param_1[0x1c] < 3) || ((uint)param_1[0x1c] < (uint)param_1[0x16])) {
|
|
|
|
if (param_1[0x18] == 0) {
|
|
|
|
param_1[0x19] = param_1[0x19] + 1;
|
|
|
|
param_1[0x1b] = param_1[0x1b] + -1;
|
|
|
|
param_1[0x18] = 1;
|
|
|
|
goto LAB_006034c7;
|
|
|
|
}
|
|
|
|
bVar9 = *(byte *)(param_1[0x19] + -1 + param_1[0xc]);
|
|
|
|
*(undefined2 *)(param_1[0x5a7] + param_1[0x5a6] * 2) = 0;
|
|
|
|
*(byte *)(param_1[0x5a4] + param_1[0x5a6]) = bVar9;
|
|
|
|
param_1[0x5a6] = param_1[0x5a6] + 1;
|
|
|
|
*(short *)(param_1 + bVar9 + 0x23) = (short)param_1[bVar9 + 0x23] + 1;
|
|
|
|
if (param_1[0x5a6] == param_1[0x5a5] + -1) {
|
|
|
|
iVar7 = param_1[0x15];
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar10 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar10 = param_1[0xc] + iVar7;
|
|
|
|
}
|
|
|
|
FUN_00614031(param_1,iVar10,param_1[0x19] - iVar7,0);
|
|
|
|
param_1[0x15] = param_1[0x19];
|
|
|
|
FUN_00602deb();
|
|
|
|
}
|
|
|
|
param_1[0x19] = param_1[0x19] + 1;
|
|
|
|
param_1[0x1b] = param_1[0x1b] + -1;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar7 = param_1[0x1b];
|
|
|
|
iVar10 = param_1[0x19];
|
|
|
|
sVar4 = (short)param_1[0x19] - (short)param_1[0x17];
|
|
|
|
bVar9 = (char)param_1[0x1c] - 3;
|
|
|
|
*(short *)(param_1[0x5a7] + param_1[0x5a6] * 2) = sVar4 + -1;
|
|
|
|
*(byte *)(param_1[0x5a4] + param_1[0x5a6]) = bVar9;
|
|
|
|
param_1[0x5a6] = param_1[0x5a6] + 1;
|
|
|
|
uVar5 = sVar4 - 2;
|
|
|
|
*(short *)(param_1 + (byte)(&DAT_007f6350)[bVar9] + 0x124) =
|
|
|
|
(short)param_1[(byte)(&DAT_007f6350)[bVar9] + 0x124] + 1;
|
|
|
|
if (uVar5 < 0x100) {
|
|
|
|
bVar9 = (&DAT_007f6150)[uVar5];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
bVar9 = (&DAT_007f6250)[uVar5 >> 7];
|
|
|
|
}
|
|
|
|
*(short *)(param_1 + bVar9 + 0x260) = (short)param_1[bVar9 + 0x260] + 1;
|
|
|
|
iVar2 = param_1[0x5a5];
|
|
|
|
iVar3 = param_1[0x5a6];
|
|
|
|
param_1[0x1b] = param_1[0x1b] + (1 - param_1[0x1c]);
|
|
|
|
param_1[0x1c] = param_1[0x1c] + -2;
|
|
|
|
do {
|
|
|
|
param_1[0x19] = param_1[0x19] + 1;
|
|
|
|
uVar6 = param_1[0x19];
|
|
|
|
if (uVar6 <= (uint)(iVar10 + -3 + iVar7)) {
|
|
|
|
uVar8 = (param_1[0x10] << ((byte)param_1[0x14] & 0x1f) ^
|
|
|
|
(uint)*(byte *)(param_1[0xc] + 2 + uVar6)) & param_1[0x13];
|
|
|
|
param_1[0x10] = uVar8;
|
|
|
|
uVar5 = *(ushort *)(param_1[0xf] + uVar8 * 2);
|
|
|
|
local_8 = (uint)uVar5;
|
|
|
|
*(ushort *)(param_1[0xe] + (param_1[0xb] & uVar6) * 2) = uVar5;
|
|
|
|
*(short *)(param_1[0xf] + param_1[0x10] * 2) = (short)param_1[0x19];
|
|
|
|
}
|
|
|
|
piVar1 = param_1 + 0x1c;
|
|
|
|
*piVar1 = *piVar1 + -1;
|
|
|
|
} while (*piVar1 != 0);
|
|
|
|
param_1[0x18] = 0;
|
|
|
|
param_1[0x19] = param_1[0x19] + 1;
|
|
|
|
param_1[0x16] = 2;
|
|
|
|
if (iVar3 != iVar2 + -1) goto LAB_006034c7;
|
|
|
|
iVar7 = param_1[0x15];
|
|
|
|
if (iVar7 < 0) {
|
|
|
|
iVar10 = 0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
iVar10 = param_1[0xc] + iVar7;
|
|
|
|
}
|
|
|
|
FUN_00614031(param_1,iVar10,param_1[0x19] - iVar7,0);
|
|
|
|
param_1[0x15] = param_1[0x19];
|
|
|
|
FUN_00602deb();
|
|
|
|
}
|
|
|
|
if (*(int *)(*param_1 + 0x10) == 0) {
|
|
|
|
return '\0';
|
|
|
|
}
|
|
|
|
} while( true );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060383d at 0x0060383D (size: 123) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined8 * FUN_0060383d(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
uint uVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
float fVar13;
|
|
|
|
float fVar14;
|
|
|
|
|
|
|
|
uVar5 = (uint)*param_3;
|
|
|
|
uVar6 = (uint)((ulonglong)*param_3 >> 0x20);
|
|
|
|
uVar7 = (uint)param_3[1];
|
|
|
|
fVar8 = (float)((ulonglong)param_3[1] >> 0x20);
|
|
|
|
fVar1 = (float)*param_2;
|
|
|
|
fVar2 = (float)((ulonglong)*param_2 >> 0x20);
|
|
|
|
fVar3 = (float)param_2[1];
|
|
|
|
fVar4 = (float)((ulonglong)param_2[1] >> 0x20);
|
|
|
|
fVar9 = (float)(uVar5 ^ _UNK_007f58a8);
|
|
|
|
fVar11 = (float)(uVar5 ^ _UNK_007f58ac);
|
|
|
|
fVar13 = (float)(uVar6 ^ _UNK_007f5898);
|
|
|
|
fVar14 = (float)(uVar6 ^ _UNK_007f589c);
|
|
|
|
fVar10 = (float)(uVar7 ^ _UNK_007f5888);
|
|
|
|
fVar12 = (float)(uVar7 ^ _UNK_007f588c);
|
|
|
|
*param_1 = CONCAT44(fVar8 * fVar2 + (float)(uVar5 ^ _UNK_007f58a4) * fVar3 +
|
|
|
|
(float)(uVar6 ^ _UNK_007f5894) * fVar4 +
|
|
|
|
(float)(uVar7 ^ _UNK_007f5884) * fVar1,
|
|
|
|
fVar8 * fVar1 + (float)(uVar5 ^ _DAT_007f58a0) * fVar4 +
|
|
|
|
(float)(uVar6 ^ _DAT_007f5890) * fVar3 +
|
|
|
|
(float)(uVar7 ^ _DAT_007f5880) * fVar2);
|
|
|
|
param_1[1] = CONCAT44(fVar8 * fVar4 + fVar11 * fVar1 + fVar14 * fVar2 + fVar12 * fVar3,
|
|
|
|
fVar8 * fVar3 + fVar9 * fVar2 + fVar13 * fVar1 + fVar10 * fVar4);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006038b8 at 0x006038B8 (size: 156) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float * FUN_006038b8(float *param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
undefined1 in_register_00001304 [12];
|
|
|
|
float fVar6;
|
|
|
|
undefined1 in_XMM5 [16];
|
|
|
|
undefined1 auVar7 [16];
|
|
|
|
undefined1 auVar8 [16];
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = param_2[3];
|
|
|
|
auVar7._4_12_ = in_XMM5._4_12_;
|
|
|
|
auVar7._0_4_ = fVar2 * fVar2;
|
|
|
|
fVar5 = fVar1 * fVar1 + auVar7._0_4_ + fVar3 * fVar3 + fVar4 * fVar4;
|
|
|
|
auVar8._4_12_ = in_register_00001304;
|
|
|
|
auVar8._0_4_ = fVar5;
|
|
|
|
auVar8 = rsqrtss(auVar7,auVar8);
|
|
|
|
fVar6 = auVar8._0_4_;
|
|
|
|
fVar6 = (DAT_00828ce0 - fVar5 * fVar6 * fVar6) * _DAT_00828cd0 * fVar6;
|
|
|
|
*param_1 = fVar1 * fVar6;
|
|
|
|
param_1[1] = fVar2 * fVar6;
|
|
|
|
param_1[2] = fVar3 * fVar6;
|
|
|
|
param_1[3] = fVar4 * fVar6;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00603a97 at 0x00603A97 (size: 300) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_00603a97(float *param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
int iVar2;
|
|
|
|
float fVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
float local_18 [4];
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
pfVar4 = param_2;
|
|
|
|
fVar3 = param_2[5] + *param_2 + param_2[10];
|
|
|
|
if (fVar3 <= DAT_00796344) {
|
|
|
|
local_18[1] = param_2[5];
|
|
|
|
pfVar1 = param_2 + 10;
|
|
|
|
local_18[0] = *param_2;
|
|
|
|
local_18[2] = *pfVar1;
|
|
|
|
param_2 = (float *)(uint)(*param_2 < param_2[5]);
|
|
|
|
if (local_18[(int)param_2] < *pfVar1) {
|
|
|
|
param_2 = (float *)0x2;
|
|
|
|
}
|
|
|
|
iVar5 = (int)param_2 * 4;
|
|
|
|
iVar2 = *(int *)(&DAT_007f5924 + iVar5);
|
|
|
|
iVar6 = iVar2 * 4;
|
|
|
|
local_8 = *(int *)(&DAT_007f5924 + iVar6);
|
|
|
|
fVar3 = SQRT(((local_18[(int)param_2] - local_18[iVar2]) - local_18[local_8]) + _DAT_007938b0) *
|
|
|
|
_DAT_007938b8;
|
|
|
|
param_1[(int)param_2] = fVar3;
|
|
|
|
fVar3 = _DAT_007c97cc / fVar3;
|
|
|
|
param_1[iVar2] = (pfVar4[(int)param_2 + iVar6] + pfVar4[iVar2 + iVar5]) * fVar3;
|
|
|
|
param_1[local_8] = (pfVar4[(int)param_2 + local_8 * 4] + pfVar4[iVar5 + local_8]) * fVar3;
|
|
|
|
param_1[3] = (pfVar4[iVar6 + local_8] - pfVar4[local_8 * 4 + iVar2]) * fVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar3 = SQRT(fVar3 + _DAT_007938b0) * _DAT_007938b8;
|
|
|
|
param_1[3] = fVar3;
|
|
|
|
fVar3 = _DAT_007c97cc / fVar3;
|
|
|
|
*param_1 = (param_2[6] - param_2[9]) * fVar3;
|
|
|
|
param_1[1] = (param_2[8] - param_2[2]) * fVar3;
|
|
|
|
param_1[2] = (param_2[1] - param_2[4]) * fVar3;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00603bc3 at 0x00603BC3 (size: 64) ---
|
|
|
|
|
|
float * FUN_00603bc3(float *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
|
|
|
|
fVar3 = param_3[1];
|
|
|
|
fVar4 = param_3[2];
|
|
|
|
fVar5 = param_3[3];
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar6 = param_3[5];
|
|
|
|
fVar7 = param_3[6];
|
|
|
|
fVar8 = param_3[7];
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar9 = param_3[0xd];
|
|
|
|
fVar10 = param_3[0xe];
|
|
|
|
fVar11 = param_3[0xf];
|
|
|
|
*param_1 = fVar1 * *param_3 + param_3[0xc] + fVar2 * param_3[4];
|
|
|
|
param_1[1] = fVar1 * fVar3 + fVar9 + fVar2 * fVar6;
|
|
|
|
param_1[2] = fVar1 * fVar4 + fVar10 + fVar2 * fVar7;
|
|
|
|
param_1[3] = fVar1 * fVar5 + fVar11 + fVar2 * fVar8;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00603c03 at 0x00603C03 (size: 89) ---
|
|
|
|
|
|
undefined8 * FUN_00603c03(undefined8 *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
undefined1 in_XMM0 [16];
|
|
|
|
undefined1 auVar2 [16];
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
|
|
|
|
fVar3 = *param_2;
|
|
|
|
fVar1 = param_2[1];
|
|
|
|
fVar4 = fVar3 * *param_3 + param_3[0xc] + fVar1 * param_3[4];
|
|
|
|
fVar5 = fVar3 * param_3[1] + param_3[0xd] + fVar1 * param_3[5];
|
|
|
|
fVar6 = fVar3 * param_3[3] + param_3[0xf] + fVar1 * param_3[7];
|
|
|
|
auVar2._4_4_ = fVar5;
|
|
|
|
auVar2._0_4_ = fVar4;
|
|
|
|
auVar2._8_4_ = fVar3 * param_3[2] + param_3[0xe] + fVar1 * param_3[6];
|
|
|
|
auVar2._12_4_ = fVar6;
|
|
|
|
auVar2 = rcpps(in_XMM0,auVar2);
|
|
|
|
fVar3 = auVar2._12_4_;
|
|
|
|
fVar3 = (fVar3 + fVar3) - fVar3 * fVar3 * fVar6;
|
|
|
|
*param_1 = CONCAT44(fVar5 * fVar3,fVar4 * fVar3);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00603c5c at 0x00603C5C (size: 57) ---
|
|
|
|
|
|
undefined8 * FUN_00603c5c(undefined8 *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
*param_1 = CONCAT44(*param_2 * param_3[1] + param_2[1] * param_3[5],
|
|
|
|
*param_2 * *param_3 + param_2[1] * param_3[4]);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00603c95 at 0x00603C95 (size: 192) ---
|
|
|
|
|
|
void FUN_00603c95(float *param_1,float *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
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;
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar7 = param_2[2];
|
|
|
|
fVar8 = param_2[3];
|
|
|
|
if (((uint)param_3 & 0xf) == 0) {
|
|
|
|
fVar11 = param_3[8] * fVar7 + param_3[0xc] * fVar8;
|
|
|
|
fVar12 = param_3[9] * fVar7 + param_3[0xd] * fVar8;
|
|
|
|
fVar13 = param_3[10] * fVar7 + param_3[0xe] * fVar8;
|
|
|
|
fVar14 = param_3[0xb] * fVar7 + param_3[0xf] * fVar8;
|
|
|
|
fVar7 = param_3[4];
|
|
|
|
fVar8 = param_3[5];
|
|
|
|
fVar9 = param_3[6];
|
|
|
|
fVar10 = param_3[7];
|
|
|
|
fVar3 = *param_3;
|
|
|
|
fVar4 = param_3[1];
|
|
|
|
fVar5 = param_3[2];
|
|
|
|
fVar6 = param_3[3];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar11 = (float)*(undefined8 *)(param_3 + 8) * fVar7 +
|
|
|
|
(float)*(undefined8 *)(param_3 + 0xc) * fVar8;
|
|
|
|
fVar12 = (float)((ulonglong)*(undefined8 *)(param_3 + 8) >> 0x20) * fVar7 +
|
|
|
|
(float)((ulonglong)*(undefined8 *)(param_3 + 0xc) >> 0x20) * fVar8;
|
|
|
|
fVar13 = (float)*(undefined8 *)(param_3 + 10) * fVar7 +
|
|
|
|
(float)*(undefined8 *)(param_3 + 0xe) * fVar8;
|
|
|
|
fVar14 = (float)((ulonglong)*(undefined8 *)(param_3 + 10) >> 0x20) * fVar7 +
|
|
|
|
(float)((ulonglong)*(undefined8 *)(param_3 + 0xe) >> 0x20) * fVar8;
|
|
|
|
fVar7 = (float)*(undefined8 *)(param_3 + 4);
|
|
|
|
fVar8 = (float)((ulonglong)*(undefined8 *)(param_3 + 4) >> 0x20);
|
|
|
|
fVar9 = (float)*(undefined8 *)(param_3 + 6);
|
|
|
|
fVar10 = (float)((ulonglong)*(undefined8 *)(param_3 + 6) >> 0x20);
|
|
|
|
fVar3 = (float)*(undefined8 *)param_3;
|
|
|
|
fVar4 = (float)((ulonglong)*(undefined8 *)param_3 >> 0x20);
|
|
|
|
fVar5 = (float)*(undefined8 *)(param_3 + 2);
|
|
|
|
fVar6 = (float)((ulonglong)*(undefined8 *)(param_3 + 2) >> 0x20);
|
|
|
|
}
|
|
|
|
*param_1 = fVar3 * fVar1 + fVar7 * fVar2 + fVar11;
|
|
|
|
param_1[1] = fVar4 * fVar1 + fVar8 * fVar2 + fVar12;
|
|
|
|
param_1[2] = fVar5 * fVar1 + fVar9 * fVar2 + fVar13;
|
|
|
|
param_1[3] = fVar6 * fVar1 + fVar10 * fVar2 + fVar14;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00603d55 at 0x00603D55 (size: 310) ---
|
|
|
|
|
|
undefined8 * FUN_00603d55(undefined8 *param_1,float *param_2,undefined8 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
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;
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = param_2[3];
|
|
|
|
fVar17 = (float)*param_3;
|
|
|
|
fVar18 = (float)((ulonglong)*param_3 >> 0x20);
|
|
|
|
fVar19 = (float)param_3[1];
|
|
|
|
fVar20 = (float)((ulonglong)param_3[1] >> 0x20);
|
|
|
|
fVar21 = (float)param_3[2];
|
|
|
|
fVar22 = (float)((ulonglong)param_3[2] >> 0x20);
|
|
|
|
fVar23 = (float)param_3[3];
|
|
|
|
fVar24 = (float)((ulonglong)param_3[3] >> 0x20);
|
|
|
|
fVar25 = (float)param_3[4];
|
|
|
|
fVar26 = (float)((ulonglong)param_3[4] >> 0x20);
|
|
|
|
fVar27 = (float)param_3[5];
|
|
|
|
fVar28 = (float)((ulonglong)param_3[5] >> 0x20);
|
|
|
|
fVar29 = (float)param_3[6];
|
|
|
|
fVar30 = (float)((ulonglong)param_3[6] >> 0x20);
|
|
|
|
fVar31 = (float)param_3[7];
|
|
|
|
fVar32 = (float)((ulonglong)param_3[7] >> 0x20);
|
|
|
|
fVar5 = param_2[4];
|
|
|
|
fVar6 = param_2[5];
|
|
|
|
fVar7 = param_2[6];
|
|
|
|
fVar8 = param_2[7];
|
|
|
|
fVar9 = param_2[8];
|
|
|
|
fVar10 = param_2[9];
|
|
|
|
fVar11 = param_2[10];
|
|
|
|
fVar12 = param_2[0xb];
|
|
|
|
fVar13 = param_2[0xc];
|
|
|
|
fVar14 = param_2[0xd];
|
|
|
|
fVar15 = param_2[0xe];
|
|
|
|
fVar16 = param_2[0xf];
|
|
|
|
*param_1 = CONCAT44(fVar1 * fVar18 + fVar2 * fVar22 + fVar3 * fVar26 + fVar4 * fVar30,
|
|
|
|
fVar1 * fVar17 + fVar2 * fVar21 + fVar3 * fVar25 + fVar4 * fVar29);
|
|
|
|
param_1[1] = CONCAT44(fVar1 * fVar20 + fVar2 * fVar24 + fVar3 * fVar28 + fVar4 * fVar32,
|
|
|
|
fVar1 * fVar19 + fVar2 * fVar23 + fVar3 * fVar27 + fVar4 * fVar31);
|
|
|
|
param_1[2] = CONCAT44(fVar5 * fVar18 + fVar6 * fVar22 + fVar7 * fVar26 + fVar8 * fVar30,
|
|
|
|
fVar5 * fVar17 + fVar6 * fVar21 + fVar7 * fVar25 + fVar8 * fVar29);
|
|
|
|
param_1[3] = CONCAT44(fVar5 * fVar20 + fVar6 * fVar24 + fVar7 * fVar28 + fVar8 * fVar32,
|
|
|
|
fVar5 * fVar19 + fVar6 * fVar23 + fVar7 * fVar27 + fVar8 * fVar31);
|
|
|
|
param_1[4] = CONCAT44(fVar9 * fVar18 + fVar10 * fVar22 + fVar11 * fVar26 + fVar12 * fVar30,
|
|
|
|
fVar9 * fVar17 + fVar10 * fVar21 + fVar11 * fVar25 + fVar12 * fVar29);
|
|
|
|
param_1[5] = CONCAT44(fVar9 * fVar20 + fVar10 * fVar24 + fVar11 * fVar28 + fVar12 * fVar32,
|
|
|
|
fVar9 * fVar19 + fVar10 * fVar23 + fVar11 * fVar27 + fVar12 * fVar31);
|
|
|
|
param_1[6] = CONCAT44(fVar18 * fVar13 + fVar22 * fVar14 + fVar26 * fVar15 + fVar30 * fVar16,
|
|
|
|
fVar17 * fVar13 + fVar21 * fVar14 + fVar25 * fVar15 + fVar29 * fVar16);
|
|
|
|
param_1[7] = CONCAT44(fVar20 * fVar13 + fVar24 * fVar14 + fVar28 * fVar15 + fVar32 * fVar16,
|
|
|
|
fVar19 * fVar13 + fVar23 * fVar14 + fVar27 * fVar15 + fVar31 * fVar16);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00603e8b at 0x00603E8B (size: 147) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float * FUN_00603e8b(float *param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
undefined1 in_XMM6 [16];
|
|
|
|
undefined1 auVar6 [16];
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = fVar1 * fVar1 + fVar2 * fVar2 + fVar3 * fVar3;
|
|
|
|
if (_DAT_007f58f0 <= fVar4) {
|
|
|
|
auVar6 = rsqrtss(in_XMM6,ZEXT416((uint)fVar4));
|
|
|
|
fVar5 = auVar6._0_4_;
|
|
|
|
fVar4 = (DAT_007f58d0 - fVar5 * fVar4 * fVar5) * fVar5 * DAT_007f58e0;
|
|
|
|
*param_1 = fVar1 * fVar4;
|
|
|
|
param_1[1] = fVar2 * fVar4;
|
|
|
|
param_1[2] = fVar3 * fVar4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = 0.0;
|
|
|
|
param_1[1] = 0.0;
|
|
|
|
param_1[2] = 0.0;
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00603f1f at 0x00603F1F (size: 160) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float * FUN_00603f1f(float *param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
undefined1 in_XMM6 [16];
|
|
|
|
undefined1 auVar6 [16];
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = fVar1 * fVar1 + fVar2 * fVar2 + fVar3 * fVar3;
|
|
|
|
if (_DAT_007f58f0 <= fVar4) {
|
|
|
|
auVar6 = rsqrtss(in_XMM6,ZEXT416((uint)fVar4));
|
|
|
|
fVar5 = auVar6._0_4_;
|
|
|
|
fVar5 = (DAT_007f58d0 - fVar5 * fVar4 * fVar5) * fVar5 * DAT_007f58e0;
|
|
|
|
fVar4 = param_2[3];
|
|
|
|
*param_1 = fVar1 * fVar5;
|
|
|
|
param_1[1] = fVar2 * fVar5;
|
|
|
|
param_1[2] = fVar3 * fVar5;
|
|
|
|
param_1[3] = fVar5 * fVar4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = 0.0;
|
|
|
|
param_1[1] = 0.0;
|
|
|
|
param_1[2] = 0.0;
|
|
|
|
param_1[3] = 0.0;
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060432e at 0x0060432E (size: 156) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float * FUN_0060432e(float *param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
undefined1 in_register_00001304 [12];
|
|
|
|
float fVar6;
|
|
|
|
undefined1 in_XMM5 [16];
|
|
|
|
undefined1 auVar7 [16];
|
|
|
|
undefined1 auVar8 [16];
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = param_2[3];
|
|
|
|
auVar7._4_12_ = in_XMM5._4_12_;
|
|
|
|
auVar7._0_4_ = fVar2 * fVar2;
|
|
|
|
fVar5 = fVar1 * fVar1 + auVar7._0_4_ + fVar3 * fVar3 + fVar4 * fVar4;
|
|
|
|
auVar8._4_12_ = in_register_00001304;
|
|
|
|
auVar8._0_4_ = fVar5;
|
|
|
|
auVar8 = rsqrtss(auVar7,auVar8);
|
|
|
|
fVar6 = auVar8._0_4_;
|
|
|
|
fVar6 = (DAT_00828e70 - fVar5 * fVar6 * fVar6) * _DAT_00828e60 * fVar6;
|
|
|
|
*param_1 = fVar1 * fVar6;
|
|
|
|
param_1[1] = fVar2 * fVar6;
|
|
|
|
param_1[2] = fVar3 * fVar6;
|
|
|
|
param_1[3] = fVar4 * fVar6;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006043ca at 0x006043CA (size: 180) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined8 *
|
|
|
|
FUN_006043ca(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,
|
|
|
|
undefined8 *param_5,float param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
|
|
|
|
fVar7 = param_6 * param_6;
|
|
|
|
fVar8 = param_6 * fVar7;
|
|
|
|
fVar3 = param_6 * _DAT_00828d60 + _DAT_00828d70 + fVar7 * _DAT_00828d50 + fVar8 * _DAT_00828d40;
|
|
|
|
fVar4 = param_6 * fRam00828d64 + fRam00828d74 + fVar7 * fRam00828d54 + fVar8 * fRam00828d44;
|
|
|
|
fVar5 = param_6 * fRam00828d68 + fRam00828d78 + fVar7 * fRam00828d58 + fVar8 * fRam00828d48;
|
|
|
|
fVar6 = param_6 * fRam00828d6c + fRam00828d7c + fVar7 * fRam00828d5c + fVar8 * fRam00828d4c;
|
|
|
|
fVar7 = *(float *)(param_2 + 1);
|
|
|
|
fVar8 = *(float *)(param_3 + 1);
|
|
|
|
fVar1 = *(float *)(param_4 + 1);
|
|
|
|
fVar2 = *(float *)(param_5 + 1);
|
|
|
|
*param_1 = CONCAT44((float)((ulonglong)*param_2 >> 0x20) * fVar3 +
|
|
|
|
(float)((ulonglong)*param_3 >> 0x20) * fVar4 +
|
|
|
|
(float)((ulonglong)*param_4 >> 0x20) * fVar5 +
|
|
|
|
(float)((ulonglong)*param_5 >> 0x20) * fVar6,
|
|
|
|
(float)*param_2 * fVar3 + (float)*param_3 * fVar4 + (float)*param_4 * fVar5 +
|
|
|
|
(float)*param_5 * fVar6);
|
|
|
|
*(float *)(param_1 + 1) = fVar7 * fVar3 + fVar8 * fVar4 + fVar1 * fVar5 + fVar2 * fVar6;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060447e at 0x0060447E (size: 135) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined8 *
|
|
|
|
FUN_0060447e(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,
|
|
|
|
undefined8 *param_5,float param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
|
|
|
|
fVar4 = param_6 * param_6;
|
|
|
|
fVar5 = param_6 * fVar4;
|
|
|
|
fVar1 = param_6 * _DAT_00828d60 + _DAT_00828d70 + fVar4 * _DAT_00828d50 + fVar5 * _DAT_00828d40;
|
|
|
|
fVar2 = param_6 * fRam00828d64 + fRam00828d74 + fVar4 * fRam00828d54 + fVar5 * fRam00828d44;
|
|
|
|
fVar3 = param_6 * fRam00828d68 + fRam00828d78 + fVar4 * fRam00828d58 + fVar5 * fRam00828d48;
|
|
|
|
fVar4 = param_6 * fRam00828d6c + fRam00828d7c + fVar4 * fRam00828d5c + fVar5 * fRam00828d4c;
|
|
|
|
*param_1 = CONCAT44((float)((ulonglong)*param_2 >> 0x20) * fVar1 +
|
|
|
|
(float)((ulonglong)*param_4 >> 0x20) * fVar3 +
|
|
|
|
(float)((ulonglong)*param_3 >> 0x20) * fVar2 +
|
|
|
|
(float)((ulonglong)*param_5 >> 0x20) * fVar4,
|
|
|
|
(float)*param_2 * fVar1 + (float)*param_4 * fVar3 +
|
|
|
|
(float)*param_3 * fVar2 + (float)*param_5 * fVar4);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00604505 at 0x00604505 (size: 167) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float * FUN_00604505(float *param_1,float *param_2,float *param_3,float *param_4,float *param_5,
|
|
|
|
float param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
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;
|
|
|
|
|
|
|
|
fVar15 = param_6 * param_6;
|
|
|
|
fVar16 = param_6 * fVar15;
|
|
|
|
fVar11 = param_6 * _DAT_00828d60 + _DAT_00828d70 + fVar15 * _DAT_00828d50 + fVar16 * _DAT_00828d40
|
|
|
|
;
|
|
|
|
fVar12 = param_6 * fRam00828d64 + fRam00828d74 + fVar15 * fRam00828d54 + fVar16 * fRam00828d44;
|
|
|
|
fVar13 = param_6 * fRam00828d68 + fRam00828d78 + fVar15 * fRam00828d58 + fVar16 * fRam00828d48;
|
|
|
|
fVar14 = param_6 * fRam00828d6c + fRam00828d7c + fVar15 * fRam00828d5c + fVar16 * fRam00828d4c;
|
|
|
|
fVar15 = param_2[1];
|
|
|
|
fVar16 = param_2[2];
|
|
|
|
fVar1 = param_2[3];
|
|
|
|
fVar2 = param_3[1];
|
|
|
|
fVar3 = param_3[2];
|
|
|
|
fVar4 = param_3[3];
|
|
|
|
fVar5 = param_4[1];
|
|
|
|
fVar6 = param_4[2];
|
|
|
|
fVar7 = param_4[3];
|
|
|
|
fVar8 = param_5[1];
|
|
|
|
fVar9 = param_5[2];
|
|
|
|
fVar10 = param_5[3];
|
|
|
|
*param_1 = *param_2 * fVar11 + *param_3 * fVar12 + *param_4 * fVar13 + *param_5 * fVar14;
|
|
|
|
param_1[1] = fVar15 * fVar11 + fVar2 * fVar12 + fVar5 * fVar13 + fVar8 * fVar14;
|
|
|
|
param_1[2] = fVar16 * fVar11 + fVar3 * fVar12 + fVar6 * fVar13 + fVar9 * fVar14;
|
|
|
|
param_1[3] = fVar1 * fVar11 + fVar4 * fVar12 + fVar7 * fVar13 + fVar10 * fVar14;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006045ac at 0x006045AC (size: 181) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined8 *
|
|
|
|
FUN_006045ac(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,
|
|
|
|
undefined8 *param_5,float param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
|
|
|
|
fVar7 = param_6 * param_6;
|
|
|
|
fVar8 = param_6 * fVar7;
|
|
|
|
fVar3 = param_6 * _DAT_00828d20 + _DAT_00828d30 + fVar7 * _DAT_00828d10 + fVar8 * _DAT_00828d00;
|
|
|
|
fVar4 = param_6 * fRam00828d24 + fVar7 * fRam00828d14 + fVar8 * fRam00828d04;
|
|
|
|
fVar5 = param_6 * fRam00828d28 + fVar7 * fRam00828d18 + fVar8 * fRam00828d08;
|
|
|
|
fVar6 = param_6 * fRam00828d2c + fVar7 * fRam00828d1c + fVar8 * fRam00828d0c;
|
|
|
|
fVar7 = *(float *)(param_2 + 1);
|
|
|
|
fVar8 = *(float *)(param_3 + 1);
|
|
|
|
fVar1 = *(float *)(param_4 + 1);
|
|
|
|
fVar2 = *(float *)(param_5 + 1);
|
|
|
|
*param_1 = CONCAT44((float)((ulonglong)*param_2 >> 0x20) * fVar3 +
|
|
|
|
(float)((ulonglong)*param_3 >> 0x20) * fVar4 +
|
|
|
|
(float)((ulonglong)*param_4 >> 0x20) * fVar5 +
|
|
|
|
(float)((ulonglong)*param_5 >> 0x20) * fVar6,
|
|
|
|
(float)*param_2 * fVar3 + (float)*param_3 * fVar4 + (float)*param_4 * fVar5 +
|
|
|
|
(float)*param_5 * fVar6);
|
|
|
|
*(float *)(param_1 + 1) = fVar7 * fVar3 + fVar8 * fVar4 + fVar1 * fVar5 + fVar2 * fVar6;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00604661 at 0x00604661 (size: 156) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float * FUN_00604661(float *param_1,float *param_2,float *param_3,float *param_4,float *param_5,
|
|
|
|
float param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
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;
|
|
|
|
|
|
|
|
fVar15 = param_6 * param_6;
|
|
|
|
fVar16 = param_6 * fVar15;
|
|
|
|
fVar11 = param_6 * _DAT_00828d20 + _DAT_00828d30 + fVar15 * _DAT_00828d10 + fVar16 * _DAT_00828d00
|
|
|
|
;
|
|
|
|
fVar12 = param_6 * fRam00828d24 + fVar15 * fRam00828d14 + fVar16 * fRam00828d04;
|
|
|
|
fVar13 = param_6 * fRam00828d28 + fVar15 * fRam00828d18 + fVar16 * fRam00828d08;
|
|
|
|
fVar14 = param_6 * fRam00828d2c + fVar15 * fRam00828d1c + fVar16 * fRam00828d0c;
|
|
|
|
fVar15 = param_2[1];
|
|
|
|
fVar16 = param_2[2];
|
|
|
|
fVar1 = param_2[3];
|
|
|
|
fVar2 = param_3[1];
|
|
|
|
fVar3 = param_3[2];
|
|
|
|
fVar4 = param_3[3];
|
|
|
|
fVar5 = param_4[1];
|
|
|
|
fVar6 = param_4[2];
|
|
|
|
fVar7 = param_4[3];
|
|
|
|
fVar8 = param_5[1];
|
|
|
|
fVar9 = param_5[2];
|
|
|
|
fVar10 = param_5[3];
|
|
|
|
*param_1 = *param_2 * fVar11 + *param_3 * fVar12 + *param_4 * fVar13 + *param_5 * fVar14;
|
|
|
|
param_1[1] = fVar15 * fVar11 + fVar2 * fVar12 + fVar5 * fVar13 + fVar8 * fVar14;
|
|
|
|
param_1[2] = fVar16 * fVar11 + fVar3 * fVar12 + fVar6 * fVar13 + fVar9 * fVar14;
|
|
|
|
param_1[3] = fVar1 * fVar11 + fVar4 * fVar12 + fVar7 * fVar13 + fVar10 * fVar14;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006046fd at 0x006046FD (size: 136) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined8 *
|
|
|
|
FUN_006046fd(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,
|
|
|
|
undefined8 *param_5,float param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
|
|
|
|
fVar4 = param_6 * param_6;
|
|
|
|
fVar5 = param_6 * fVar4;
|
|
|
|
fVar1 = param_6 * _DAT_00828d20 + _DAT_00828d30 + fVar4 * _DAT_00828d10 + fVar5 * _DAT_00828d00;
|
|
|
|
fVar2 = param_6 * fRam00828d24 + fVar4 * fRam00828d14 + fVar5 * fRam00828d04;
|
|
|
|
fVar3 = param_6 * fRam00828d28 + fVar4 * fRam00828d18 + fVar5 * fRam00828d08;
|
|
|
|
fVar4 = param_6 * fRam00828d2c + fVar4 * fRam00828d1c + fVar5 * fRam00828d0c;
|
|
|
|
*param_1 = CONCAT44((float)((ulonglong)*param_2 >> 0x20) * fVar1 +
|
|
|
|
(float)((ulonglong)*param_4 >> 0x20) * fVar3 +
|
|
|
|
(float)((ulonglong)*param_3 >> 0x20) * fVar2 +
|
|
|
|
(float)((ulonglong)*param_5 >> 0x20) * fVar4,
|
|
|
|
(float)*param_2 * fVar1 + (float)*param_4 * fVar3 +
|
|
|
|
(float)*param_3 * fVar2 + (float)*param_5 * fVar4);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00604785 at 0x00604785 (size: 92) ---
|
|
|
|
|
|
undefined8 *
|
|
|
|
FUN_00604785(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,
|
|
|
|
float param_5,float param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
|
|
|
|
fVar1 = *(float *)(param_2 + 1);
|
|
|
|
uVar2 = *param_3;
|
|
|
|
fVar4 = (float)*param_2;
|
|
|
|
fVar5 = (float)((ulonglong)*param_2 >> 0x20);
|
|
|
|
uVar3 = *param_4;
|
|
|
|
*(float *)(param_1 + 1) =
|
|
|
|
(*(float *)(param_3 + 1) - fVar1) * param_5 + fVar1 +
|
|
|
|
(*(float *)(param_4 + 1) - fVar1) * param_6;
|
|
|
|
*param_1 = CONCAT44(((float)((ulonglong)uVar2 >> 0x20) - fVar5) * param_5 + fVar5 +
|
|
|
|
((float)((ulonglong)uVar3 >> 0x20) - fVar5) * param_6,
|
|
|
|
((float)uVar2 - fVar4) * param_5 + fVar4 + ((float)uVar3 - fVar4) * param_6);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006047e1 at 0x006047E1 (size: 72) ---
|
|
|
|
|
|
float * FUN_006047e1(float *param_1,float *param_2,float *param_3,float *param_4,float param_5,
|
|
|
|
float param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = param_2[3];
|
|
|
|
fVar5 = param_3[1];
|
|
|
|
fVar6 = param_3[2];
|
|
|
|
fVar7 = param_3[3];
|
|
|
|
fVar8 = param_4[1];
|
|
|
|
fVar9 = param_4[2];
|
|
|
|
fVar10 = param_4[3];
|
|
|
|
*param_1 = (*param_3 - fVar1) * param_5 + fVar1 + (*param_4 - fVar1) * param_6;
|
|
|
|
param_1[1] = (fVar5 - fVar2) * param_5 + fVar2 + (fVar8 - fVar2) * param_6;
|
|
|
|
param_1[2] = (fVar6 - fVar3) * param_5 + fVar3 + (fVar9 - fVar3) * param_6;
|
|
|
|
param_1[3] = (fVar7 - fVar4) * param_5 + fVar4 + (fVar10 - fVar4) * param_6;
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00604829 at 0x00604829 (size: 81) ---
|
|
|
|
|
|
undefined8 *
|
|
|
|
FUN_00604829(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,undefined8 *param_4,
|
|
|
|
float param_5,float param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
|
|
|
|
fVar1 = (float)*param_2;
|
|
|
|
fVar2 = (float)((ulonglong)*param_2 >> 0x20);
|
|
|
|
*param_1 = CONCAT44(((float)((ulonglong)*param_3 >> 0x20) - fVar2) * param_5 + fVar2 +
|
|
|
|
((float)((ulonglong)*param_4 >> 0x20) - fVar2) * param_6,
|
|
|
|
((float)*param_3 - fVar1) * param_5 + fVar1 +
|
|
|
|
((float)*param_4 - fVar1) * param_6);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060487a at 0x0060487A (size: 176) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
undefined8 *
|
|
|
|
FUN_0060487a(undefined8 *param_1,float *param_2,undefined8 *param_3,undefined8 *param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
undefined1 auVar3 [16];
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
undefined1 auVar4 [16];
|
|
|
|
undefined1 auVar5 [16];
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
float fVar13;
|
|
|
|
float fVar14;
|
|
|
|
float in_XMM6_Dc;
|
|
|
|
float in_XMM6_Dd;
|
|
|
|
|
|
|
|
fVar12 = param_2[3];
|
|
|
|
fVar1 = *(float *)(param_3 + 1);
|
|
|
|
fVar2 = *(float *)(param_4 + 1);
|
|
|
|
fVar8 = (float)*param_3;
|
|
|
|
fVar9 = (float)((ulonglong)*param_3 >> 0x20);
|
|
|
|
fVar14 = fVar9 * param_2[1];
|
|
|
|
fVar10 = (float)*param_4;
|
|
|
|
fVar6 = *param_2 * fVar10;
|
|
|
|
fVar11 = (float)((ulonglong)*param_4 >> 0x20);
|
|
|
|
fVar7 = param_2[1] * fVar11;
|
|
|
|
fVar13 = fVar12 * 0.0 + fVar14;
|
|
|
|
auVar5._0_4_ = param_2[2] * fVar2 + fVar6;
|
|
|
|
auVar5._4_4_ = fVar12 * 0.0 + fVar7;
|
|
|
|
auVar5._8_4_ = fVar6 + in_XMM6_Dc;
|
|
|
|
auVar5._12_4_ = fVar7 + in_XMM6_Dd;
|
|
|
|
fVar6 = fVar1 * param_2[2] + fVar8 * *param_2 + fVar14;
|
|
|
|
auVar4._4_12_ = auVar5._4_12_;
|
|
|
|
auVar4._0_4_ = auVar5._0_4_ + fVar7;
|
|
|
|
fVar7 = fVar6 - auVar4._0_4_;
|
|
|
|
if (fVar7 == _DAT_008f427c) {
|
|
|
|
param_1 = (undefined8 *)0x0;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
auVar3._4_4_ = fVar14;
|
|
|
|
auVar3._0_4_ = fVar7;
|
|
|
|
auVar3._8_4_ = fVar13;
|
|
|
|
auVar3._12_4_ = fVar13;
|
|
|
|
auVar5 = rcpss(auVar4,auVar3);
|
|
|
|
fVar13 = auVar5._0_4_;
|
|
|
|
fVar12 = (fVar6 + fVar12) * ((fVar13 + fVar13) - fVar7 * fVar13 * fVar13);
|
|
|
|
*param_1 = CONCAT44(fVar9 + fVar12 * (fVar11 - fVar9),fVar8 + fVar12 * (fVar10 - fVar8));
|
|
|
|
*(float *)(param_1 + 1) = fVar1 + fVar12 * (fVar2 - fVar1);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060515e at 0x0060515E (size: 204) ---
|
|
|
|
|
|
void FUN_0060515e(undefined8 *param_1,undefined8 *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
float fVar7;
|
|
|
|
float fVar8;
|
|
|
|
float fVar9;
|
|
|
|
|
|
|
|
if (((uint)param_3 & 0xf) == 0) {
|
|
|
|
fVar3 = *(float *)(param_2 + 1);
|
|
|
|
fVar1 = fVar3 * param_3[8];
|
|
|
|
fVar2 = fVar3 * param_3[9];
|
|
|
|
fVar3 = fVar3 * param_3[10];
|
|
|
|
fVar6 = (float)((ulonglong)*param_2 >> 0x20);
|
|
|
|
fVar4 = fVar6 * param_3[4];
|
|
|
|
fVar5 = fVar6 * param_3[5];
|
|
|
|
fVar6 = fVar6 * param_3[6];
|
|
|
|
fVar9 = (float)*param_2;
|
|
|
|
fVar7 = fVar9 * *param_3;
|
|
|
|
fVar8 = fVar9 * param_3[1];
|
|
|
|
fVar9 = fVar9 * param_3[2];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar3 = *(float *)(param_2 + 1);
|
|
|
|
fVar1 = (float)*(undefined8 *)(param_3 + 8) * fVar3;
|
|
|
|
fVar2 = (float)((ulonglong)*(undefined8 *)(param_3 + 8) >> 0x20) * fVar3;
|
|
|
|
fVar3 = (float)*(undefined8 *)(param_3 + 10) * fVar3;
|
|
|
|
fVar6 = (float)((ulonglong)*param_2 >> 0x20);
|
|
|
|
fVar4 = (float)*(undefined8 *)(param_3 + 4) * fVar6;
|
|
|
|
fVar5 = (float)((ulonglong)*(undefined8 *)(param_3 + 4) >> 0x20) * fVar6;
|
|
|
|
fVar6 = (float)*(undefined8 *)(param_3 + 6) * fVar6;
|
|
|
|
fVar9 = (float)*param_2;
|
|
|
|
fVar7 = (float)*(undefined8 *)param_3 * fVar9;
|
|
|
|
fVar8 = (float)((ulonglong)*(undefined8 *)param_3 >> 0x20) * fVar9;
|
|
|
|
fVar9 = (float)*(undefined8 *)(param_3 + 2) * fVar9;
|
|
|
|
}
|
|
|
|
*param_1 = CONCAT44(fVar8 + fVar5 + fVar2,fVar7 + fVar4 + fVar1);
|
|
|
|
*(float *)(param_1 + 1) = fVar9 + fVar6 + fVar3;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060522a at 0x0060522A (size: 199) ---
|
|
|
|
|
|
void FUN_0060522a(float *param_1,undefined8 *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
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;
|
|
|
|
|
|
|
|
fVar1 = (float)*param_2;
|
|
|
|
fVar3 = (float)((ulonglong)*param_2 >> 0x20);
|
|
|
|
fVar7 = *(float *)(param_2 + 1);
|
|
|
|
if (((uint)param_3 & 0xf) == 0) {
|
|
|
|
fVar11 = param_3[8] * fVar7 + param_3[0xc];
|
|
|
|
fVar12 = param_3[9] * fVar7 + param_3[0xd];
|
|
|
|
fVar13 = param_3[10] * fVar7 + param_3[0xe];
|
|
|
|
fVar14 = param_3[0xb] * fVar7 + param_3[0xf];
|
|
|
|
fVar7 = param_3[4];
|
|
|
|
fVar8 = param_3[5];
|
|
|
|
fVar9 = param_3[6];
|
|
|
|
fVar10 = param_3[7];
|
|
|
|
fVar2 = *param_3;
|
|
|
|
fVar4 = param_3[1];
|
|
|
|
fVar5 = param_3[2];
|
|
|
|
fVar6 = param_3[3];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar11 = (float)*(undefined8 *)(param_3 + 8) * fVar7 + (float)*(undefined8 *)(param_3 + 0xc);
|
|
|
|
fVar12 = (float)((ulonglong)*(undefined8 *)(param_3 + 8) >> 0x20) * fVar7 +
|
|
|
|
(float)((ulonglong)*(undefined8 *)(param_3 + 0xc) >> 0x20);
|
|
|
|
fVar13 = (float)*(undefined8 *)(param_3 + 10) * fVar7 + (float)*(undefined8 *)(param_3 + 0xe);
|
|
|
|
fVar14 = (float)((ulonglong)*(undefined8 *)(param_3 + 10) >> 0x20) * fVar7 +
|
|
|
|
(float)((ulonglong)*(undefined8 *)(param_3 + 0xe) >> 0x20);
|
|
|
|
fVar7 = (float)*(undefined8 *)(param_3 + 4);
|
|
|
|
fVar8 = (float)((ulonglong)*(undefined8 *)(param_3 + 4) >> 0x20);
|
|
|
|
fVar9 = (float)*(undefined8 *)(param_3 + 6);
|
|
|
|
fVar10 = (float)((ulonglong)*(undefined8 *)(param_3 + 6) >> 0x20);
|
|
|
|
fVar2 = (float)*(undefined8 *)param_3;
|
|
|
|
fVar4 = (float)((ulonglong)*(undefined8 *)param_3 >> 0x20);
|
|
|
|
fVar5 = (float)*(undefined8 *)(param_3 + 2);
|
|
|
|
fVar6 = (float)((ulonglong)*(undefined8 *)(param_3 + 2) >> 0x20);
|
|
|
|
}
|
|
|
|
*param_1 = fVar2 * fVar1 + fVar7 * fVar3 + fVar11;
|
|
|
|
param_1[1] = fVar4 * fVar1 + fVar8 * fVar3 + fVar12;
|
|
|
|
param_1[2] = fVar5 * fVar1 + fVar9 * fVar3 + fVar13;
|
|
|
|
param_1[3] = fVar6 * fVar1 + fVar10 * fVar3 + fVar14;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006052f1 at 0x006052F1 (size: 244) ---
|
|
|
|
|
|
void FUN_006052f1(undefined8 *param_1,undefined8 *param_2,float *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
float fVar6;
|
|
|
|
undefined1 auVar7 [16];
|
|
|
|
undefined1 auVar8 [16];
|
|
|
|
float fVar9;
|
|
|
|
float fVar10;
|
|
|
|
float fVar11;
|
|
|
|
float fVar12;
|
|
|
|
float fVar13;
|
|
|
|
float fVar14;
|
|
|
|
float fVar15;
|
|
|
|
float fVar16;
|
|
|
|
|
|
|
|
fVar1 = (float)*param_2;
|
|
|
|
fVar3 = (float)((ulonglong)*param_2 >> 0x20);
|
|
|
|
fVar9 = *(float *)(param_2 + 1);
|
|
|
|
if (((uint)param_3 & 0xf) == 0) {
|
|
|
|
fVar13 = param_3[8] * fVar9 + param_3[0xc];
|
|
|
|
fVar14 = param_3[9] * fVar9 + param_3[0xd];
|
|
|
|
fVar15 = param_3[10] * fVar9 + param_3[0xe];
|
|
|
|
fVar16 = param_3[0xb] * fVar9 + param_3[0xf];
|
|
|
|
fVar10 = param_3[4];
|
|
|
|
fVar11 = param_3[5];
|
|
|
|
fVar9 = param_3[6];
|
|
|
|
fVar12 = param_3[7];
|
|
|
|
fVar2 = *param_3;
|
|
|
|
fVar4 = param_3[1];
|
|
|
|
fVar5 = param_3[2];
|
|
|
|
fVar6 = param_3[3];
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar13 = (float)*(undefined8 *)(param_3 + 8) * fVar9 + (float)*(undefined8 *)(param_3 + 0xc);
|
|
|
|
fVar14 = (float)((ulonglong)*(undefined8 *)(param_3 + 8) >> 0x20) * fVar9 +
|
|
|
|
(float)((ulonglong)*(undefined8 *)(param_3 + 0xc) >> 0x20);
|
|
|
|
fVar15 = (float)*(undefined8 *)(param_3 + 10) * fVar9 + (float)*(undefined8 *)(param_3 + 0xe);
|
|
|
|
fVar16 = (float)((ulonglong)*(undefined8 *)(param_3 + 10) >> 0x20) * fVar9 +
|
|
|
|
(float)((ulonglong)*(undefined8 *)(param_3 + 0xe) >> 0x20);
|
|
|
|
fVar10 = (float)*(undefined8 *)(param_3 + 4);
|
|
|
|
fVar11 = (float)((ulonglong)*(undefined8 *)(param_3 + 4) >> 0x20);
|
|
|
|
fVar9 = (float)*(undefined8 *)(param_3 + 6);
|
|
|
|
fVar12 = (float)((ulonglong)*(undefined8 *)(param_3 + 6) >> 0x20);
|
|
|
|
fVar2 = (float)*(undefined8 *)param_3;
|
|
|
|
fVar4 = (float)((ulonglong)*(undefined8 *)param_3 >> 0x20);
|
|
|
|
fVar5 = (float)*(undefined8 *)(param_3 + 2);
|
|
|
|
fVar6 = (float)((ulonglong)*(undefined8 *)(param_3 + 2) >> 0x20);
|
|
|
|
}
|
|
|
|
auVar7._4_4_ = fVar1;
|
|
|
|
auVar7._0_4_ = fVar1;
|
|
|
|
auVar7._8_4_ = fVar1;
|
|
|
|
auVar7._12_4_ = fVar1;
|
|
|
|
fVar13 = fVar2 * fVar1 + fVar10 * fVar3 + fVar13;
|
|
|
|
fVar14 = fVar4 * fVar1 + fVar11 * fVar3 + fVar14;
|
|
|
|
fVar15 = fVar5 * fVar1 + fVar9 * fVar3 + fVar15;
|
|
|
|
fVar16 = fVar6 * fVar1 + fVar12 * fVar3 + fVar16;
|
|
|
|
auVar8._4_4_ = fVar14;
|
|
|
|
auVar8._0_4_ = fVar13;
|
|
|
|
auVar8._8_4_ = fVar15;
|
|
|
|
auVar8._12_4_ = fVar16;
|
|
|
|
auVar8 = rcpps(auVar7,auVar8);
|
|
|
|
fVar9 = auVar8._12_4_;
|
|
|
|
fVar9 = (fVar9 + fVar9) - fVar9 * fVar16 * fVar9;
|
|
|
|
*param_1 = CONCAT44(fVar14 * fVar9,fVar13 * fVar9);
|
|
|
|
*(float *)(param_1 + 1) = fVar15 * fVar9;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006053e5 at 0x006053E5 (size: 358) ---
|
|
|
|
|
|
void __thiscall FUN_006053e5(undefined4 *param_1,undefined4 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
|
|
|
|
uVar1 = *param_2;
|
|
|
|
*param_1 = uVar1;
|
|
|
|
param_1[1] = uVar1;
|
|
|
|
param_1[2] = uVar1;
|
|
|
|
param_1[3] = uVar1;
|
|
|
|
uVar1 = param_2[4];
|
|
|
|
param_1[0x10] = uVar1;
|
|
|
|
param_1[0x11] = uVar1;
|
|
|
|
param_1[0x12] = uVar1;
|
|
|
|
param_1[0x13] = uVar1;
|
|
|
|
uVar1 = param_2[8];
|
|
|
|
param_1[0x20] = uVar1;
|
|
|
|
param_1[0x21] = uVar1;
|
|
|
|
param_1[0x22] = uVar1;
|
|
|
|
param_1[0x23] = uVar1;
|
|
|
|
uVar1 = param_2[0xc];
|
|
|
|
param_1[0x30] = uVar1;
|
|
|
|
param_1[0x31] = uVar1;
|
|
|
|
param_1[0x32] = uVar1;
|
|
|
|
param_1[0x33] = uVar1;
|
|
|
|
uVar1 = param_2[1];
|
|
|
|
param_1[4] = uVar1;
|
|
|
|
param_1[5] = uVar1;
|
|
|
|
param_1[6] = uVar1;
|
|
|
|
param_1[7] = uVar1;
|
|
|
|
uVar1 = param_2[5];
|
|
|
|
param_1[0x14] = uVar1;
|
|
|
|
param_1[0x15] = uVar1;
|
|
|
|
param_1[0x16] = uVar1;
|
|
|
|
param_1[0x17] = uVar1;
|
|
|
|
uVar1 = param_2[9];
|
|
|
|
param_1[0x24] = uVar1;
|
|
|
|
param_1[0x25] = uVar1;
|
|
|
|
param_1[0x26] = uVar1;
|
|
|
|
param_1[0x27] = uVar1;
|
|
|
|
uVar1 = param_2[0xd];
|
|
|
|
param_1[0x34] = uVar1;
|
|
|
|
param_1[0x35] = uVar1;
|
|
|
|
param_1[0x36] = uVar1;
|
|
|
|
param_1[0x37] = uVar1;
|
|
|
|
uVar1 = param_2[2];
|
|
|
|
param_1[8] = uVar1;
|
|
|
|
param_1[9] = uVar1;
|
|
|
|
param_1[10] = uVar1;
|
|
|
|
param_1[0xb] = uVar1;
|
|
|
|
uVar1 = param_2[6];
|
|
|
|
param_1[0x18] = uVar1;
|
|
|
|
param_1[0x19] = uVar1;
|
|
|
|
param_1[0x1a] = uVar1;
|
|
|
|
param_1[0x1b] = uVar1;
|
|
|
|
uVar1 = param_2[10];
|
|
|
|
param_1[0x28] = uVar1;
|
|
|
|
param_1[0x29] = uVar1;
|
|
|
|
param_1[0x2a] = uVar1;
|
|
|
|
param_1[0x2b] = uVar1;
|
|
|
|
uVar1 = param_2[0xe];
|
|
|
|
param_1[0x38] = uVar1;
|
|
|
|
param_1[0x39] = uVar1;
|
|
|
|
param_1[0x3a] = uVar1;
|
|
|
|
param_1[0x3b] = uVar1;
|
|
|
|
uVar1 = param_2[3];
|
|
|
|
param_1[0xc] = uVar1;
|
|
|
|
param_1[0xd] = uVar1;
|
|
|
|
param_1[0xe] = uVar1;
|
|
|
|
param_1[0xf] = uVar1;
|
|
|
|
uVar1 = param_2[7];
|
|
|
|
param_1[0x1c] = uVar1;
|
|
|
|
param_1[0x1d] = uVar1;
|
|
|
|
param_1[0x1e] = uVar1;
|
|
|
|
param_1[0x1f] = uVar1;
|
|
|
|
uVar1 = param_2[0xb];
|
|
|
|
param_1[0x2c] = uVar1;
|
|
|
|
param_1[0x2d] = uVar1;
|
|
|
|
param_1[0x2e] = uVar1;
|
|
|
|
param_1[0x2f] = uVar1;
|
|
|
|
uVar1 = param_2[0xf];
|
|
|
|
param_1[0x3c] = uVar1;
|
|
|
|
param_1[0x3d] = uVar1;
|
|
|
|
param_1[0x3e] = uVar1;
|
|
|
|
param_1[0x3f] = uVar1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006060c3 at 0x006060C3 (size: 298) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_006060c3(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_006061ed at 0x006061ED (size: 214) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x006062a4) */
|
|
|
|
|
|
|
|
int FUN_006061ed(int param_1,int param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined8 *extraout_ECX;
|
|
|
|
uint uVar3;
|
|
|
|
int extraout_EDX;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
undefined8 in_XMM0_Qa;
|
|
|
|
undefined8 in_XMM0_Qb;
|
|
|
|
undefined8 in_XMM3_Qa;
|
|
|
|
undefined8 in_XMM3_Qb;
|
|
|
|
|
|
|
|
iVar2 = param_1;
|
|
|
|
if (7 < param_3) {
|
|
|
|
uVar5 = param_3 & 0xfffffff8;
|
|
|
|
do {
|
|
|
|
FUN_006060c3();
|
|
|
|
*extraout_ECX = in_XMM0_Qa;
|
|
|
|
extraout_ECX[1] = in_XMM0_Qb;
|
|
|
|
extraout_ECX[2] = in_XMM3_Qa;
|
|
|
|
extraout_ECX[3] = in_XMM3_Qb;
|
|
|
|
} while (extraout_EDX != 8);
|
|
|
|
param_3 = param_3 - uVar5;
|
|
|
|
param_2 = param_2 + uVar5 * 2;
|
|
|
|
param_1 = param_1 + uVar5 * 4;
|
|
|
|
}
|
|
|
|
uVar5 = 0;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *(ushort *)(param_2 + uVar5 * 2);
|
|
|
|
uVar3 = (uint)uVar1;
|
|
|
|
uVar4 = uVar3 & 0x7c00;
|
|
|
|
if (uVar4 < 0x401) {
|
|
|
|
uVar4 = 0x400;
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + uVar5 * 4) =
|
|
|
|
(float)(-(uint)((uVar1 & 0x7c00) != 0) & 0x400 | uVar3 & 0x3ff) *
|
|
|
|
(float)((uVar4 + 0x19800) * 0x2000 | (uVar3 & 0xffff8000) << 0x10);
|
|
|
|
uVar5 = uVar5 + 1;
|
|
|
|
} while (uVar5 < param_3);
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00606e3b at 0x00606E3B (size: 243) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_00606e3b(void)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort in_XMM0_Wa;
|
|
|
|
ushort in_XMM0_Wb;
|
|
|
|
ushort in_XMM0_Wc;
|
|
|
|
ushort in_XMM0_Wd;
|
|
|
|
ushort in_XMM0_We;
|
|
|
|
ushort in_XMM0_Wf;
|
|
|
|
ushort in_XMM0_Wg;
|
|
|
|
ushort in_XMM0_Wh;
|
|
|
|
undefined1 auVar1 [16];
|
|
|
|
|
|
|
|
auVar1._0_2_ = -(ushort)((_DAT_00828f60 & in_XMM0_Wa) == 0);
|
|
|
|
auVar1._2_2_ = -(ushort)((uRam00828f62 & in_XMM0_Wb) == 0);
|
|
|
|
auVar1._4_2_ = -(ushort)((uRam00828f64 & in_XMM0_Wc) == 0);
|
|
|
|
auVar1._6_2_ = -(ushort)((uRam00828f66 & in_XMM0_Wd) == 0);
|
|
|
|
auVar1._8_2_ = -(ushort)((uRam00828f68 & in_XMM0_We) == 0);
|
|
|
|
auVar1._10_2_ = -(ushort)((uRam00828f6a & in_XMM0_Wf) == 0);
|
|
|
|
auVar1._12_2_ = -(ushort)((uRam00828f6c & in_XMM0_Wg) == 0);
|
|
|
|
auVar1._14_2_ = -(ushort)((uRam00828f6e & in_XMM0_Wh) == 0);
|
|
|
|
if ((((((((((((((((SUB161(auVar1 >> 7,0) & 1) != 0 || (SUB161(auVar1 >> 0xf,0) & 1) != 0) ||
|
|
|
|
(SUB161(auVar1 >> 0x17,0) & 1) != 0) || (SUB161(auVar1 >> 0x1f,0) & 1) != 0) ||
|
|
|
|
(SUB161(auVar1 >> 0x27,0) & 1) != 0) || (SUB161(auVar1 >> 0x2f,0) & 1) != 0) ||
|
|
|
|
(SUB161(auVar1 >> 0x37,0) & 1) != 0) || (SUB161(auVar1 >> 0x3f,0) & 1) != 0) ||
|
|
|
|
(SUB161(auVar1 >> 0x47,0) & 1) != 0) || (SUB161(auVar1 >> 0x4f,0) & 1) != 0) ||
|
|
|
|
(SUB161(auVar1 >> 0x57,0) & 1) != 0) || (SUB161(auVar1 >> 0x5f,0) & 1) != 0) ||
|
|
|
|
(SUB161(auVar1 >> 0x67,0) & 1) != 0) || (SUB161(auVar1 >> 0x6f,0) & 1) != 0) ||
|
|
|
|
(auVar1._14_2_ >> 7 & 1) != 0) || (auVar1._14_2_ & 0x8000) != 0) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00606f2e at 0x00606F2E (size: 212) ---
|
|
|
|
|
|
/* WARNING: Removing unreachable block (ram,0x00606fe3) */
|
|
|
|
|
|
|
|
int FUN_00606f2e(int param_1,undefined8 *param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
ushort uVar1;
|
|
|
|
int iVar2;
|
|
|
|
undefined8 *puVar3;
|
|
|
|
undefined8 *extraout_ECX;
|
|
|
|
uint uVar4;
|
|
|
|
uint uVar5;
|
|
|
|
uint uVar6;
|
|
|
|
undefined8 uVar7;
|
|
|
|
undefined8 uVar8;
|
|
|
|
undefined8 in_XMM3_Qa;
|
|
|
|
undefined8 in_XMM3_Qb;
|
|
|
|
undefined8 uVar9;
|
|
|
|
|
|
|
|
iVar2 = param_1;
|
|
|
|
if (7 < param_3) {
|
|
|
|
uVar6 = param_3 & 0xfffffff8;
|
|
|
|
puVar3 = param_2;
|
|
|
|
do {
|
|
|
|
uVar7 = *puVar3;
|
|
|
|
uVar8 = puVar3[1];
|
|
|
|
uVar9 = FUN_00606e3b();
|
|
|
|
puVar3 = (undefined8 *)uVar9;
|
|
|
|
*extraout_ECX = uVar7;
|
|
|
|
extraout_ECX[1] = uVar8;
|
|
|
|
extraout_ECX[2] = in_XMM3_Qa;
|
|
|
|
extraout_ECX[3] = in_XMM3_Qb;
|
|
|
|
} while ((int)((ulonglong)uVar9 >> 0x20) != 8);
|
|
|
|
param_3 = param_3 - uVar6;
|
|
|
|
param_2 = (undefined8 *)((int)param_2 + uVar6 * 2);
|
|
|
|
param_1 = param_1 + uVar6 * 4;
|
|
|
|
}
|
|
|
|
uVar6 = 0;
|
|
|
|
if (param_3 != 0) {
|
|
|
|
do {
|
|
|
|
uVar1 = *(ushort *)((int)param_2 + uVar6 * 2);
|
|
|
|
uVar4 = (uint)uVar1;
|
|
|
|
uVar5 = uVar4 & 0x7c00;
|
|
|
|
if (uVar5 < 0x401) {
|
|
|
|
uVar5 = 0x400;
|
|
|
|
}
|
|
|
|
*(float *)(param_1 + uVar6 * 4) =
|
|
|
|
(float)(-(uint)((uVar1 & 0x7c00) != 0) & 0x400 | uVar4 & 0x3ff) *
|
|
|
|
(float)((uVar5 + 0x19800) * 0x2000 | (uVar4 & 0xffff8000) << 0x10);
|
|
|
|
uVar6 = uVar6 + 1;
|
|
|
|
} while (uVar6 < param_3);
|
|
|
|
}
|
|
|
|
return iVar2;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00607002 at 0x00607002 (size: 147) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float * FUN_00607002(float *param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
undefined1 in_XMM6 [16];
|
|
|
|
undefined1 auVar6 [16];
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = fVar1 * fVar1 + fVar2 * fVar2 + fVar3 * fVar3;
|
|
|
|
if (_DAT_007f5920 <= fVar4) {
|
|
|
|
auVar6 = rsqrtss(in_XMM6,ZEXT416((uint)fVar4));
|
|
|
|
fVar5 = auVar6._0_4_;
|
|
|
|
fVar4 = (DAT_007f5900 - fVar5 * fVar4 * fVar5) * fVar5 * DAT_007f5910;
|
|
|
|
*param_1 = fVar1 * fVar4;
|
|
|
|
param_1[1] = fVar2 * fVar4;
|
|
|
|
param_1[2] = fVar3 * fVar4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = 0.0;
|
|
|
|
param_1[1] = 0.0;
|
|
|
|
param_1[2] = 0.0;
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00607096 at 0x00607096 (size: 160) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
float * FUN_00607096(float *param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
float fVar5;
|
|
|
|
undefined1 in_XMM6 [16];
|
|
|
|
undefined1 auVar6 [16];
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = fVar1 * fVar1 + fVar2 * fVar2 + fVar3 * fVar3;
|
|
|
|
if (_DAT_007f5920 <= fVar4) {
|
|
|
|
auVar6 = rsqrtss(in_XMM6,ZEXT416((uint)fVar4));
|
|
|
|
fVar5 = auVar6._0_4_;
|
|
|
|
fVar5 = (DAT_007f5900 - fVar5 * fVar4 * fVar5) * fVar5 * DAT_007f5910;
|
|
|
|
fVar4 = param_2[3];
|
|
|
|
*param_1 = fVar1 * fVar5;
|
|
|
|
param_1[1] = fVar2 * fVar5;
|
|
|
|
param_1[2] = fVar3 * fVar5;
|
|
|
|
param_1[3] = fVar5 * fVar4;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
*param_1 = 0.0;
|
|
|
|
param_1[1] = 0.0;
|
|
|
|
param_1[2] = 0.0;
|
|
|
|
param_1[3] = 0.0;
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00607138 at 0x00607138 (size: 328) ---
|
|
|
|
|
|
undefined8 * FUN_00607138(undefined8 *param_1,float *param_2,undefined8 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
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;
|
|
|
|
|
|
|
|
fVar1 = *param_2;
|
|
|
|
fVar2 = param_2[1];
|
|
|
|
fVar3 = param_2[2];
|
|
|
|
fVar4 = param_2[3];
|
|
|
|
fVar17 = (float)*param_3;
|
|
|
|
fVar18 = (float)((ulonglong)*param_3 >> 0x20);
|
|
|
|
fVar19 = (float)param_3[1];
|
|
|
|
fVar20 = (float)((ulonglong)param_3[1] >> 0x20);
|
|
|
|
fVar21 = (float)param_3[2];
|
|
|
|
fVar22 = (float)((ulonglong)param_3[2] >> 0x20);
|
|
|
|
fVar23 = (float)param_3[3];
|
|
|
|
fVar24 = (float)((ulonglong)param_3[3] >> 0x20);
|
|
|
|
fVar25 = (float)param_3[4];
|
|
|
|
fVar26 = (float)((ulonglong)param_3[4] >> 0x20);
|
|
|
|
fVar27 = (float)param_3[5];
|
|
|
|
fVar28 = (float)((ulonglong)param_3[5] >> 0x20);
|
|
|
|
fVar29 = (float)param_3[6];
|
|
|
|
fVar30 = (float)((ulonglong)param_3[6] >> 0x20);
|
|
|
|
fVar31 = (float)param_3[7];
|
|
|
|
fVar32 = (float)((ulonglong)param_3[7] >> 0x20);
|
|
|
|
fVar5 = param_2[4];
|
|
|
|
fVar6 = param_2[5];
|
|
|
|
fVar7 = param_2[6];
|
|
|
|
fVar8 = param_2[7];
|
|
|
|
fVar9 = param_2[8];
|
|
|
|
fVar10 = param_2[9];
|
|
|
|
fVar11 = param_2[10];
|
|
|
|
fVar12 = param_2[0xb];
|
|
|
|
fVar13 = param_2[0xc];
|
|
|
|
fVar14 = param_2[0xd];
|
|
|
|
fVar15 = param_2[0xe];
|
|
|
|
fVar16 = param_2[0xf];
|
|
|
|
*param_1 = CONCAT44(fVar5 * fVar17 + fVar6 * fVar21 + fVar7 * fVar25 + fVar8 * fVar29,
|
|
|
|
fVar1 * fVar17 + fVar2 * fVar21 + fVar3 * fVar25 + fVar4 * fVar29);
|
|
|
|
param_1[1] = CONCAT44(fVar17 * fVar13 + fVar21 * fVar14 + fVar25 * fVar15 + fVar29 * fVar16,
|
|
|
|
fVar9 * fVar17 + fVar10 * fVar21 + fVar11 * fVar25 + fVar12 * fVar29);
|
|
|
|
param_1[2] = CONCAT44(fVar5 * fVar18 + fVar6 * fVar22 + fVar7 * fVar26 + fVar8 * fVar30,
|
|
|
|
fVar1 * fVar18 + fVar2 * fVar22 + fVar3 * fVar26 + fVar4 * fVar30);
|
|
|
|
param_1[3] = CONCAT44(fVar18 * fVar13 + fVar22 * fVar14 + fVar26 * fVar15 + fVar30 * fVar16,
|
|
|
|
fVar9 * fVar18 + fVar10 * fVar22 + fVar11 * fVar26 + fVar12 * fVar30);
|
|
|
|
param_1[4] = CONCAT44(fVar5 * fVar19 + fVar6 * fVar23 + fVar7 * fVar27 + fVar8 * fVar31,
|
|
|
|
fVar1 * fVar19 + fVar2 * fVar23 + fVar3 * fVar27 + fVar4 * fVar31);
|
|
|
|
param_1[5] = CONCAT44(fVar19 * fVar13 + fVar23 * fVar14 + fVar27 * fVar15 + fVar31 * fVar16,
|
|
|
|
fVar9 * fVar19 + fVar10 * fVar23 + fVar11 * fVar27 + fVar12 * fVar31);
|
|
|
|
param_1[6] = CONCAT44(fVar5 * fVar20 + fVar6 * fVar24 + fVar7 * fVar28 + fVar8 * fVar32,
|
|
|
|
fVar1 * fVar20 + fVar2 * fVar24 + fVar3 * fVar28 + fVar4 * fVar32);
|
|
|
|
param_1[7] = CONCAT44(fVar20 * fVar13 + fVar24 * fVar14 + fVar28 * fVar15 + fVar32 * fVar16,
|
|
|
|
fVar9 * fVar20 + fVar10 * fVar24 + fVar11 * fVar28 + fVar12 * fVar32);
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00607794 at 0x00607794 (size: 300) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_00607794(float *param_1,float *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
float *pfVar1;
|
|
|
|
int iVar2;
|
|
|
|
float fVar3;
|
|
|
|
float *pfVar4;
|
|
|
|
int iVar5;
|
|
|
|
int iVar6;
|
|
|
|
float local_18 [4];
|
|
|
|
int local_8;
|
|
|
|
|
|
|
|
pfVar4 = param_2;
|
|
|
|
fVar3 = param_2[5] + *param_2 + param_2[10];
|
|
|
|
if (fVar3 <= DAT_00796344) {
|
|
|
|
local_18[1] = param_2[5];
|
|
|
|
pfVar1 = param_2 + 10;
|
|
|
|
local_18[0] = *param_2;
|
|
|
|
local_18[2] = *pfVar1;
|
|
|
|
param_2 = (float *)(uint)(*param_2 < param_2[5]);
|
|
|
|
if (local_18[(int)param_2] < *pfVar1) {
|
|
|
|
param_2 = (float *)0x2;
|
|
|
|
}
|
|
|
|
iVar5 = (int)param_2 * 4;
|
|
|
|
iVar2 = *(int *)(&DAT_007f5924 + iVar5);
|
|
|
|
iVar6 = iVar2 * 4;
|
|
|
|
local_8 = *(int *)(&DAT_007f5924 + iVar6);
|
|
|
|
fVar3 = SQRT(((local_18[(int)param_2] - local_18[iVar2]) - local_18[local_8]) + _DAT_007938b0) *
|
|
|
|
_DAT_007938b8;
|
|
|
|
param_1[(int)param_2] = fVar3;
|
|
|
|
fVar3 = _DAT_007c97cc / fVar3;
|
|
|
|
param_1[iVar2] = (pfVar4[(int)param_2 + iVar6] + pfVar4[iVar2 + iVar5]) * fVar3;
|
|
|
|
param_1[local_8] = (pfVar4[(int)param_2 + local_8 * 4] + pfVar4[iVar5 + local_8]) * fVar3;
|
|
|
|
param_1[3] = (pfVar4[iVar6 + local_8] - pfVar4[local_8 * 4 + iVar2]) * fVar3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
fVar3 = SQRT(fVar3 + _DAT_007938b0) * _DAT_007938b8;
|
|
|
|
param_1[3] = fVar3;
|
|
|
|
fVar3 = _DAT_007c97cc / fVar3;
|
|
|
|
*param_1 = (param_2[6] - param_2[9]) * fVar3;
|
|
|
|
param_1[1] = (param_2[8] - param_2[2]) * fVar3;
|
|
|
|
param_1[2] = (param_2[1] - param_2[4]) * fVar3;
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00608000 at 0x00608000 (size: 149) ---
|
|
|
|
|
|
float * FUN_00608000(float *param_1,int param_2,float *param_3,int param_4,float *param_5,
|
|
|
|
int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
bool bVar5;
|
|
|
|
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 *pfVar22;
|
|
|
|
int iVar23;
|
|
|
|
|
|
|
|
if (0 < param_6) {
|
|
|
|
fVar6 = *param_5;
|
|
|
|
fVar7 = param_5[1];
|
|
|
|
fVar8 = param_5[2];
|
|
|
|
fVar9 = param_5[3];
|
|
|
|
fVar10 = param_5[4];
|
|
|
|
fVar11 = param_5[5];
|
|
|
|
fVar12 = param_5[6];
|
|
|
|
fVar13 = param_5[7];
|
|
|
|
fVar14 = param_5[8];
|
|
|
|
fVar15 = param_5[9];
|
|
|
|
fVar16 = param_5[10];
|
|
|
|
fVar17 = param_5[0xb];
|
|
|
|
fVar18 = param_5[0xc];
|
|
|
|
fVar19 = param_5[0xd];
|
|
|
|
fVar20 = param_5[0xe];
|
|
|
|
fVar21 = param_5[0xf];
|
|
|
|
pfVar22 = param_1;
|
|
|
|
do {
|
|
|
|
fVar1 = *param_3;
|
|
|
|
fVar2 = param_3[1];
|
|
|
|
fVar3 = param_3[2];
|
|
|
|
fVar4 = param_3[3];
|
|
|
|
param_3 = (float *)(param_4 + (int)param_3);
|
|
|
|
*pfVar22 = fVar1 * fVar6 + fVar2 * fVar10 + fVar3 * fVar14 + fVar4 * fVar18;
|
|
|
|
pfVar22[1] = fVar1 * fVar7 + fVar2 * fVar11 + fVar3 * fVar15 + fVar4 * fVar19;
|
|
|
|
pfVar22[2] = fVar1 * fVar8 + fVar2 * fVar12 + fVar3 * fVar16 + fVar4 * fVar20;
|
|
|
|
pfVar22[3] = fVar1 * fVar9 + fVar2 * fVar13 + fVar3 * fVar17 + fVar4 * fVar21;
|
|
|
|
pfVar22 = (float *)(param_2 + (int)pfVar22);
|
|
|
|
iVar23 = param_6 + -1;
|
|
|
|
bVar5 = 0 < param_6;
|
|
|
|
param_6 = iVar23;
|
|
|
|
} while (iVar23 != 0 && bVar5);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_00609000 at 0x00609000 (size: 149) ---
|
|
|
|
|
|
float * FUN_00609000(float *param_1,int param_2,float *param_3,int param_4,float *param_5,
|
|
|
|
int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
float fVar4;
|
|
|
|
bool bVar5;
|
|
|
|
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 *pfVar22;
|
|
|
|
int iVar23;
|
|
|
|
|
|
|
|
if (0 < param_6) {
|
|
|
|
fVar6 = *param_5;
|
|
|
|
fVar7 = param_5[1];
|
|
|
|
fVar8 = param_5[2];
|
|
|
|
fVar9 = param_5[3];
|
|
|
|
fVar10 = param_5[4];
|
|
|
|
fVar11 = param_5[5];
|
|
|
|
fVar12 = param_5[6];
|
|
|
|
fVar13 = param_5[7];
|
|
|
|
fVar14 = param_5[8];
|
|
|
|
fVar15 = param_5[9];
|
|
|
|
fVar16 = param_5[10];
|
|
|
|
fVar17 = param_5[0xb];
|
|
|
|
fVar18 = param_5[0xc];
|
|
|
|
fVar19 = param_5[0xd];
|
|
|
|
fVar20 = param_5[0xe];
|
|
|
|
fVar21 = param_5[0xf];
|
|
|
|
pfVar22 = param_1;
|
|
|
|
do {
|
|
|
|
fVar1 = *param_3;
|
|
|
|
fVar2 = param_3[1];
|
|
|
|
fVar3 = param_3[2];
|
|
|
|
fVar4 = param_3[3];
|
|
|
|
param_3 = (float *)(param_4 + (int)param_3);
|
|
|
|
*pfVar22 = fVar1 * fVar6 + fVar2 * fVar10 + fVar3 * fVar14 + fVar4 * fVar18;
|
|
|
|
pfVar22[1] = fVar1 * fVar7 + fVar2 * fVar11 + fVar3 * fVar15 + fVar4 * fVar19;
|
|
|
|
pfVar22[2] = fVar1 * fVar8 + fVar2 * fVar12 + fVar3 * fVar16 + fVar4 * fVar20;
|
|
|
|
pfVar22[3] = fVar1 * fVar9 + fVar2 * fVar13 + fVar3 * fVar17 + fVar4 * fVar21;
|
|
|
|
pfVar22 = (float *)(param_2 + (int)pfVar22);
|
|
|
|
iVar23 = param_6 + -1;
|
|
|
|
bVar5 = 0 < param_6;
|
|
|
|
param_6 = iVar23;
|
|
|
|
} while (iVar23 != 0 && bVar5);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060b000 at 0x0060B000 (size: 137) ---
|
|
|
|
|
|
float * FUN_0060b000(float *param_1,int param_2,float *param_3,int param_4,float *param_5,
|
|
|
|
int param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
float fVar1;
|
|
|
|
float fVar2;
|
|
|
|
float fVar3;
|
|
|
|
bool bVar4;
|
|
|
|
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 *pfVar21;
|
|
|
|
int iVar22;
|
|
|
|
|
|
|
|
if (0 < param_6) {
|
|
|
|
fVar5 = *param_5;
|
|
|
|
fVar6 = param_5[1];
|
|
|
|
fVar7 = param_5[2];
|
|
|
|
fVar8 = param_5[3];
|
|
|
|
fVar9 = param_5[4];
|
|
|
|
fVar10 = param_5[5];
|
|
|
|
fVar11 = param_5[6];
|
|
|
|
fVar12 = param_5[7];
|
|
|
|
fVar13 = param_5[8];
|
|
|
|
fVar14 = param_5[9];
|
|
|
|
fVar15 = param_5[10];
|
|
|
|
fVar16 = param_5[0xb];
|
|
|
|
fVar17 = param_5[0xc];
|
|
|
|
fVar18 = param_5[0xd];
|
|
|
|
fVar19 = param_5[0xe];
|
|
|
|
fVar20 = param_5[0xf];
|
|
|
|
pfVar21 = param_1;
|
|
|
|
do {
|
|
|
|
fVar1 = *param_3;
|
|
|
|
fVar2 = param_3[1];
|
|
|
|
fVar3 = param_3[2];
|
|
|
|
param_3 = (float *)(param_4 + (int)param_3);
|
|
|
|
*pfVar21 = fVar1 * fVar5 + fVar2 * fVar9 + fVar3 * fVar13 + fVar17;
|
|
|
|
pfVar21[1] = fVar1 * fVar6 + fVar2 * fVar10 + fVar3 * fVar14 + fVar18;
|
|
|
|
pfVar21[2] = fVar1 * fVar7 + fVar2 * fVar11 + fVar3 * fVar15 + fVar19;
|
|
|
|
pfVar21[3] = fVar1 * fVar8 + fVar2 * fVar12 + fVar3 * fVar16 + fVar20;
|
|
|
|
pfVar21 = (float *)(param_2 + (int)pfVar21);
|
|
|
|
iVar22 = param_6 + -1;
|
|
|
|
bVar4 = 0 < param_6;
|
|
|
|
param_6 = iVar22;
|
|
|
|
} while (iVar22 != 0 && bVar4);
|
|
|
|
}
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060b732 at 0x0060B732 (size: 68) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060b732(undefined8 *param_1,undefined8 *param_2,undefined4 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
|
|
|
|
uVar1 = param_1[1];
|
|
|
|
if (param_2 != (undefined8 *)0x0) {
|
|
|
|
*param_2 = *param_1;
|
|
|
|
*(int *)(param_2 + 1) = (int)uVar1;
|
|
|
|
}
|
|
|
|
if (param_3 != (undefined4 *)0x0) {
|
|
|
|
uVar1 = FUN_006151c0();
|
|
|
|
uVar1 = PackedFloatingMUL(uVar1,_DAT_007f2fc0);
|
|
|
|
*param_3 = (int)uVar1;
|
|
|
|
}
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060bc6c at 0x0060BC6C (size: 108) ---
|
|
|
|
|
|
void FUN_0060bc6c(undefined8 *param_1,undefined4 param_2,uint param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
undefined8 local_18;
|
|
|
|
uint local_10;
|
|
|
|
|
|
|
|
FastExitMediaState();
|
|
|
|
FUN_00610a40(&local_18,param_2);
|
|
|
|
PackedFloatingMUL((ulonglong)param_3,DAT_007f3048);
|
|
|
|
uVar1 = FUN_006157a0();
|
|
|
|
uVar4 = (undefined4)((ulonglong)uVar1 >> 0x20);
|
|
|
|
uVar3 = CONCAT44(uVar4,uVar4);
|
|
|
|
uVar2 = PackedFloatingMUL(local_18,uVar3);
|
|
|
|
uVar3 = PackedFloatingMUL((ulonglong)local_10,uVar3);
|
|
|
|
*param_1 = uVar2;
|
|
|
|
param_1[1] = CONCAT44((int)uVar1,(int)uVar3);
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060bcd8 at 0x0060BCD8 (size: 311) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060bcd8(undefined8 *param_1,undefined8 *param_2,undefined8 *param_3,uint param_4)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
uint uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
ulonglong uVar4;
|
|
|
|
undefined8 uVar5;
|
|
|
|
undefined8 uVar6;
|
|
|
|
undefined8 uVar7;
|
|
|
|
ulonglong uVar8;
|
|
|
|
uint uVar9;
|
|
|
|
uint uVar10;
|
|
|
|
|
|
|
|
FastExitMediaState();
|
|
|
|
uVar3 = PackedFloatingMUL(*param_2,*param_3);
|
|
|
|
uVar5 = PackedFloatingMUL(param_2[1],param_3[1]);
|
|
|
|
uVar5 = PackedFloatingADD(uVar3,uVar5);
|
|
|
|
uVar3 = PackedFloatingSUB((ulonglong)DAT_007f3040,(ulonglong)param_4);
|
|
|
|
uVar1 = (uint)uVar3;
|
|
|
|
uVar4 = PackedFloatingAccumulate(uVar5,uVar5);
|
|
|
|
uVar8 = PackedFloatingCompareGE(0,uVar4);
|
|
|
|
uVar8 = uVar8 & _DAT_007f3088;
|
|
|
|
uVar4 = uVar4 ^ uVar8;
|
|
|
|
uVar5 = PackedFloatingCompareGE(DAT_007f30a0,uVar4);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar4,uVar4);
|
|
|
|
uVar3 = PackedFloatingSUBR(uVar3,CONCAT44(_UNK_007f3044,DAT_007f3040));
|
|
|
|
if ((int)uVar5 != 0) {
|
|
|
|
uVar6 = PackedFloatingReciprocalSQRAprox((ulonglong)param_4,uVar3);
|
|
|
|
uVar5 = PackedFloatingMUL(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingReciprocalSQRIter1(uVar3,uVar5);
|
|
|
|
uVar6 = PackedFloatingReciprocalIter2(uVar3,uVar6);
|
|
|
|
uVar3 = FloatingReciprocalAprox(uVar5,uVar6);
|
|
|
|
uVar5 = PackedFloatingReciprocalIter1(uVar6,uVar3);
|
|
|
|
PackedFloatingReciprocalIter2(uVar5,uVar3);
|
|
|
|
uVar9 = (uint)uVar6;
|
|
|
|
uVar3 = FUN_006150c0();
|
|
|
|
uVar10 = (uint)uVar3;
|
|
|
|
PackedFloatingMUL(uVar3,(ulonglong)param_4);
|
|
|
|
uVar2 = FUN_006158a0(uVar1,uVar9,uVar10);
|
|
|
|
PackedFloatingMUL((ulonglong)uVar10,(ulonglong)uVar1);
|
|
|
|
uVar3 = FUN_006158a0();
|
|
|
|
uVar8 = uVar8 & 0xffffffff;
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,(ulonglong)uVar9);
|
|
|
|
uVar1 = (uint)uVar3;
|
|
|
|
uVar3 = PackedFloatingMUL((ulonglong)uVar2,(ulonglong)uVar9);
|
|
|
|
param_4 = (uint)uVar3;
|
|
|
|
}
|
|
|
|
param_4 = param_4 ^ (uint)uVar8;
|
|
|
|
uVar5 = CONCAT44(param_4,param_4);
|
|
|
|
uVar3 = PackedFloatingMUL(CONCAT44(uVar1,uVar1),*param_2);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar5,*param_3);
|
|
|
|
uVar7 = PackedFloatingMUL(CONCAT44(uVar1,uVar1),param_2[1]);
|
|
|
|
uVar5 = PackedFloatingMUL(uVar5,param_3[1]);
|
|
|
|
uVar3 = PackedFloatingADD(uVar3,uVar6);
|
|
|
|
uVar5 = PackedFloatingADD(uVar7,uVar5);
|
|
|
|
*param_1 = uVar3;
|
|
|
|
param_1[1] = uVar5;
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060be0f at 0x0060BE0F (size: 141) ---
|
|
|
|
|
|
undefined4
|
|
|
|
FUN_0060be0f(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
|
|
uint param_5,uint param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
ulonglong uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined8 in_MM2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
undefined1 local_28 [16];
|
|
|
|
undefined1 local_18 [20];
|
|
|
|
|
|
|
|
FastExitMediaState();
|
|
|
|
uVar1 = PackedFloatingADD((ulonglong)param_5,(ulonglong)param_6);
|
|
|
|
FUN_0060bcd8(local_28,param_2,param_3,(int)uVar1);
|
|
|
|
FUN_0060bcd8(local_18,param_2,param_4,(int)uVar1);
|
|
|
|
uVar3 = FloatingReciprocalAprox(in_MM2,uVar1 & 0xffffffff);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter1(uVar1 & 0xffffffff,uVar3);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter2(uVar2,uVar3);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,(ulonglong)param_6);
|
|
|
|
FUN_0060bcd8(param_1,local_28,local_18,(int)uVar2);
|
|
|
|
FastExitMediaState();
|
|
|
|
return param_1;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060be9c at 0x0060BE9C (size: 146) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060be9c(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
|
|
|
|
undefined4 param_5,uint param_6)
|
|
|
|
|
|
|
|
{
|
|
|
|
ulonglong uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined1 local_20 [16];
|
|
|
|
undefined1 local_10 [16];
|
|
|
|
|
|
|
|
FUN_0060bcd8(local_20,param_2,param_5,param_6);
|
|
|
|
FUN_0060bcd8(local_10,param_3,param_4,param_6);
|
|
|
|
uVar1 = (ulonglong)param_6;
|
|
|
|
uVar2 = PackedFloatingMUL(uVar1,uVar1);
|
|
|
|
uVar2 = PackedFloatingSUB(uVar1,uVar2);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,_DAT_007f2fc0);
|
|
|
|
FUN_0060bcd8(param_1,local_20,local_10,(int)uVar2);
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060bf92 at 0x0060BF92 (size: 167) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060bf92(undefined8 *param_1,undefined8 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
ulonglong uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
ulonglong uVar4;
|
|
|
|
undefined8 uVar5;
|
|
|
|
undefined8 in_MM4;
|
|
|
|
undefined8 uVar6;
|
|
|
|
|
|
|
|
FastExitMediaState();
|
|
|
|
uVar3 = *param_2;
|
|
|
|
uVar4 = param_2[1];
|
|
|
|
uVar1 = (undefined4)(uVar4 >> 0x20);
|
|
|
|
uVar5 = PackedFloatingCompareGE(CONCAT44(uVar1,uVar1),_DAT_007f3040);
|
|
|
|
if ((int)uVar5 == 0) {
|
|
|
|
uVar1 = FUN_006151c0();
|
|
|
|
uVar2 = FUN_006158a0();
|
|
|
|
uVar5 = PackedFloatingCompareGE(uVar2 & _DAT_007f2ff8,DAT_007f3000);
|
|
|
|
uVar3 = *param_2;
|
|
|
|
uVar4 = param_2[1];
|
|
|
|
if ((int)uVar5 != 0) {
|
|
|
|
uVar6 = FloatingReciprocalAprox(in_MM4,uVar2);
|
|
|
|
uVar5 = PackedFloatingReciprocalIter1(uVar2,uVar6);
|
|
|
|
uVar5 = PackedFloatingReciprocalIter2(uVar5,uVar6);
|
|
|
|
uVar5 = PackedFloatingMUL(CONCAT44(uVar1,uVar1),uVar5);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar5);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar4,uVar5);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar4 = uVar4 & _DAT_007f3008;
|
|
|
|
*param_1 = uVar3;
|
|
|
|
param_1[1] = uVar4;
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060c0de at 0x0060C0DE (size: 2619) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060c0de(undefined8 *param_1,undefined8 *param_2,ulonglong *param_3,ulonglong *param_4,
|
|
|
|
ulonglong *param_5,ulonglong *param_6,ulonglong *param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 unaff_EBX;
|
|
|
|
undefined4 unaff_ESI;
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
ulonglong uVar3;
|
|
|
|
undefined8 uVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined8 uVar6;
|
|
|
|
ulonglong uVar7;
|
|
|
|
ulonglong uVar8;
|
|
|
|
undefined8 uVar9;
|
|
|
|
ulonglong uVar10;
|
|
|
|
undefined8 uVar11;
|
|
|
|
undefined8 uVar12;
|
|
|
|
ulonglong uVar13;
|
|
|
|
ulonglong uVar14;
|
|
|
|
undefined8 uVar15;
|
|
|
|
ulonglong local_a8;
|
|
|
|
ulonglong local_a0;
|
|
|
|
ulonglong local_88;
|
|
|
|
ulonglong local_80;
|
|
|
|
ulonglong local_78;
|
|
|
|
ulonglong local_70;
|
|
|
|
undefined4 local_20;
|
|
|
|
|
|
|
|
local_a8 = *param_4;
|
|
|
|
local_a0 = param_4[1];
|
|
|
|
uVar8 = *param_5;
|
|
|
|
uVar14 = param_5[1];
|
|
|
|
uVar2 = PackedFloatingADD(local_a8,uVar8);
|
|
|
|
uVar4 = PackedFloatingADD(local_a0,uVar14);
|
|
|
|
uVar6 = PackedFloatingSUB(local_a8,uVar8);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,uVar2);
|
|
|
|
uVar9 = PackedFloatingSUB(local_a0,uVar14);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar4,uVar4);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar6);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar9,uVar9);
|
|
|
|
uVar2 = PackedFloatingADD(uVar2,uVar4);
|
|
|
|
uVar6 = PackedFloatingADD(uVar6,uVar9);
|
|
|
|
local_88 = *param_6;
|
|
|
|
local_80 = param_6[1];
|
|
|
|
uVar11 = PackedFloatingADD(uVar8,local_88);
|
|
|
|
uVar12 = PackedFloatingADD(uVar14,local_80);
|
|
|
|
uVar4 = PackedFloatingSUB(uVar8,local_88);
|
|
|
|
uVar9 = PackedFloatingSUB(uVar14,local_80);
|
|
|
|
uVar11 = PackedFloatingMUL(uVar11,uVar11);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,uVar12);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar4,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar9,uVar9);
|
|
|
|
uVar11 = PackedFloatingADD(uVar11,uVar12);
|
|
|
|
uVar4 = PackedFloatingADD(uVar4,uVar9);
|
|
|
|
uVar2 = PackedFloatingAccumulate(uVar2,uVar11);
|
|
|
|
uVar4 = PackedFloatingAccumulate(uVar6,uVar4);
|
|
|
|
uVar2 = PackedFloatingCompareGT(uVar4,uVar2);
|
|
|
|
uVar7 = packsswb(uVar2,uVar2);
|
|
|
|
if ((uVar7 & 1) != 0) {
|
|
|
|
local_a8 = DAT_007f2fe0 ^ *param_4;
|
|
|
|
local_a0 = DAT_007f2fe0 ^ param_4[1];
|
|
|
|
}
|
|
|
|
if ((uVar7 & 0x10000) != 0) {
|
|
|
|
local_88 = DAT_007f2fe0 ^ *param_6;
|
|
|
|
local_80 = DAT_007f2fe0 ^ param_6[1];
|
|
|
|
}
|
|
|
|
local_78 = *param_7;
|
|
|
|
uVar7 = param_7[1];
|
|
|
|
uVar6 = PackedFloatingADD(local_88,local_78);
|
|
|
|
uVar9 = PackedFloatingADD(local_80,uVar7);
|
|
|
|
uVar2 = PackedFloatingSUB(local_88,local_78);
|
|
|
|
uVar4 = PackedFloatingSUB(local_80,uVar7);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar6);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar9,uVar9);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,uVar2);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar4,uVar4);
|
|
|
|
uVar6 = PackedFloatingADD(uVar6,uVar9);
|
|
|
|
uVar2 = PackedFloatingADD(uVar2,uVar4);
|
|
|
|
uVar4 = PackedFloatingAccumulate(uVar6,uVar6);
|
|
|
|
uVar2 = PackedFloatingAccumulate(uVar2,uVar2);
|
|
|
|
uVar10 = PackedFloatingCompareGT(uVar2,uVar4);
|
|
|
|
local_70 = uVar7;
|
|
|
|
if ((uVar10 & 1) != 0) {
|
|
|
|
local_78 = DAT_007f2fe0 ^ *param_7;
|
|
|
|
local_70 = DAT_007f2fe0 ^ param_7[1];
|
|
|
|
}
|
|
|
|
uVar2 = PackedFloatingMUL(uVar8,uVar8);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar14,uVar14);
|
|
|
|
uVar2 = PackedFloatingADD(uVar2,uVar4);
|
|
|
|
uVar2 = PackedFloatingAccumulate(uVar2,uVar2);
|
|
|
|
uVar4 = FloatingReciprocalAprox(uVar7,uVar2);
|
|
|
|
uVar7 = PackedFloatingCompareGT(uVar2,_DAT_007f3028);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter1(uVar2,uVar4);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter2(uVar2,uVar4);
|
|
|
|
uVar4 = PackedFloatingMUL((uVar8 ^ _DAT_007f3088) & uVar7,uVar2);
|
|
|
|
uVar11 = PackedFloatingMUL((uVar14 ^ _DAT_007f2fd0) & uVar7,uVar2);
|
|
|
|
uVar10 = CONCAT44((int)local_a8,(int)(local_a8 >> 0x20));
|
|
|
|
uVar3 = CONCAT44((int)local_a0,(int)(local_a0 >> 0x20));
|
|
|
|
uVar7 = PackedFloatingMUL(local_a8,uVar11);
|
|
|
|
uVar2 = PackedFloatingMUL(local_a0,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar3 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar10,uVar11);
|
|
|
|
uVar2 = PackedFloatingADD(uVar7 ^ _DAT_007f2fd0,uVar2);
|
|
|
|
uVar6 = PackedFloatingSUB(uVar6,uVar9);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar3,uVar11);
|
|
|
|
uVar6 = PackedFloatingAccumulate(uVar6,uVar2);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar10 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar2 = PackedFloatingMUL(local_a8,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(local_a0 ^ _DAT_007f2fd0,uVar11);
|
|
|
|
uVar12 = PackedFloatingADD(uVar12,uVar15);
|
|
|
|
uVar2 = PackedFloatingSUB(uVar9,uVar2);
|
|
|
|
uVar10 = PackedFloatingAccumulate(uVar12,uVar2);
|
|
|
|
uVar3 = CONCAT44((int)local_88,(int)(local_88 >> 0x20));
|
|
|
|
uVar13 = CONCAT44((int)local_80,(int)(local_80 >> 0x20));
|
|
|
|
uVar7 = PackedFloatingMUL(local_88,uVar11);
|
|
|
|
uVar2 = PackedFloatingMUL(local_80,uVar4);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar13 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar3,uVar11);
|
|
|
|
uVar2 = PackedFloatingADD(uVar7 ^ _DAT_007f2fd0,uVar2);
|
|
|
|
uVar9 = PackedFloatingSUB(uVar9,uVar12);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar13,uVar11);
|
|
|
|
uVar9 = PackedFloatingAccumulate(uVar9,uVar2);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar3 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar2 = PackedFloatingMUL(local_88,uVar4);
|
|
|
|
uVar4 = PackedFloatingMUL(local_80 ^ _DAT_007f2fd0,uVar11);
|
|
|
|
uVar11 = PackedFloatingADD(uVar12,uVar15);
|
|
|
|
uVar2 = PackedFloatingSUB(uVar4,uVar2);
|
|
|
|
uVar7 = PackedFloatingAccumulate(uVar11,uVar2);
|
|
|
|
uVar1 = (undefined4)(uVar10 >> 0x20);
|
|
|
|
uVar4 = PackedFloatingCompareGE(CONCAT44(uVar1,uVar1),_DAT_007f3040);
|
|
|
|
uVar2 = uVar9;
|
|
|
|
if ((int)uVar4 == 0) {
|
|
|
|
uVar1 = FUN_006151c0();
|
|
|
|
uVar3 = FUN_006158a0();
|
|
|
|
uVar4 = PackedFloatingCompareGE(uVar3 & _DAT_007f2ff8,DAT_007f3000);
|
|
|
|
if ((int)uVar4 != 0) {
|
|
|
|
uVar2 = FloatingReciprocalAprox(uVar2,uVar3);
|
|
|
|
uVar4 = PackedFloatingReciprocalIter1(uVar3,uVar2);
|
|
|
|
uVar4 = PackedFloatingReciprocalIter2(uVar4,uVar2);
|
|
|
|
uVar4 = PackedFloatingMUL(CONCAT44(uVar1,uVar1),uVar4);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar4);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar10,uVar4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar10 = uVar10 & _DAT_007f3008;
|
|
|
|
uVar1 = (undefined4)(uVar7 >> 0x20);
|
|
|
|
uVar4 = PackedFloatingCompareGE(CONCAT44(uVar1,uVar1),_DAT_007f3040);
|
|
|
|
if ((int)uVar4 == 0) {
|
|
|
|
uVar1 = FUN_006151c0();
|
|
|
|
uVar3 = FUN_006158a0(uVar1,unaff_ESI,unaff_EBX);
|
|
|
|
uVar4 = PackedFloatingCompareGE(uVar3 & _DAT_007f2ff8,DAT_007f3000);
|
|
|
|
if ((int)uVar4 != 0) {
|
|
|
|
uVar4 = FloatingReciprocalAprox(uVar2,uVar3);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter1(uVar3,uVar4);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter2(uVar2,uVar4);
|
|
|
|
uVar2 = PackedFloatingMUL(CONCAT44(uVar1,uVar1),uVar2);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar9,uVar2);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar2 = PackedFloatingADD(uVar6,uVar9);
|
|
|
|
uVar4 = PackedFloatingADD(uVar10,uVar7 & _DAT_007f3008);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,_DAT_007f5930);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar4,_DAT_007f5930);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar2,uVar2);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar3 & 0xffffffff,uVar3 & 0xffffffff);
|
|
|
|
uVar4 = PackedFloatingADD(uVar4,uVar6);
|
|
|
|
uVar4 = PackedFloatingAccumulate(uVar4,uVar4);
|
|
|
|
uVar6 = PackedFloatingReciprocalSQRAprox(uVar6,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar6,uVar6);
|
|
|
|
uVar9 = PackedFloatingReciprocalSQRIter1(uVar9,uVar4);
|
|
|
|
uVar6 = PackedFloatingReciprocalIter2(uVar9,uVar6);
|
|
|
|
uVar1 = (undefined4)uVar6;
|
|
|
|
PackedFloatingMUL(uVar4,uVar6);
|
|
|
|
uVar7 = FUN_006157a0(uVar1,unaff_ESI,unaff_EBX);
|
|
|
|
uVar10 = PackedFloatingCompareGE(uVar7 & _DAT_007f2ff0,DAT_007f3000);
|
|
|
|
uVar5 = (undefined4)(uVar7 >> 0x20);
|
|
|
|
uVar4 = PackedFloatingMUL(CONCAT44(uVar5,uVar5),CONCAT44(unaff_ESI,uVar1));
|
|
|
|
local_20 = (undefined4)uVar3;
|
|
|
|
if ((uVar10 & 0x100000000) != 0) {
|
|
|
|
uVar4 = CONCAT44((int)uVar4,(int)uVar4);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar3 & 0xffffffff,uVar4);
|
|
|
|
local_20 = (undefined4)uVar6;
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,uVar4);
|
|
|
|
}
|
|
|
|
uVar10 = CONCAT44((int)uVar7,local_20);
|
|
|
|
uVar3 = CONCAT44((int)uVar2,(int)((ulonglong)uVar2 >> 0x20));
|
|
|
|
uVar13 = CONCAT44(local_20,(int)uVar7);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar2,uVar14);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar10,uVar8);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar13 ^ _DAT_007f2fd0,uVar8);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar3,uVar14);
|
|
|
|
uVar4 = PackedFloatingADD(uVar7 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar6 = PackedFloatingSUB(uVar6,uVar9);
|
|
|
|
uVar11 = PackedFloatingMUL(uVar13,uVar14);
|
|
|
|
uVar6 = PackedFloatingAccumulate(uVar6,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar3 ^ _DAT_007f2fd0,uVar8);
|
|
|
|
uVar10 = uVar10 ^ _DAT_007f2fd0;
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,uVar8);
|
|
|
|
*param_1 = uVar6;
|
|
|
|
uVar4 = PackedFloatingMUL(uVar10,uVar14);
|
|
|
|
uVar9 = PackedFloatingADD(uVar9,uVar11);
|
|
|
|
uVar2 = PackedFloatingSUB(uVar4,uVar2);
|
|
|
|
uVar2 = PackedFloatingAccumulate(uVar9,uVar2);
|
|
|
|
param_1[1] = uVar2;
|
|
|
|
uVar2 = PackedFloatingMUL(local_88,local_88);
|
|
|
|
uVar4 = PackedFloatingMUL(local_80,local_80);
|
|
|
|
uVar2 = PackedFloatingADD(uVar2,uVar4);
|
|
|
|
uVar2 = PackedFloatingAccumulate(uVar2,uVar2);
|
|
|
|
uVar4 = FloatingReciprocalAprox(uVar6,uVar2);
|
|
|
|
uVar7 = PackedFloatingCompareGT(uVar2,_DAT_007f3028);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter1(uVar2,uVar4);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter2(uVar2,uVar4);
|
|
|
|
uVar4 = PackedFloatingMUL((local_88 ^ _DAT_007f3088) & uVar7,uVar2);
|
|
|
|
uVar11 = PackedFloatingMUL((local_80 ^ _DAT_007f2fd0) & uVar7,uVar2);
|
|
|
|
uVar10 = CONCAT44((int)uVar8,(int)(uVar8 >> 0x20));
|
|
|
|
uVar3 = CONCAT44((int)uVar14,(int)(uVar14 >> 0x20));
|
|
|
|
uVar7 = PackedFloatingMUL(uVar8,uVar11);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar14,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar3 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar10,uVar11);
|
|
|
|
uVar2 = PackedFloatingADD(uVar7 ^ _DAT_007f2fd0,uVar2);
|
|
|
|
uVar6 = PackedFloatingSUB(uVar6,uVar9);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar3,uVar11);
|
|
|
|
uVar6 = PackedFloatingAccumulate(uVar6,uVar2);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar10 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar8,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar14 ^ _DAT_007f2fd0,uVar11);
|
|
|
|
uVar12 = PackedFloatingADD(uVar12,uVar15);
|
|
|
|
uVar2 = PackedFloatingSUB(uVar9,uVar2);
|
|
|
|
uVar14 = PackedFloatingAccumulate(uVar12,uVar2);
|
|
|
|
uVar7 = CONCAT44((int)local_78,(int)(local_78 >> 0x20));
|
|
|
|
uVar10 = CONCAT44((int)local_70,(int)(local_70 >> 0x20));
|
|
|
|
uVar8 = PackedFloatingMUL(local_78,uVar11);
|
|
|
|
uVar2 = PackedFloatingMUL(local_70,uVar4);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar10 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar7,uVar11);
|
|
|
|
uVar2 = PackedFloatingADD(uVar8 ^ _DAT_007f2fd0,uVar2);
|
|
|
|
uVar9 = PackedFloatingSUB(uVar9,uVar12);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar10,uVar11);
|
|
|
|
uVar9 = PackedFloatingAccumulate(uVar9,uVar2);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar7 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar2 = PackedFloatingMUL(local_78,uVar4);
|
|
|
|
uVar4 = PackedFloatingMUL(local_70 ^ _DAT_007f2fd0,uVar11);
|
|
|
|
uVar11 = PackedFloatingADD(uVar12,uVar15);
|
|
|
|
uVar2 = PackedFloatingSUB(uVar4,uVar2);
|
|
|
|
uVar8 = PackedFloatingAccumulate(uVar11,uVar2);
|
|
|
|
uVar1 = (undefined4)(uVar14 >> 0x20);
|
|
|
|
uVar4 = PackedFloatingCompareGE(CONCAT44(uVar1,uVar1),_DAT_007f3040);
|
|
|
|
uVar2 = uVar9;
|
|
|
|
if ((int)uVar4 == 0) {
|
|
|
|
uVar1 = FUN_006151c0();
|
|
|
|
uVar7 = FUN_006158a0(uVar1,unaff_ESI,unaff_EBX);
|
|
|
|
uVar4 = PackedFloatingCompareGE(uVar7 & _DAT_007f2ff8,DAT_007f3000);
|
|
|
|
if ((int)uVar4 != 0) {
|
|
|
|
uVar2 = FloatingReciprocalAprox(uVar2,uVar7);
|
|
|
|
uVar4 = PackedFloatingReciprocalIter1(uVar7,uVar2);
|
|
|
|
uVar4 = PackedFloatingReciprocalIter2(uVar4,uVar2);
|
|
|
|
uVar4 = PackedFloatingMUL(CONCAT44(uVar1,uVar1),uVar4);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar4);
|
|
|
|
uVar14 = PackedFloatingMUL(uVar14,uVar4);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar14 = uVar14 & _DAT_007f3008;
|
|
|
|
uVar1 = (undefined4)(uVar8 >> 0x20);
|
|
|
|
uVar4 = PackedFloatingCompareGE(CONCAT44(uVar1,uVar1),_DAT_007f3040);
|
|
|
|
if ((int)uVar4 == 0) {
|
|
|
|
uVar1 = FUN_006151c0();
|
|
|
|
uVar7 = FUN_006158a0(uVar1,unaff_ESI,unaff_EBX);
|
|
|
|
uVar4 = PackedFloatingCompareGE(uVar7 & _DAT_007f2ff8,DAT_007f3000);
|
|
|
|
if ((int)uVar4 != 0) {
|
|
|
|
uVar4 = FloatingReciprocalAprox(uVar2,uVar7);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter1(uVar7,uVar4);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter2(uVar2,uVar4);
|
|
|
|
uVar2 = PackedFloatingMUL(CONCAT44(uVar1,uVar1),uVar2);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar9,uVar2);
|
|
|
|
uVar8 = PackedFloatingMUL(uVar8,uVar2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
uVar2 = PackedFloatingADD(uVar6,uVar9);
|
|
|
|
uVar4 = PackedFloatingADD(uVar14,uVar8 & _DAT_007f3008);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,_DAT_007f5930);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar4,_DAT_007f5930);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar2,uVar2);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar7 & 0xffffffff,uVar7 & 0xffffffff);
|
|
|
|
uVar4 = PackedFloatingADD(uVar4,uVar6);
|
|
|
|
uVar4 = PackedFloatingAccumulate(uVar4,uVar4);
|
|
|
|
uVar6 = PackedFloatingReciprocalSQRAprox(uVar6,uVar4);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar6,uVar6);
|
|
|
|
uVar9 = PackedFloatingReciprocalSQRIter1(uVar9,uVar4);
|
|
|
|
uVar6 = PackedFloatingReciprocalIter2(uVar9,uVar6);
|
|
|
|
uVar1 = (undefined4)uVar6;
|
|
|
|
PackedFloatingMUL(uVar4,uVar6);
|
|
|
|
uVar8 = FUN_006157a0(uVar1,unaff_ESI,unaff_EBX);
|
|
|
|
uVar14 = PackedFloatingCompareGE(uVar8 & _DAT_007f2ff0,DAT_007f3000);
|
|
|
|
uVar5 = (undefined4)(uVar8 >> 0x20);
|
|
|
|
uVar4 = PackedFloatingMUL(CONCAT44(uVar5,uVar5),CONCAT44(unaff_ESI,uVar1));
|
|
|
|
local_20 = (undefined4)uVar7;
|
|
|
|
if ((uVar14 & 0x100000000) != 0) {
|
|
|
|
uVar4 = CONCAT44((int)uVar4,(int)uVar4);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar7 & 0xffffffff,uVar4);
|
|
|
|
local_20 = (undefined4)uVar6;
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,uVar4);
|
|
|
|
}
|
|
|
|
uVar14 = CONCAT44((int)uVar8,local_20);
|
|
|
|
uVar7 = CONCAT44((int)uVar2,(int)((ulonglong)uVar2 >> 0x20));
|
|
|
|
uVar10 = CONCAT44(local_20,(int)uVar8);
|
|
|
|
uVar8 = PackedFloatingMUL(uVar2,local_80);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar14,local_88);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar10 ^ _DAT_007f2fd0,local_88);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar7,local_80);
|
|
|
|
uVar4 = PackedFloatingADD(uVar8 ^ _DAT_007f2fd0,uVar4);
|
|
|
|
uVar6 = PackedFloatingSUB(uVar6,uVar9);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar10,local_80);
|
|
|
|
uVar4 = PackedFloatingAccumulate(uVar6,uVar4);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar7 ^ _DAT_007f2fd0,local_88);
|
|
|
|
uVar14 = uVar14 ^ _DAT_007f2fd0;
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,local_88);
|
|
|
|
*param_2 = uVar4;
|
|
|
|
uVar4 = PackedFloatingMUL(uVar14,local_80);
|
|
|
|
uVar6 = PackedFloatingADD(uVar6,uVar9);
|
|
|
|
uVar2 = PackedFloatingSUB(uVar4,uVar2);
|
|
|
|
uVar2 = PackedFloatingAccumulate(uVar6,uVar2);
|
|
|
|
param_2[1] = uVar2;
|
|
|
|
*param_3 = local_88;
|
|
|
|
param_3[1] = local_80;
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060d38e at 0x0060D38E (size: 4604) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060d38e(ulonglong *param_1,undefined8 *param_2,undefined8 *param_3,ulonglong *param_4,
|
|
|
|
undefined8 *param_5,undefined8 *param_6,undefined8 *param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
uint uVar1;
|
|
|
|
undefined4 uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
longlong lVar4;
|
|
|
|
ulonglong uVar5;
|
|
|
|
undefined8 uVar6;
|
|
|
|
undefined8 uVar7;
|
|
|
|
undefined4 uVar11;
|
|
|
|
ulonglong uVar8;
|
|
|
|
ulonglong uVar9;
|
|
|
|
ulonglong uVar10;
|
|
|
|
undefined8 uVar12;
|
|
|
|
ulonglong uVar13;
|
|
|
|
ulonglong uVar14;
|
|
|
|
ulonglong uVar15;
|
|
|
|
ulonglong uVar16;
|
|
|
|
ulonglong uVar17;
|
|
|
|
undefined4 uVar20;
|
|
|
|
ulonglong uVar18;
|
|
|
|
undefined8 uVar19;
|
|
|
|
ulonglong uVar21;
|
|
|
|
undefined8 uVar22;
|
|
|
|
longlong lVar23;
|
|
|
|
undefined8 uVar24;
|
|
|
|
undefined8 uVar25;
|
|
|
|
undefined8 uVar26;
|
|
|
|
uint uVar29;
|
|
|
|
undefined8 uVar27;
|
|
|
|
undefined8 uVar28;
|
|
|
|
undefined4 uVar30;
|
|
|
|
undefined8 uVar31;
|
|
|
|
undefined4 uVar33;
|
|
|
|
ulonglong uVar32;
|
|
|
|
|
|
|
|
uVar1 = DAT_007f2fb8;
|
|
|
|
uVar16 = DAT_007f2f98;
|
|
|
|
if (param_4 == (ulonglong *)0x0) {
|
|
|
|
uVar16 = (ulonglong)DAT_007f2fa8;
|
|
|
|
*param_1 = uVar16;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = uVar16 << 0x20;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = uVar16;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = uVar16 << 0x20;
|
|
|
|
}
|
|
|
|
else if (param_3 == (undefined8 *)0x0) {
|
|
|
|
if (param_2 == (undefined8 *)0x0) {
|
|
|
|
uVar32 = *param_4;
|
|
|
|
uVar15 = param_4[1];
|
|
|
|
*param_1 = uVar32 & 0xffffffff;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = uVar32 & 0xffffffff00000000;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = (ulonglong)(uint)uVar15;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = uVar16;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar7 = CONCAT44(_DAT_007f2fbc,DAT_007f2fb8);
|
|
|
|
uVar26 = *param_2;
|
|
|
|
uVar16 = *param_4;
|
|
|
|
uVar32 = param_4[1];
|
|
|
|
uVar6 = CONCAT44(DAT_007f2fb8,*(undefined4 *)(param_2 + 1));
|
|
|
|
uVar3 = PackedFloatingSUB(uVar7,uVar16);
|
|
|
|
param_1[5] = (ulonglong)(uint)uVar32;
|
|
|
|
uVar7 = PackedFloatingSUB(uVar7,(ulonglong)(uint)uVar32);
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
uVar32 = PackedFloatingMUL(uVar3,uVar26);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar6);
|
|
|
|
*param_1 = uVar16 & 0xffffffff;
|
|
|
|
param_1[2] = uVar16 & 0xffffffff00000000;
|
|
|
|
param_1[6] = uVar32;
|
|
|
|
param_1[7] = uVar15;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar17 = (ulonglong)(uint)param_4[1];
|
|
|
|
uVar5 = *param_4 & 0xffffffff;
|
|
|
|
uVar21 = *param_4 & 0xffffffff00000000;
|
|
|
|
uVar26 = *param_3;
|
|
|
|
uVar7 = param_3[1];
|
|
|
|
uVar3 = PackedFloatingADD(uVar26,uVar26);
|
|
|
|
uVar6 = PackedFloatingADD(uVar7,uVar7);
|
|
|
|
uVar11 = (undefined4)((ulonglong)uVar26 >> 0x20);
|
|
|
|
uVar20 = (undefined4)((ulonglong)uVar7 >> 0x20);
|
|
|
|
uVar31 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar26,uVar3);
|
|
|
|
uVar26 = CONCAT44((int)uVar3,(int)uVar6);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar3,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(CONCAT44((int)uVar7,(int)uVar7),uVar26);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar26,CONCAT44(uVar11,uVar11));
|
|
|
|
uVar26 = PackedFloatingMUL(uVar26,uVar31);
|
|
|
|
uVar3 = CONCAT44((int)((ulonglong)uVar6 >> 0x20),(int)((ulonglong)uVar7 >> 0x20));
|
|
|
|
uVar31 = PackedFloatingADD(CONCAT44((int)uVar6,(int)uVar6),uVar12);
|
|
|
|
uVar6 = PackedFloatingAccumulate(uVar12,uVar12);
|
|
|
|
uVar26 = CONCAT44((int)((ulonglong)uVar22 >> 0x20),(int)uVar26);
|
|
|
|
uVar13 = PackedFloatingSUBR(uVar6,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar12 = PackedFloatingSUBR(uVar31,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar14 = uVar13 & 0xffffffff;
|
|
|
|
uVar6 = PackedFloatingADD(uVar3,uVar26);
|
|
|
|
uVar18 = PackedFloatingSUB(uVar3,uVar26);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar22);
|
|
|
|
uVar15 = PackedFloatingSUB(uVar7,uVar22);
|
|
|
|
uVar9 = uVar8 & 0xffffffff;
|
|
|
|
uVar20 = (undefined4)uVar18;
|
|
|
|
uVar30 = (undefined4)uVar12;
|
|
|
|
uVar7 = CONCAT44(uVar30,uVar20);
|
|
|
|
uVar11 = (undefined4)uVar6;
|
|
|
|
uVar32 = uVar18 >> 0x20;
|
|
|
|
lVar4 = (ulonglong)DAT_007f2fb8 << 0x20;
|
|
|
|
uVar29 = (uint)((ulonglong)uVar6 >> 0x20);
|
|
|
|
uVar33 = (undefined4)((ulonglong)uVar12 >> 0x20);
|
|
|
|
uVar26 = CONCAT44(uVar11,uVar33);
|
|
|
|
uVar3 = CONCAT44((int)uVar15,uVar29);
|
|
|
|
uVar2 = (undefined4)(uVar18 >> 0x20);
|
|
|
|
if (param_2 == (undefined8 *)0x0) {
|
|
|
|
*param_1 = CONCAT44(uVar20,uVar33);
|
|
|
|
param_1[2] = CONCAT44(uVar30,uVar11);
|
|
|
|
param_1[5] = uVar13 & 0xffffffff;
|
|
|
|
param_1[7] = (ulonglong)uVar1 << 0x20;
|
|
|
|
param_1[4] = CONCAT44((int)uVar8,uVar2);
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[3] = uVar15 & 0xffffffff;
|
|
|
|
param_1[1] = (ulonglong)uVar29;
|
|
|
|
uVar11 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar2 = (undefined4)*param_1;
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[1];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar5,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,0);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar21,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,0);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(0,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar15 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
*param_1 = uVar8;
|
|
|
|
param_1[1] = uVar15;
|
|
|
|
uVar11 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[2];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[3];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar5,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,0);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar21,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,0);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(0,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar15 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[2] = uVar8;
|
|
|
|
param_1[3] = uVar15;
|
|
|
|
uVar11 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[4];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[5];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar5,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,0);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar21,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,0);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(0,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar15 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[4] = uVar8;
|
|
|
|
param_1[5] = uVar15;
|
|
|
|
uVar11 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[6];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[7];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar5,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,0);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar21,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,0);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(0,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar15 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar16 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[6] = uVar15;
|
|
|
|
param_1[7] = uVar16;
|
|
|
|
uVar11 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar2 = (undefined4)*param_1;
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[1];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar32);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar9);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar14);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar15 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar16 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
*param_1 = uVar15;
|
|
|
|
param_1[1] = uVar16;
|
|
|
|
uVar11 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[2];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[3];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar32);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar9);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar14);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar15 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar16 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[2] = uVar15;
|
|
|
|
param_1[3] = uVar16;
|
|
|
|
uVar11 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[4];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[5];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar32);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar9);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar14);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar15 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar16 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[4] = uVar15;
|
|
|
|
param_1[5] = uVar16;
|
|
|
|
uVar11 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[6];
|
|
|
|
uVar6 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[7];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar26,uVar6);
|
|
|
|
uVar26 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar32);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar7,uVar26);
|
|
|
|
uVar7 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar26,uVar9);
|
|
|
|
uVar31 = PackedFloatingADD(uVar22,uVar31);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar3,uVar12);
|
|
|
|
uVar3 = PackedFloatingADD(uVar26,uVar6);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar12,uVar14);
|
|
|
|
uVar6 = PackedFloatingADD(uVar22,uVar31);
|
|
|
|
uVar12 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar26 = PackedFloatingADD(uVar3,uVar26);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar4);
|
|
|
|
uVar32 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
uVar16 = PackedFloatingADD(uVar7,uVar26);
|
|
|
|
param_1[6] = uVar32;
|
|
|
|
param_1[7] = uVar16;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar31 = CONCAT44(uVar20,uVar33);
|
|
|
|
uVar25 = CONCAT44(uVar30,uVar11);
|
|
|
|
uVar13 = uVar13 & 0xffffffff;
|
|
|
|
lVar23 = (ulonglong)DAT_007f2fb8 << 0x20;
|
|
|
|
uVar27 = CONCAT44((int)uVar8,uVar2);
|
|
|
|
uVar15 = uVar15 & 0xffffffff;
|
|
|
|
uVar18 = (ulonglong)uVar29;
|
|
|
|
uVar6 = *param_2;
|
|
|
|
uVar1 = *(uint *)(param_2 + 1);
|
|
|
|
uVar8 = (ulonglong)DAT_007f2fa8;
|
|
|
|
*param_1 = uVar8;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = uVar8 << 0x20;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = uVar8;
|
|
|
|
uVar10 = PackedFloatingSUB(uVar8 << 0x20,(ulonglong)uVar1);
|
|
|
|
uVar8 = PackedFloatingSUB(0,uVar6);
|
|
|
|
param_1[7] = uVar10;
|
|
|
|
param_1[6] = uVar8;
|
|
|
|
uVar11 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar2 = (undefined4)*param_1;
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[1];
|
|
|
|
uVar28 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar19 = PackedFloatingMUL(uVar31,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar12,uVar18);
|
|
|
|
uVar24 = PackedFloatingMUL(uVar25,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar15);
|
|
|
|
uVar19 = PackedFloatingADD(uVar24,uVar19);
|
|
|
|
uVar24 = PackedFloatingMUL(uVar27,uVar28);
|
|
|
|
uVar22 = PackedFloatingADD(uVar6,uVar22);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar28,uVar13);
|
|
|
|
uVar28 = PackedFloatingADD(uVar24,uVar19);
|
|
|
|
uVar19 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar22,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar23);
|
|
|
|
uVar10 = PackedFloatingADD(uVar19,uVar28);
|
|
|
|
uVar8 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
*param_1 = uVar10;
|
|
|
|
param_1[1] = uVar8;
|
|
|
|
uVar11 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[2];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[3];
|
|
|
|
uVar28 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar19 = PackedFloatingMUL(uVar31,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar12,uVar18);
|
|
|
|
uVar24 = PackedFloatingMUL(uVar25,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar15);
|
|
|
|
uVar19 = PackedFloatingADD(uVar24,uVar19);
|
|
|
|
uVar24 = PackedFloatingMUL(uVar27,uVar28);
|
|
|
|
uVar22 = PackedFloatingADD(uVar6,uVar22);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar28,uVar13);
|
|
|
|
uVar28 = PackedFloatingADD(uVar24,uVar19);
|
|
|
|
uVar19 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar22,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar23);
|
|
|
|
uVar10 = PackedFloatingADD(uVar19,uVar28);
|
|
|
|
uVar8 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[2] = uVar10;
|
|
|
|
param_1[3] = uVar8;
|
|
|
|
uVar11 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[4];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[5];
|
|
|
|
uVar28 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar19 = PackedFloatingMUL(uVar31,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar12,uVar18);
|
|
|
|
uVar24 = PackedFloatingMUL(uVar25,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar15);
|
|
|
|
uVar19 = PackedFloatingADD(uVar24,uVar19);
|
|
|
|
uVar24 = PackedFloatingMUL(uVar27,uVar28);
|
|
|
|
uVar22 = PackedFloatingADD(uVar6,uVar22);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar28,uVar13);
|
|
|
|
uVar28 = PackedFloatingADD(uVar24,uVar19);
|
|
|
|
uVar19 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar22,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar23);
|
|
|
|
uVar10 = PackedFloatingADD(uVar19,uVar28);
|
|
|
|
uVar8 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[4] = uVar10;
|
|
|
|
param_1[5] = uVar8;
|
|
|
|
uVar11 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[6];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[7];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar31,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar18);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar25,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar15);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar27,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar13);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar23);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar15 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[6] = uVar8;
|
|
|
|
param_1[7] = uVar15;
|
|
|
|
uVar11 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar2 = (undefined4)*param_1;
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[1];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar5,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,0);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar21,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,0);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(0,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar15 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
*param_1 = uVar8;
|
|
|
|
param_1[1] = uVar15;
|
|
|
|
uVar11 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[2];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[3];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar5,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,0);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar21,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,0);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(0,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar15 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[2] = uVar8;
|
|
|
|
param_1[3] = uVar15;
|
|
|
|
uVar11 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[4];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[5];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar5,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,0);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar21,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,0);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(0,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar15 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[4] = uVar8;
|
|
|
|
param_1[5] = uVar15;
|
|
|
|
uVar11 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[6];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[7];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar5,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,0);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar21,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,0);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(0,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar15 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar16 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[6] = uVar15;
|
|
|
|
param_1[7] = uVar16;
|
|
|
|
uVar11 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar2 = (undefined4)*param_1;
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[1];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar32);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar9);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar14);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar15 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar16 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
*param_1 = uVar15;
|
|
|
|
param_1[1] = uVar16;
|
|
|
|
uVar11 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[2];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[3];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar32);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar9);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar14);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar15 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar16 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[2] = uVar15;
|
|
|
|
param_1[3] = uVar16;
|
|
|
|
uVar11 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[4];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[5];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar32);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar9);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar14);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar15 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar16 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[4] = uVar15;
|
|
|
|
param_1[5] = uVar16;
|
|
|
|
uVar11 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[6];
|
|
|
|
uVar6 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[7];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar26,uVar6);
|
|
|
|
uVar26 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar32);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar7,uVar26);
|
|
|
|
uVar7 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar26,uVar9);
|
|
|
|
uVar31 = PackedFloatingADD(uVar22,uVar31);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar3,uVar12);
|
|
|
|
uVar3 = PackedFloatingADD(uVar26,uVar6);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar12,uVar14);
|
|
|
|
uVar6 = PackedFloatingADD(uVar22,uVar31);
|
|
|
|
uVar12 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar26 = PackedFloatingADD(uVar3,uVar26);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar4);
|
|
|
|
uVar32 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
uVar16 = PackedFloatingADD(uVar7,uVar26);
|
|
|
|
param_1[6] = uVar32;
|
|
|
|
param_1[7] = uVar16;
|
|
|
|
uVar16 = PackedFloatingADD(*param_2,param_1[6]);
|
|
|
|
uVar26 = PackedFloatingADD((ulonglong)*(uint *)(param_2 + 1),(ulonglong)(uint)param_1[7]);
|
|
|
|
param_1[6] = uVar16;
|
|
|
|
*(int *)(param_1 + 7) = (int)uVar26;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_6 != (undefined8 *)0x0) {
|
|
|
|
uVar26 = *param_6;
|
|
|
|
uVar7 = param_6[1];
|
|
|
|
uVar3 = PackedFloatingADD(uVar26,uVar26);
|
|
|
|
uVar6 = PackedFloatingADD(uVar7,uVar7);
|
|
|
|
uVar11 = (undefined4)((ulonglong)uVar26 >> 0x20);
|
|
|
|
uVar20 = (undefined4)((ulonglong)uVar7 >> 0x20);
|
|
|
|
uVar31 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar26,uVar3);
|
|
|
|
uVar26 = CONCAT44((int)uVar3,(int)uVar6);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar3,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(CONCAT44((int)uVar7,(int)uVar7),uVar26);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar26,CONCAT44(uVar11,uVar11));
|
|
|
|
uVar26 = PackedFloatingMUL(uVar26,uVar31);
|
|
|
|
uVar3 = CONCAT44((int)((ulonglong)uVar6 >> 0x20),(int)((ulonglong)uVar7 >> 0x20));
|
|
|
|
uVar31 = PackedFloatingADD(CONCAT44((int)uVar6,(int)uVar6),uVar12);
|
|
|
|
uVar6 = PackedFloatingAccumulate(uVar12,uVar12);
|
|
|
|
uVar26 = CONCAT44((int)((ulonglong)uVar22 >> 0x20),(int)uVar26);
|
|
|
|
uVar15 = PackedFloatingSUBR(uVar6,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar12 = PackedFloatingSUBR(uVar31,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar15 = uVar15 & 0xffffffff;
|
|
|
|
uVar6 = PackedFloatingADD(uVar3,uVar26);
|
|
|
|
uVar16 = PackedFloatingSUB(uVar3,uVar26);
|
|
|
|
uVar32 = PackedFloatingADD(uVar7,uVar22);
|
|
|
|
uVar7 = PackedFloatingSUB(uVar7,uVar22);
|
|
|
|
uVar32 = uVar32 & 0xffffffff;
|
|
|
|
uVar3 = CONCAT44((int)uVar12,(int)uVar16);
|
|
|
|
uVar16 = uVar16 >> 0x20;
|
|
|
|
lVar4 = (ulonglong)DAT_007f2fb8 << 0x20;
|
|
|
|
uVar26 = CONCAT44((int)uVar6,(int)((ulonglong)uVar12 >> 0x20));
|
|
|
|
uVar7 = CONCAT44((int)uVar7,(int)((ulonglong)uVar6 >> 0x20));
|
|
|
|
if (param_5 == (undefined8 *)0x0) {
|
|
|
|
uVar11 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar2 = (undefined4)*param_1;
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[1];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar32);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar15);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar5 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
*param_1 = uVar8;
|
|
|
|
param_1[1] = uVar5;
|
|
|
|
uVar11 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[2];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[3];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar32);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar15);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar5 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[2] = uVar8;
|
|
|
|
param_1[3] = uVar5;
|
|
|
|
uVar11 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[4];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[5];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar32);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar15);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar5 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[4] = uVar8;
|
|
|
|
param_1[5] = uVar5;
|
|
|
|
uVar11 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[6];
|
|
|
|
uVar6 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[7];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar26,uVar6);
|
|
|
|
uVar26 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar16);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar3,uVar26);
|
|
|
|
uVar3 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar26,uVar32);
|
|
|
|
uVar31 = PackedFloatingADD(uVar22,uVar31);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar7,uVar12);
|
|
|
|
uVar7 = PackedFloatingADD(uVar26,uVar6);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar12,uVar15);
|
|
|
|
uVar6 = PackedFloatingADD(uVar22,uVar31);
|
|
|
|
uVar12 = PackedFloatingMUL(0,uVar3);
|
|
|
|
uVar26 = PackedFloatingADD(uVar7,uVar26);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar3,lVar4);
|
|
|
|
uVar32 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
uVar16 = PackedFloatingADD(uVar7,uVar26);
|
|
|
|
param_1[6] = uVar32;
|
|
|
|
param_1[7] = uVar16;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar5 = PackedFloatingSUB(param_1[6],*param_5);
|
|
|
|
uVar6 = PackedFloatingSUB((ulonglong)(uint)param_1[7],(ulonglong)*(uint *)(param_5 + 1));
|
|
|
|
param_1[6] = uVar5;
|
|
|
|
*(int *)(param_1 + 7) = (int)uVar6;
|
|
|
|
uVar11 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar2 = (undefined4)*param_1;
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[1];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar32);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar15);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar5 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
*param_1 = uVar8;
|
|
|
|
param_1[1] = uVar5;
|
|
|
|
uVar11 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[2];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[3];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar32);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar15);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar5 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[2] = uVar8;
|
|
|
|
param_1[3] = uVar5;
|
|
|
|
uVar11 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[4];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[5];
|
|
|
|
uVar22 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar28 = PackedFloatingMUL(uVar26,uVar12);
|
|
|
|
uVar6 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar12,uVar16);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar3,uVar6);
|
|
|
|
uVar12 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar32);
|
|
|
|
uVar28 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar25 = PackedFloatingMUL(uVar7,uVar22);
|
|
|
|
uVar31 = PackedFloatingADD(uVar6,uVar31);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar22,uVar15);
|
|
|
|
uVar22 = PackedFloatingADD(uVar25,uVar28);
|
|
|
|
uVar28 = PackedFloatingMUL(0,uVar12);
|
|
|
|
uVar6 = PackedFloatingADD(uVar31,uVar6);
|
|
|
|
uVar12 = PackedFloatingMUL(uVar12,lVar4);
|
|
|
|
uVar8 = PackedFloatingADD(uVar28,uVar22);
|
|
|
|
uVar5 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
param_1[4] = uVar8;
|
|
|
|
param_1[5] = uVar5;
|
|
|
|
uVar11 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar20 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar2 = (undefined4)param_1[6];
|
|
|
|
uVar6 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar2 = (undefined4)param_1[7];
|
|
|
|
uVar12 = CONCAT44(uVar2,uVar2);
|
|
|
|
uVar31 = PackedFloatingMUL(uVar26,uVar6);
|
|
|
|
uVar26 = CONCAT44(uVar11,uVar11);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar16);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar3,uVar26);
|
|
|
|
uVar3 = CONCAT44(uVar20,uVar20);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar26,uVar32);
|
|
|
|
uVar31 = PackedFloatingADD(uVar22,uVar31);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar7,uVar12);
|
|
|
|
uVar7 = PackedFloatingADD(uVar26,uVar6);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar12,uVar15);
|
|
|
|
uVar6 = PackedFloatingADD(uVar22,uVar31);
|
|
|
|
uVar12 = PackedFloatingMUL(0,uVar3);
|
|
|
|
uVar26 = PackedFloatingADD(uVar7,uVar26);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar3,lVar4);
|
|
|
|
uVar32 = PackedFloatingADD(uVar12,uVar6);
|
|
|
|
uVar16 = PackedFloatingADD(uVar7,uVar26);
|
|
|
|
param_1[6] = uVar32;
|
|
|
|
param_1[7] = uVar16;
|
|
|
|
uVar16 = PackedFloatingADD(param_1[6],*param_5);
|
|
|
|
uVar26 = PackedFloatingADD((ulonglong)(uint)param_1[7],(ulonglong)*(uint *)(param_5 + 1));
|
|
|
|
param_1[6] = uVar16;
|
|
|
|
*(int *)(param_1 + 7) = (int)uVar26;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_7 != (undefined8 *)0x0) {
|
|
|
|
uVar16 = PackedFloatingADD(param_1[6],*param_7);
|
|
|
|
uVar26 = PackedFloatingADD((ulonglong)(uint)param_1[7],(ulonglong)*(uint *)(param_7 + 1));
|
|
|
|
param_1[6] = uVar16;
|
|
|
|
*(int *)(param_1 + 7) = (int)uVar26;
|
|
|
|
}
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060e58a at 0x0060E58A (size: 421) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060e58a(undefined8 *param_1,undefined8 param_2,undefined8 param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
undefined8 uVar4;
|
|
|
|
undefined8 uVar5;
|
|
|
|
ulonglong uVar6;
|
|
|
|
undefined4 uVar9;
|
|
|
|
undefined8 uVar7;
|
|
|
|
ulonglong uVar8;
|
|
|
|
undefined8 uVar10;
|
|
|
|
undefined8 uVar11;
|
|
|
|
undefined4 uVar12;
|
|
|
|
|
|
|
|
PackedFloatingMUL(DAT_007f3048,param_3);
|
|
|
|
PackedFloatingMUL(DAT_007f3048,param_2);
|
|
|
|
uVar2 = FUN_006157a0();
|
|
|
|
uVar3 = FUN_006157a0();
|
|
|
|
uVar4 = FUN_006157a0();
|
|
|
|
uVar1 = (undefined4)uVar4;
|
|
|
|
uVar9 = (undefined4)((ulonglong)uVar4 >> 0x20);
|
|
|
|
uVar4 = CONCAT44((int)uVar3,(int)uVar3);
|
|
|
|
uVar12 = (undefined4)((ulonglong)uVar3 >> 0x20);
|
|
|
|
uVar10 = CONCAT44(uVar12,uVar12);
|
|
|
|
uVar3 = PackedFloatingMUL(CONCAT44(uVar1,uVar1) ^ DAT_007f2fd8,uVar10);
|
|
|
|
uVar5 = PackedFloatingMUL(CONCAT44(uVar1,uVar1),uVar4);
|
|
|
|
uVar7 = PackedFloatingMUL(CONCAT44(uVar9,uVar9),uVar4);
|
|
|
|
uVar10 = PackedFloatingMUL(CONCAT44(uVar9,uVar9) ^ DAT_007f2fd8 >> 0x20,uVar10);
|
|
|
|
uVar11 = CONCAT44((int)uVar2,(int)((ulonglong)uVar2 >> 0x20));
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar2);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar5,uVar11);
|
|
|
|
uVar5 = PackedFloatingMUL(uVar7,uVar11);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar10,uVar2);
|
|
|
|
uVar2 = PackedFloatingADD(uVar3,uVar5);
|
|
|
|
uVar5 = PackedFloatingADD(uVar4,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar2,uVar2);
|
|
|
|
uVar4 = PackedFloatingADD(uVar5,uVar5);
|
|
|
|
uVar1 = (undefined4)((ulonglong)uVar2 >> 0x20);
|
|
|
|
uVar9 = (undefined4)((ulonglong)uVar5 >> 0x20);
|
|
|
|
uVar10 = CONCAT44(uVar9,uVar9);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar2,uVar3);
|
|
|
|
uVar2 = CONCAT44((int)uVar3,(int)uVar4);
|
|
|
|
uVar11 = PackedFloatingMUL(uVar3,uVar10);
|
|
|
|
uVar5 = PackedFloatingMUL(CONCAT44((int)uVar5,(int)uVar5),uVar2);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar2,CONCAT44(uVar1,uVar1));
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar4 = CONCAT44((int)((ulonglong)uVar5 >> 0x20),(int)((ulonglong)uVar3 >> 0x20));
|
|
|
|
param_1[6] = 0;
|
|
|
|
uVar10 = PackedFloatingADD(CONCAT44((int)uVar5,(int)uVar5),uVar7);
|
|
|
|
uVar5 = PackedFloatingAccumulate(uVar7,uVar7);
|
|
|
|
uVar2 = CONCAT44((int)((ulonglong)uVar11 >> 0x20),(int)uVar2);
|
|
|
|
uVar6 = PackedFloatingSUBR(uVar5,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar7 = PackedFloatingSUBR(uVar10,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar5 = PackedFloatingADD(uVar4,uVar2);
|
|
|
|
param_1[5] = uVar6 & 0xffffffff;
|
|
|
|
uVar8 = PackedFloatingSUB(uVar4,uVar2);
|
|
|
|
uVar6 = PackedFloatingADD(uVar3,uVar11);
|
|
|
|
uVar2 = PackedFloatingSUB(uVar3,uVar11);
|
|
|
|
param_1[3] = uVar6 & 0xffffffff;
|
|
|
|
uVar6 = (ulonglong)DAT_007f2fb8;
|
|
|
|
param_1[1] = uVar8 >> 0x20;
|
|
|
|
param_1[2] = CONCAT44((int)uVar7,(int)uVar8);
|
|
|
|
*param_1 = CONCAT44((int)uVar5,(int)((ulonglong)uVar7 >> 0x20));
|
|
|
|
param_1[4] = CONCAT44((int)uVar2,(int)((ulonglong)uVar5 >> 0x20));
|
|
|
|
param_1[7] = uVar6 << 0x20;
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060ec63 at 0x0060EC63 (size: 283) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060ec63(undefined8 *param_1,undefined8 *param_2)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
ulonglong uVar4;
|
|
|
|
undefined8 uVar5;
|
|
|
|
undefined8 uVar6;
|
|
|
|
undefined8 uVar7;
|
|
|
|
ulonglong uVar8;
|
|
|
|
undefined4 uVar9;
|
|
|
|
undefined8 local_20;
|
|
|
|
uint local_18;
|
|
|
|
|
|
|
|
local_20 = *param_2;
|
|
|
|
local_18 = *(uint *)(param_2 + 1);
|
|
|
|
FUN_00610a40(&local_20,&local_20);
|
|
|
|
uVar1 = FUN_006157a0();
|
|
|
|
uVar2 = PackedFloatingSUBR(uVar1,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar9 = (undefined4)((ulonglong)uVar1 >> 0x20);
|
|
|
|
uVar4 = (ulonglong)local_18;
|
|
|
|
uVar5 = PackedFloatingMUL(CONCAT44(local_18,local_18),local_20);
|
|
|
|
uVar2 = CONCAT44((int)uVar2,(int)uVar2);
|
|
|
|
uVar3 = PackedFloatingMUL(CONCAT44(local_18,(int)((ulonglong)local_20 >> 0x20)),local_20);
|
|
|
|
uVar1 = CONCAT44((int)uVar1,(int)uVar1);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar2);
|
|
|
|
uVar5 = PackedFloatingMUL(uVar5,uVar2);
|
|
|
|
uVar6 = PackedFloatingMUL(local_20,local_20);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar4,uVar4);
|
|
|
|
uVar6 = PackedFloatingMUL(uVar6,uVar2);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar2);
|
|
|
|
uVar2 = PackedFloatingADD(uVar6,uVar1);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar1);
|
|
|
|
uVar1 = CONCAT44(uVar9,uVar9);
|
|
|
|
uVar6 = PackedFloatingMUL(local_20,uVar1);
|
|
|
|
uVar1 = PackedFloatingMUL(uVar4,uVar1);
|
|
|
|
param_1[6] = 0;
|
|
|
|
uVar7 = CONCAT44((int)uVar6,(int)uVar1);
|
|
|
|
uVar9 = (undefined4)((ulonglong)uVar6 >> 0x20);
|
|
|
|
uVar6 = CONCAT44(uVar9,uVar9);
|
|
|
|
param_1[5] = uVar8 & 0xffffffff;
|
|
|
|
uVar1 = PackedFloatingSUB(uVar3,uVar7);
|
|
|
|
uVar8 = PackedFloatingADD(uVar3,uVar7);
|
|
|
|
uVar4 = PackedFloatingSUB(uVar5,uVar6);
|
|
|
|
*param_1 = CONCAT44((int)uVar8,(int)uVar2);
|
|
|
|
param_1[1] = uVar4 & 0xffffffff;
|
|
|
|
uVar4 = (ulonglong)_DAT_007f2fbc;
|
|
|
|
uVar3 = PackedFloatingADD(CONCAT44((int)uVar5,(int)uVar5),uVar6);
|
|
|
|
param_1[3] = uVar8 >> 0x20;
|
|
|
|
param_1[7] = uVar4 << 0x20;
|
|
|
|
param_1[4] = CONCAT44((int)((ulonglong)uVar1 >> 0x20),(int)((ulonglong)uVar3 >> 0x20));
|
|
|
|
param_1[2] = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)uVar1);
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060ed7e at 0x0060ED7E (size: 4536) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060ed7e(ulonglong *param_1,undefined8 *param_2,undefined8 *param_3,ulonglong *param_4,
|
|
|
|
undefined8 *param_5,undefined8 *param_6,undefined8 *param_7)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined4 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
undefined8 uVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
undefined8 uVar7;
|
|
|
|
ulonglong uVar8;
|
|
|
|
undefined8 in_MM2;
|
|
|
|
ulonglong uVar9;
|
|
|
|
undefined8 uVar10;
|
|
|
|
ulonglong uVar11;
|
|
|
|
ulonglong uVar12;
|
|
|
|
ulonglong uVar13;
|
|
|
|
uint uVar14;
|
|
|
|
ulonglong in_MM3;
|
|
|
|
undefined8 uVar15;
|
|
|
|
undefined8 uVar16;
|
|
|
|
ulonglong uVar17;
|
|
|
|
ulonglong uVar18;
|
|
|
|
ulonglong uVar19;
|
|
|
|
undefined8 uVar20;
|
|
|
|
ulonglong uVar21;
|
|
|
|
undefined8 uVar22;
|
|
|
|
ulonglong uVar23;
|
|
|
|
ulonglong uVar24;
|
|
|
|
longlong lVar25;
|
|
|
|
undefined8 uVar26;
|
|
|
|
undefined8 uVar27;
|
|
|
|
undefined4 uVar29;
|
|
|
|
undefined8 uVar28;
|
|
|
|
undefined4 uVar30;
|
|
|
|
longlong lVar31;
|
|
|
|
ulonglong uVar32;
|
|
|
|
|
|
|
|
uVar18 = DAT_007f2f98;
|
|
|
|
if (param_4 == (ulonglong *)0x0) {
|
|
|
|
uVar18 = (ulonglong)DAT_007f2fa8;
|
|
|
|
uVar32 = PackedSwapDWords(in_MM2,uVar18);
|
|
|
|
*param_1 = uVar18;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = uVar32;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = uVar18;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = uVar32;
|
|
|
|
}
|
|
|
|
else if (param_3 == (undefined8 *)0x0) {
|
|
|
|
if (param_2 == (undefined8 *)0x0) {
|
|
|
|
in_MM3 = *param_4;
|
|
|
|
uVar32 = param_4[1];
|
|
|
|
*param_1 = in_MM3 & 0xffffffff;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = in_MM3 & 0xffffffff00000000;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = (ulonglong)(uint)uVar32;
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[7] = uVar18;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar20 = CONCAT44(_DAT_007f2fbc,DAT_007f2fb8);
|
|
|
|
uVar4 = *param_2;
|
|
|
|
uVar18 = *param_4;
|
|
|
|
in_MM3 = (ulonglong)(uint)param_4[1];
|
|
|
|
uVar3 = CONCAT44(DAT_007f2fb8,*(undefined4 *)(param_2 + 1));
|
|
|
|
uVar2 = PackedFloatingSUB(uVar20,uVar18);
|
|
|
|
param_1[5] = in_MM3;
|
|
|
|
uVar20 = PackedFloatingSUB(uVar20,in_MM3);
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
uVar32 = PackedFloatingMUL(uVar2,uVar4);
|
|
|
|
uVar13 = PackedFloatingMUL(uVar20,uVar3);
|
|
|
|
*param_1 = uVar18 & 0xffffffff;
|
|
|
|
param_1[2] = uVar18 & 0xffffffff00000000;
|
|
|
|
param_1[6] = uVar32;
|
|
|
|
param_1[7] = uVar13;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar32 = *param_4;
|
|
|
|
uVar19 = (ulonglong)(uint)param_4[1];
|
|
|
|
uVar9 = uVar32 & 0xffffffff;
|
|
|
|
uVar23 = uVar32 & 0xffffffff00000000;
|
|
|
|
uVar4 = *param_3;
|
|
|
|
uVar20 = param_3[1];
|
|
|
|
uVar15 = PackedSwapDWords(uVar32,uVar4);
|
|
|
|
uVar2 = PackedFloatingADD(uVar4,uVar4);
|
|
|
|
uVar7 = PackedFloatingADD(uVar20,uVar20);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar2,uVar4);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar4,uVar7);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar15,uVar7);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar20);
|
|
|
|
uVar2 = PackedFloatingMUL(CONCAT44((int)((ulonglong)uVar20 >> 0x20),
|
|
|
|
(int)((ulonglong)uVar4 >> 0x20)),
|
|
|
|
CONCAT44((int)uVar7,(int)uVar2));
|
|
|
|
uVar4 = PackedFloatingSUBR(uVar3,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar17 = PackedFloatingPosNegAccumulate(uVar16,uVar16);
|
|
|
|
uVar20 = PackedFloatingAccumulate(uVar3,uVar3);
|
|
|
|
uVar3 = PackedFloatingPosNegAccumulate(uVar2,uVar2);
|
|
|
|
uVar11 = PackedFloatingPosNegAccumulate(uVar10,uVar10);
|
|
|
|
uVar4 = PackedFloatingSUB(uVar4,CONCAT44((int)uVar15,(int)uVar15));
|
|
|
|
uVar24 = PackedSwapDWords(uVar15,uVar11);
|
|
|
|
uVar21 = PackedFloatingSUBR(uVar20,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar2 = CONCAT44((int)uVar17,(int)uVar24);
|
|
|
|
uVar12 = uVar11 & 0xffffffff;
|
|
|
|
uVar32 = uVar21 >> 0x20;
|
|
|
|
uVar5 = (undefined4)((ulonglong)uVar4 >> 0x20);
|
|
|
|
uVar29 = (undefined4)((ulonglong)uVar3 >> 0x20);
|
|
|
|
uVar20 = CONCAT44(uVar29,uVar5);
|
|
|
|
uVar13 = uVar17 >> 0x20;
|
|
|
|
uVar6 = (undefined4)uVar4;
|
|
|
|
uVar1 = (undefined4)uVar3;
|
|
|
|
uVar4 = CONCAT44(uVar6,uVar1);
|
|
|
|
uVar8 = (ulonglong)DAT_007f2fb8;
|
|
|
|
lVar31 = uVar8 << 0x20;
|
|
|
|
uVar30 = (undefined4)(uVar17 >> 0x20);
|
|
|
|
uVar14 = (uint)(uVar21 >> 0x20);
|
|
|
|
if (param_2 == (undefined8 *)0x0) {
|
|
|
|
*param_1 = CONCAT44(uVar1,uVar5);
|
|
|
|
param_1[2] = CONCAT44(uVar6,uVar29);
|
|
|
|
param_1[5] = (ulonglong)uVar14;
|
|
|
|
param_1[7] = uVar8 << 0x20;
|
|
|
|
param_1[4] = CONCAT44(uVar30,(int)uVar11);
|
|
|
|
param_1[6] = 0;
|
|
|
|
param_1[3] = uVar17 & 0xffffffff;
|
|
|
|
param_1[1] = uVar24 & 0xffffffff;
|
|
|
|
uVar5 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar1 = (undefined4)*param_1;
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[1];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar9,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,0);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar23,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,0);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(0,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar19);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
*param_1 = uVar17;
|
|
|
|
param_1[1] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[2];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[3];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar9,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,0);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar23,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,0);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(0,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar19);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[2] = uVar17;
|
|
|
|
param_1[3] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[4];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[5];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar9,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,0);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar23,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,0);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(0,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar19);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[4] = uVar17;
|
|
|
|
param_1[5] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[6];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[7];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar9,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,0);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar23,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,0);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(0,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar19);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar8 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar18 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[6] = uVar8;
|
|
|
|
param_1[7] = uVar18;
|
|
|
|
uVar5 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar1 = (undefined4)*param_1;
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[1];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar12);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar13);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar32);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar8 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar18 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
*param_1 = uVar8;
|
|
|
|
param_1[1] = uVar18;
|
|
|
|
uVar5 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[2];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[3];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar12);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar13);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar32);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar8 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar18 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[2] = uVar8;
|
|
|
|
param_1[3] = uVar18;
|
|
|
|
uVar5 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[4];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[5];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar12);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar13);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar32);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar8 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar18 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[4] = uVar8;
|
|
|
|
param_1[5] = uVar18;
|
|
|
|
uVar5 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[6];
|
|
|
|
uVar3 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[7];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar20,uVar3);
|
|
|
|
uVar20 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar12);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar4,uVar20);
|
|
|
|
uVar4 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar20 = PackedFloatingMUL(uVar20,uVar13);
|
|
|
|
uVar15 = PackedFloatingADD(uVar10,uVar15);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar2,uVar7);
|
|
|
|
uVar2 = PackedFloatingADD(uVar20,uVar3);
|
|
|
|
uVar20 = PackedFloatingMUL(uVar7,uVar32);
|
|
|
|
uVar3 = PackedFloatingADD(uVar10,uVar15);
|
|
|
|
uVar7 = PackedFloatingMUL(0,uVar4);
|
|
|
|
uVar20 = PackedFloatingADD(uVar2,uVar20);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar4,lVar31);
|
|
|
|
uVar18 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
in_MM3 = PackedFloatingADD(uVar4,uVar20);
|
|
|
|
param_1[6] = uVar18;
|
|
|
|
param_1[7] = in_MM3;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar15 = CONCAT44(uVar1,uVar5);
|
|
|
|
uVar27 = CONCAT44(uVar6,uVar29);
|
|
|
|
uVar21 = (ulonglong)uVar14;
|
|
|
|
lVar25 = (ulonglong)DAT_007f2fb8 << 0x20;
|
|
|
|
uVar28 = CONCAT44(uVar30,(int)uVar11);
|
|
|
|
uVar17 = uVar17 & 0xffffffff;
|
|
|
|
uVar24 = uVar24 & 0xffffffff;
|
|
|
|
uVar3 = *param_2;
|
|
|
|
uVar14 = *(uint *)(param_2 + 1);
|
|
|
|
uVar8 = (ulonglong)DAT_007f2fa8;
|
|
|
|
uVar11 = PackedSwapDWords(uVar24,uVar8);
|
|
|
|
*param_1 = uVar8;
|
|
|
|
param_1[1] = 0;
|
|
|
|
param_1[2] = uVar11;
|
|
|
|
param_1[3] = 0;
|
|
|
|
param_1[4] = 0;
|
|
|
|
param_1[5] = uVar8;
|
|
|
|
uVar11 = PackedFloatingSUB(uVar11,(ulonglong)uVar14);
|
|
|
|
uVar8 = PackedFloatingSUB(0,uVar3);
|
|
|
|
param_1[7] = uVar11;
|
|
|
|
param_1[6] = uVar8;
|
|
|
|
uVar5 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar1 = (undefined4)*param_1;
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[1];
|
|
|
|
uVar16 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar15,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar7,uVar24);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar27,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar26,uVar22);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar28,uVar16);
|
|
|
|
uVar10 = PackedFloatingADD(uVar3,uVar10);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar16,uVar21);
|
|
|
|
uVar16 = PackedFloatingADD(uVar26,uVar22);
|
|
|
|
uVar22 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar10,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar25);
|
|
|
|
uVar11 = PackedFloatingADD(uVar22,uVar16);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
*param_1 = uVar11;
|
|
|
|
param_1[1] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[2];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[3];
|
|
|
|
uVar16 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar15,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar7,uVar24);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar27,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar26,uVar22);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar28,uVar16);
|
|
|
|
uVar10 = PackedFloatingADD(uVar3,uVar10);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar16,uVar21);
|
|
|
|
uVar16 = PackedFloatingADD(uVar26,uVar22);
|
|
|
|
uVar22 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar10,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar25);
|
|
|
|
uVar11 = PackedFloatingADD(uVar22,uVar16);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[2] = uVar11;
|
|
|
|
param_1[3] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[4];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[5];
|
|
|
|
uVar16 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar22 = PackedFloatingMUL(uVar15,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar7,uVar24);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar27,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar17);
|
|
|
|
uVar22 = PackedFloatingADD(uVar26,uVar22);
|
|
|
|
uVar26 = PackedFloatingMUL(uVar28,uVar16);
|
|
|
|
uVar10 = PackedFloatingADD(uVar3,uVar10);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar16,uVar21);
|
|
|
|
uVar16 = PackedFloatingADD(uVar26,uVar22);
|
|
|
|
uVar22 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar10,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar25);
|
|
|
|
uVar11 = PackedFloatingADD(uVar22,uVar16);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[4] = uVar11;
|
|
|
|
param_1[5] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[6];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[7];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar15,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar24);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar27,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar17);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar28,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar21);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar25);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[6] = uVar17;
|
|
|
|
param_1[7] = uVar8;
|
|
|
|
uVar5 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar1 = (undefined4)*param_1;
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[1];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar9,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,0);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar23,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,0);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(0,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar19);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
*param_1 = uVar17;
|
|
|
|
param_1[1] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[2];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[3];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar9,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,0);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar23,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,0);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(0,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar19);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[2] = uVar17;
|
|
|
|
param_1[3] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[4];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[5];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar9,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,0);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar23,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,0);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(0,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar19);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[4] = uVar17;
|
|
|
|
param_1[5] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[6];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[7];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar9,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,0);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar23,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,0);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(0,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar19);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar8 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar18 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[6] = uVar8;
|
|
|
|
param_1[7] = uVar18;
|
|
|
|
uVar5 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar1 = (undefined4)*param_1;
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[1];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar12);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar13);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar32);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar8 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar18 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
*param_1 = uVar8;
|
|
|
|
param_1[1] = uVar18;
|
|
|
|
uVar5 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[2];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[3];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar12);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar13);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar32);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar8 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar18 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[2] = uVar8;
|
|
|
|
param_1[3] = uVar18;
|
|
|
|
uVar5 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[4];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[5];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar12);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar13);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar32);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar8 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar18 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[4] = uVar8;
|
|
|
|
param_1[5] = uVar18;
|
|
|
|
uVar5 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[6];
|
|
|
|
uVar3 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[7];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar20,uVar3);
|
|
|
|
uVar20 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar12);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar4,uVar20);
|
|
|
|
uVar4 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar20 = PackedFloatingMUL(uVar20,uVar13);
|
|
|
|
uVar15 = PackedFloatingADD(uVar10,uVar15);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar2,uVar7);
|
|
|
|
uVar2 = PackedFloatingADD(uVar20,uVar3);
|
|
|
|
uVar20 = PackedFloatingMUL(uVar7,uVar32);
|
|
|
|
uVar3 = PackedFloatingADD(uVar10,uVar15);
|
|
|
|
uVar7 = PackedFloatingMUL(0,uVar4);
|
|
|
|
uVar20 = PackedFloatingADD(uVar2,uVar20);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar4,lVar31);
|
|
|
|
uVar32 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
uVar18 = PackedFloatingADD(uVar4,uVar20);
|
|
|
|
param_1[6] = uVar32;
|
|
|
|
param_1[7] = uVar18;
|
|
|
|
in_MM3 = (ulonglong)(uint)param_1[7];
|
|
|
|
uVar18 = PackedFloatingADD(*param_2,param_1[6]);
|
|
|
|
uVar4 = PackedFloatingADD((ulonglong)*(uint *)(param_2 + 1),in_MM3);
|
|
|
|
param_1[6] = uVar18;
|
|
|
|
*(int *)(param_1 + 7) = (int)uVar4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_6 != (undefined8 *)0x0) {
|
|
|
|
uVar4 = *param_6;
|
|
|
|
uVar20 = param_6[1];
|
|
|
|
uVar15 = PackedSwapDWords(in_MM3,uVar4);
|
|
|
|
uVar2 = PackedFloatingADD(uVar4,uVar4);
|
|
|
|
uVar7 = PackedFloatingADD(uVar20,uVar20);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar2,uVar4);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar4,uVar7);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar15,uVar7);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar20);
|
|
|
|
uVar2 = PackedFloatingMUL(CONCAT44((int)((ulonglong)uVar20 >> 0x20),
|
|
|
|
(int)((ulonglong)uVar4 >> 0x20)),
|
|
|
|
CONCAT44((int)uVar7,(int)uVar2));
|
|
|
|
uVar4 = PackedFloatingSUBR(uVar3,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar32 = PackedFloatingPosNegAccumulate(uVar16,uVar16);
|
|
|
|
uVar20 = PackedFloatingAccumulate(uVar3,uVar3);
|
|
|
|
uVar3 = PackedFloatingPosNegAccumulate(uVar2,uVar2);
|
|
|
|
uVar13 = PackedFloatingPosNegAccumulate(uVar10,uVar10);
|
|
|
|
uVar4 = PackedFloatingSUB(uVar4,CONCAT44((int)uVar15,(int)uVar15));
|
|
|
|
uVar2 = PackedSwapDWords(uVar15,uVar13);
|
|
|
|
uVar18 = PackedFloatingSUBR(uVar20,CONCAT44(_DAT_007f2fbc,DAT_007f2fb8));
|
|
|
|
uVar2 = CONCAT44((int)uVar32,(int)uVar2);
|
|
|
|
uVar13 = uVar13 & 0xffffffff;
|
|
|
|
uVar18 = uVar18 >> 0x20;
|
|
|
|
uVar20 = CONCAT44((int)((ulonglong)uVar3 >> 0x20),(int)((ulonglong)uVar4 >> 0x20));
|
|
|
|
uVar32 = uVar32 >> 0x20;
|
|
|
|
uVar4 = CONCAT44((int)uVar4,(int)uVar3);
|
|
|
|
lVar31 = (ulonglong)DAT_007f2fb8 << 0x20;
|
|
|
|
if (param_5 == (undefined8 *)0x0) {
|
|
|
|
uVar5 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar1 = (undefined4)*param_1;
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[1];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar13);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar32);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar18);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
*param_1 = uVar17;
|
|
|
|
param_1[1] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[2];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[3];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar13);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar32);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar18);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[2] = uVar17;
|
|
|
|
param_1[3] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[4];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[5];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar13);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar32);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar18);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[4] = uVar17;
|
|
|
|
param_1[5] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[6];
|
|
|
|
uVar3 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[7];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar20,uVar3);
|
|
|
|
uVar20 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar13);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar4,uVar20);
|
|
|
|
uVar4 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar20 = PackedFloatingMUL(uVar20,uVar32);
|
|
|
|
uVar15 = PackedFloatingADD(uVar10,uVar15);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar2,uVar7);
|
|
|
|
uVar2 = PackedFloatingADD(uVar20,uVar3);
|
|
|
|
uVar20 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar3 = PackedFloatingADD(uVar10,uVar15);
|
|
|
|
uVar7 = PackedFloatingMUL(0,uVar4);
|
|
|
|
uVar20 = PackedFloatingADD(uVar2,uVar20);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar4,lVar31);
|
|
|
|
uVar32 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
uVar18 = PackedFloatingADD(uVar4,uVar20);
|
|
|
|
param_1[6] = uVar32;
|
|
|
|
param_1[7] = uVar18;
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
uVar8 = PackedFloatingSUB(param_1[6],*param_5);
|
|
|
|
uVar3 = PackedFloatingSUB((ulonglong)(uint)param_1[7],(ulonglong)*(uint *)(param_5 + 1));
|
|
|
|
param_1[6] = uVar8;
|
|
|
|
*(int *)(param_1 + 7) = (int)uVar3;
|
|
|
|
uVar5 = (undefined4)(*param_1 >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[1] >> 0x20);
|
|
|
|
uVar1 = (undefined4)*param_1;
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[1];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar13);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar32);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar18);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
*param_1 = uVar17;
|
|
|
|
param_1[1] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[2] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[3] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[2];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[3];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar13);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar32);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar18);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[2] = uVar17;
|
|
|
|
param_1[3] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[4] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[5] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[4];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[5];
|
|
|
|
uVar10 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar20,uVar7);
|
|
|
|
uVar3 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar7,uVar13);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar4,uVar3);
|
|
|
|
uVar7 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar32);
|
|
|
|
uVar16 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar27 = PackedFloatingMUL(uVar2,uVar10);
|
|
|
|
uVar15 = PackedFloatingADD(uVar3,uVar15);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar10,uVar18);
|
|
|
|
uVar10 = PackedFloatingADD(uVar27,uVar16);
|
|
|
|
uVar16 = PackedFloatingMUL(0,uVar7);
|
|
|
|
uVar3 = PackedFloatingADD(uVar15,uVar3);
|
|
|
|
uVar7 = PackedFloatingMUL(uVar7,lVar31);
|
|
|
|
uVar17 = PackedFloatingADD(uVar16,uVar10);
|
|
|
|
uVar8 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
param_1[4] = uVar17;
|
|
|
|
param_1[5] = uVar8;
|
|
|
|
uVar5 = (undefined4)(param_1[6] >> 0x20);
|
|
|
|
uVar6 = (undefined4)(param_1[7] >> 0x20);
|
|
|
|
uVar1 = (undefined4)param_1[6];
|
|
|
|
uVar3 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar1 = (undefined4)param_1[7];
|
|
|
|
uVar7 = CONCAT44(uVar1,uVar1);
|
|
|
|
uVar15 = PackedFloatingMUL(uVar20,uVar3);
|
|
|
|
uVar20 = CONCAT44(uVar5,uVar5);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar13);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar4,uVar20);
|
|
|
|
uVar4 = CONCAT44(uVar6,uVar6);
|
|
|
|
uVar20 = PackedFloatingMUL(uVar20,uVar32);
|
|
|
|
uVar15 = PackedFloatingADD(uVar10,uVar15);
|
|
|
|
uVar10 = PackedFloatingMUL(uVar2,uVar7);
|
|
|
|
uVar2 = PackedFloatingADD(uVar20,uVar3);
|
|
|
|
uVar20 = PackedFloatingMUL(uVar7,uVar18);
|
|
|
|
uVar3 = PackedFloatingADD(uVar10,uVar15);
|
|
|
|
uVar7 = PackedFloatingMUL(0,uVar4);
|
|
|
|
uVar20 = PackedFloatingADD(uVar2,uVar20);
|
|
|
|
uVar4 = PackedFloatingMUL(uVar4,lVar31);
|
|
|
|
uVar32 = PackedFloatingADD(uVar7,uVar3);
|
|
|
|
uVar18 = PackedFloatingADD(uVar4,uVar20);
|
|
|
|
param_1[6] = uVar32;
|
|
|
|
param_1[7] = uVar18;
|
|
|
|
uVar18 = PackedFloatingADD(param_1[6],*param_5);
|
|
|
|
uVar4 = PackedFloatingADD((ulonglong)(uint)param_1[7],(ulonglong)*(uint *)(param_5 + 1));
|
|
|
|
param_1[6] = uVar18;
|
|
|
|
*(int *)(param_1 + 7) = (int)uVar4;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (param_7 != (undefined8 *)0x0) {
|
|
|
|
uVar18 = PackedFloatingADD(param_1[6],*param_7);
|
|
|
|
uVar4 = PackedFloatingADD((ulonglong)(uint)param_1[7],(ulonglong)*(uint *)(param_7 + 1));
|
|
|
|
param_1[6] = uVar18;
|
|
|
|
*(int *)(param_1 + 7) = (int)uVar4;
|
|
|
|
}
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// --- FUN_0060ff36 at 0x0060FF36 (size: 738) ---
|
|
|
|
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
|
|
|
|
void FUN_0060ff36(undefined8 *param_1,undefined4 *param_2,undefined8 *param_3)
|
|
|
|
|
|
|
|
{
|
|
|
|
undefined8 uVar1;
|
|
|
|
undefined8 uVar2;
|
|
|
|
undefined8 uVar3;
|
|
|
|
undefined4 uVar4;
|
|
|
|
undefined4 uVar5;
|
|
|
|
undefined4 uVar6;
|
|
|
|
undefined4 uVar7;
|
|
|
|
undefined8 in_MM4;
|
|
|
|
undefined8 uVar8;
|
|
|
|
undefined4 uVar10;
|
|
|
|
undefined8 uVar9;
|
|
|
|
undefined8 in_MM5;
|
|
|
|
undefined8 uVar11;
|
|
|
|
undefined8 uVar12;
|
|
|
|
undefined8 uVar13;
|
|
|
|
undefined8 in_MM6;
|
|
|
|
undefined8 uVar14;
|
|
|
|
undefined8 uVar15;
|
|
|
|
undefined8 uVar16;
|
|
|
|
undefined8 in_MM7;
|
|
|
|
undefined8 uVar17;
|
|
|
|
undefined4 uStack_2c;
|
|
|
|
|
|
|
|
uVar2 = param_3[2];
|
|
|
|
uVar3 = param_3[4];
|
|
|
|
uVar11 = PackedSwapDWords(in_MM5,uVar2);
|
|
|
|
uVar8 = PackedSwapDWords(in_MM4,uVar3);
|
|
|
|
uVar1 = *param_3;
|
|
|
|
uVar14 = PackedSwapDWords(in_MM6,param_3[6]);
|
|
|
|
uVar17 = PackedSwapDWords(in_MM7,uVar3);
|
|
|
|
uVar11 = PackedFloatingMUL(uVar11,uVar1);
|
|
|
|
uVar8 = PackedFloatingMUL(uVar8,uVar1);
|
|
|
|
uVar14 = PackedFloatingMUL(uVar14,uVar1);
|
|
|
|
uVar1 = PackedSwapDWords(uVar1,param_3[6]);
|
|
|
|
uVar17 = PackedFloatingMUL(uVar17,uVar2);
|
|
|
|
uVar12 = PackedFloatingNegAccumulate(uVar11,uVar8);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,uVar1);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar3,uVar1);
|
|
|
|
uVar17 = PackedFloatingNegAccumulate(uVar14,uVar17);
|
|
|
|
uVar1 = PackedFloatingNegAccumulate(uVar2,uVar3);
|
|
|
|
uVar2 = param_3[7];
|
|
|
|
uVar3 = param_3[5];
|
|
|
|
uVar4 = (undefined4)((ulonglong)uVar17 >> 0x20);
|
|
|
|
uVar10 = (undefined4)((ulonglong)uVar1 >> 0x20);
|
|
|
|
uVar8 = PackedFloatingMUL(CONCAT44(uVar4,uVar4),uVar2);
|
|
|
|
uVar6 = (undefined4)uVar1;
|
|
|
|
uVar1 = PackedFloatingMUL(CONCAT44(uVar10,uVar10),param_3[3]);
|
|
|
|
uVar11 = PackedFloatingMUL(CONCAT44(uVar6,uVar6),uVar3);
|
|
|
|
uVar1 = PackedFloatingADD(uVar8,uVar1);
|
|
|
|
uVar14 = PackedFloatingSUB(uVar1,uVar11);
|
|
|
|
uVar7 = (undefined4)uVar17;
|
|
|
|
uVar5 = (undefined4)((ulonglong)uVar12 >> 0x20);
|
|
|
|
uVar8 = PackedFloatingMUL(CONCAT44(uVar10,uVar10),param_3[1]);
|
|
|
|
uVar1 = PackedFloatingMUL(CONCAT44(uVar5,uVar5),uVar2);
|
|
|
|
uVar9 = PackedFloatingMUL(CONCAT44(uVar7,uVar7),uVar3);
|
|
|
|
uVar1 = PackedFloatingSUB(uVar1,uVar9);
|
|
|
|
uVar17 = PackedFloatingADD(uVar1,uVar8);
|
|
|
|
uVar8 = CONCAT44((int)uVar12,(int)uVar12);
|
|
|
|
uVar1 = PackedFloatingMUL(CONCAT44(uVar6,uVar6),param_3[1]);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,uVar8);
|
|
|
|
uVar11 = PackedFloatingMUL(CONCAT44(uVar7,uVar7),param_3[3]);
|
|
|
|
uVar2 = PackedFloatingADD(uVar2,uVar1);
|
|
|
|
uVar11 = PackedFloatingSUB(uVar2,uVar11);
|
|
|
|
uVar1 = PackedFloatingMUL(uVar8,uVar3);
|
|
|
|
uVar13 = PackedFloatingMUL(CONCAT44(uVar5,uVar5),param_3[3]);
|
|
|
|
uVar2 = param_3[1];
|
|
|
|
uVar15 = PackedFloatingMUL(CONCAT44(uVar4,uVar4),param_3[1]);
|
|
|
|
uVar1 = PackedFloatingSUB(uVar1,uVar13);
|
|
|
|
uVar12 = PackedFloatingADD(uVar1,uVar15);
|
|
|
|
uVar1 = param_3[3];
|
|
|
|
uVar8 = param_3[5];
|
|
|
|
uVar13 = PackedSwapDWords(uVar13,uVar1);
|
|
|
|
uVar9 = PackedSwapDWords(uVar9,uVar8);
|
|
|
|
uVar13 = PackedFloatingMUL(uVar13,uVar2);
|
|
|
|
uVar15 = PackedSwapDWords(uVar15,param_3[7]);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar9,uVar2);
|
|
|
|
uVar3 = PackedSwapDWords(uVar3,uVar8);
|
|
|
|
uVar16 = PackedFloatingMUL(uVar15,uVar2);
|
|
|
|
uVar2 = PackedSwapDWords(uVar2,param_3[7]);
|
|
|
|
uVar15 = PackedFloatingNegAccumulate(uVar13,uVar9);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar3,uVar1);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar1,uVar2);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar8,uVar2);
|
|
|
|
uVar13 = PackedFloatingNegAccumulate(uVar16,uVar9);
|
|
|
|
uVar1 = PackedFloatingNegAccumulate(uVar3,uVar2);
|
|
|
|
uVar2 = param_3[6];
|
|
|
|
uVar3 = param_3[4];
|
|
|
|
uVar10 = (undefined4)((ulonglong)uVar1 >> 0x20);
|
|
|
|
uVar6 = (undefined4)uVar1;
|
|
|
|
uVar4 = (undefined4)((ulonglong)uVar13 >> 0x20);
|
|
|
|
uVar9 = PackedFloatingMUL(CONCAT44(uVar10,uVar10),param_3[2]);
|
|
|
|
uVar1 = PackedFloatingMUL(CONCAT44(uVar4,uVar4),uVar2);
|
|
|
|
uVar8 = PackedFloatingMUL(CONCAT44(uVar6,uVar6),uVar3);
|
|
|
|
uVar1 = PackedFloatingADD(uVar1,uVar9);
|
|
|
|
uVar9 = PackedFloatingSUB(uVar1,uVar8);
|
|
|
|
uVar7 = (undefined4)uVar13;
|
|
|
|
uVar5 = (undefined4)((ulonglong)uVar15 >> 0x20);
|
|
|
|
uVar8 = PackedFloatingMUL(CONCAT44(uVar10,uVar10),*param_3);
|
|
|
|
uVar1 = PackedFloatingMUL(CONCAT44(uVar5,uVar5),uVar2);
|
|
|
|
uVar13 = PackedFloatingMUL(CONCAT44(uVar7,uVar7),uVar3);
|
|
|
|
uVar1 = PackedFloatingSUB(uVar1,uVar13);
|
|
|
|
uVar13 = PackedFloatingADD(uVar1,uVar8);
|
|
|
|
uVar15 = CONCAT44((int)uVar15,(int)uVar15);
|
|
|
|
uVar8 = PackedFloatingMUL(CONCAT44(uVar6,uVar6),*param_3);
|
|
|
|
uVar1 = PackedFloatingMUL(uVar2,uVar15);
|
|
|
|
uVar16 = PackedFloatingMUL(CONCAT44(uVar7,uVar7),param_3[2]);
|
|
|
|
uVar1 = PackedFloatingADD(uVar1,uVar8);
|
|
|
|
uVar1 = PackedFloatingSUB(uVar1,uVar16);
|
|
|
|
uVar8 = PackedFloatingMUL(uVar15,uVar3);
|
|
|
|
uVar15 = PackedFloatingMUL(CONCAT44(uVar5,uVar5),param_3[2]);
|
|
|
|
uVar16 = PackedFloatingMUL(CONCAT44(uVar4,uVar4),*param_3);
|
|
|
|
uVar8 = PackedFloatingSUB(uVar8,uVar15);
|
|
|
|
uVar15 = PackedFloatingADD(uVar8,uVar16);
|
|
|
|
uStack_2c = (undefined4)((ulonglong)uVar13 >> 0x20);
|
|
|
|
uVar8 = CONCAT44(uStack_2c,(int)((ulonglong)uVar9 >> 0x20));
|
|
|
|
uVar2 = PackedFloatingMUL(CONCAT44((int)((ulonglong)uVar15 >> 0x20),
|
|
|
|
(int)((ulonglong)uVar1 >> 0x20)),
|
|
|
|
CONCAT44((int)uVar2,(int)uVar3));
|
|
|
|
uVar3 = PackedFloatingMUL(CONCAT44(*(undefined4 *)(param_3 + 2),(int)*param_3),uVar8);
|
|
|
|
uVar2 = PackedFloatingNegAccumulate(uVar2,uVar3);
|
|
|
|
uVar2 = PackedFloatingAccumulate(uVar2,uVar2);
|
|
|
|
uVar4 = (undefined4)uVar2;
|
|
|
|
if (param_2 != (undefined4 *)0x0) {
|
|
|
|
*param_2 = uVar4;
|
|
|
|
}
|
|
|
|
uVar3 = FloatingReciprocalAprox(uVar8,uVar2);
|
|
|
|
uVar8 = PackedFloatingCompareEQ(0,uVar2);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter1(CONCAT44(uVar4,uVar4),uVar3);
|
|
|
|
uVar2 = PackedFloatingReciprocalIter2(uVar2,uVar3);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar2,_DAT_007f2fa8);
|
|
|
|
uVar3 = PackedSwapDWords(uVar3,uVar2);
|
|
|
|
if ((int)uVar8 == 0) {
|
|
|
|
uVar8 = PackedFloatingMUL(uVar9,uVar3);
|
|
|
|
uVar9 = PackedFloatingMUL(uVar13,uVar2);
|
|
|
|
uVar14 = PackedFloatingMUL(uVar14,uVar3);
|
|
|
|
uVar17 = PackedFloatingMUL(uVar17,uVar2);
|
|
|
|
*param_1 = CONCAT44((int)((ulonglong)uVar9 >> 0x20),(int)((ulonglong)uVar8 >> 0x20));
|
|
|
|
param_1[2] = CONCAT44((int)uVar9,(int)uVar8);
|
|
|
|
param_1[4] = CONCAT44((int)((ulonglong)uVar17 >> 0x20),(int)((ulonglong)uVar14 >> 0x20));
|
|
|
|
param_1[6] = CONCAT44((int)uVar17,(int)uVar14);
|
|
|
|
uVar1 = PackedFloatingMUL(uVar1,uVar3);
|
|
|
|
uVar8 = PackedFloatingMUL(uVar15,uVar2);
|
|
|
|
uVar3 = PackedFloatingMUL(uVar11,uVar3);
|
|
|
|
uVar2 = PackedFloatingMUL(uVar12,uVar2);
|
|
|
|
param_1[1] = CONCAT44((int)((ulonglong)uVar8 >> 0x20),(int)((ulonglong)uVar1 >> 0x20));
|
|
|
|
param_1[3] = CONCAT44((int)uVar8,(int)uVar1);
|
|
|
|
param_1[5] = CONCAT44((int)((ulonglong)uVar2 >> 0x20),(int)((ulonglong)uVar3 >> 0x20));
|
|
|
|
param_1[7] = CONCAT44((int)uVar2,(int)uVar3);
|
|
|
|
}
|
|
|
|
FastExitMediaState();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|