// 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; }