/* WARNING: Removing unreachable block (ram,0x004059cc) */
/* WARNING: Heritage AFTER dead removal. Example location: r0x0041ce90 : 0x00404f54 */
/* WARNING: Restarted to delay deadcode elimination for space: ram */
int contemplate_data(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
double param_5,int param_6)
{
double dVar1;
bool bVar2;
bool bVar3;
bool bVar4;
uint uVar5;
int iVar6;
uint uVar7;
undefined4 uVar8;
double *pdVar9;
double *pdVar10;
double *pdVar11;
int iVar12;
double dVar13;
double dVar14;
double dVar15;
uint uVar16;
uint in_fcsr;
int iVar17;
int iVar18;
double local_78 [2];
undefined4 local_68;
undefined4 local_64;
double local_60;
undefined4 local_58;
undefined4 local_54;
double local_50;
int local_48;
undefined4 *local_44;
if (debug != 0) {
printf("xontemplate %u %.1f %.1f %d\n",param_1,param_3,param_4,SUB84(param_5,0),
(int)((ulonglong)param_5 >> 0x20),param_6);
}
iVar12 = DAT_0041d490;
iVar17 = DAT_0041d494 * 3;
iVar18 = DAT_0041d494 * 0x30;
iVar6 = (DAT_0041d494 * 6 + 1) * 8;
*(undefined4 *)(&DAT_0041d498 + iVar6) = param_3;
*(undefined4 *)(&DAT_0041d49c + iVar6) = param_4;
*(double *)(&DAT_0041d498 + (iVar17 + 1) * 0x10) = param_5 - 800.0;
*(int *)(&DAT_0041d4b0 + iVar18) = param_6;
*(int *)(&DAT_0041d498 + iVar18) = param_1;
if (iVar12 < 0x10) {
DAT_0041d490 = iVar12 + 1;
}
if (DAT_0041d490 == 0x10) {
if (debug != 0) {
putchar(10);
}
dVar14 = 0.0;
uVar16 = 0x41f00000;
dVar15 = 1.52587890625e-05;
uVar7 = DAT_0041d494;
while( true ) {
iVar12 = debug;
iVar6 = uVar7 * 0x30;
dVar13 = *(double *)(&DAT_0041d498 + (uVar7 * 6 + 1) * 8);
dVar1 = *(double *)(&DAT_0041d498 + (uVar7 * 3 + 1) * 0x10);
*(double *)(&DAT_0041d4b8 + iVar6) = (dVar13 - dVar14) - dVar1;
*(double *)(&DAT_0041d4c0 + iVar6) = (dVar13 - dVar14) + dVar1;
if (iVar12 != 0) {
printf("hist %d %d %f %f %f\n",uVar7,*(int *)(&DAT_0041d498 + iVar6) - param_1);
}
iVar12 = uVar7 * 0x30;
uVar7 = uVar7 - 1;
if ((int)uVar7 < 0) {
uVar7 = 0xf;
}
if (uVar7 == DAT_0041d494) break;
dVar13 = (double)(*(int *)(&DAT_0041d498 + iVar12) - *(int *)(&DAT_0041d498 + uVar7 * 0x30));
if (*(int *)(&DAT_0041d498 + iVar12) - *(int *)(&DAT_0041d498 + uVar7 * 0x30) < 0) {
dVar13 = dVar13 + (double)((ulonglong)uVar16 << 0x20);
}
dVar14 = dVar14 + dVar13 * (double)(*(int *)(&DAT_0041d4b0 + iVar12) - param_6) * dVar15;
}
dVar14 = -100.0;
pdVar10 = (double *)&DAT_0041d7a8;
local_48 = 1;
bVar2 = true;
uVar7 = uVar7 + 1 & -(uint)((int)(uVar7 + 1) < 0x10);
pdVar9 = pdVar10;
do {
uVar16 = DAT_0041d494;
uVar5 = FUN_004049b0(DAT_0041d494,uVar7,1,1,0,pdVar9);
FUN_004049b0(uVar16,uVar7,0,1);
dVar15 = *pdVar9;
in_fcsr = in_fcsr & 0xff7fffff;
if (((local_78[0] < dVar15) && (dVar14 < local_78[0])) &&
((bVar2 || (local_78[0] < (double)CONCAT44(local_64,local_68))))) {
bVar2 = false;
memcpy(&local_68,local_78,0x10) //possible issue identified - semgrep
}
if (debug != 0) {
printf("maxseg[%d] = %f *x+ %f\n",local_48,SUB84(dVar15,0),(int)((ulonglong)dVar15 >> 0x20))
;
}
local_48 = local_48 + 1;
dVar14 = *pdVar9;
pdVar9 = pdVar9 + 2;
uVar7 = uVar5;
} while (uVar5 != DAT_0041d494);
if ((debug != 0) && (!bVar2)) {
printf("mincross %f *x+ %f\n");
}
local_44 = &local_58;
dVar14 = 100.0;
pdVar11 = (double *)&DAT_0041d8b8;
iVar12 = 1;
bVar4 = true;
pdVar9 = pdVar11;
uVar7 = DAT_0041d494 + 1 & -(uint)((int)(DAT_0041d494 + 1) < 0x10);
do {
uVar16 = DAT_0041d494;
uVar5 = FUN_004049b0(DAT_0041d494,uVar7,0,0,1,pdVar9);
FUN_004049b0(uVar16,uVar7,1,0);
dVar15 = *pdVar9;
in_fcsr = in_fcsr & 0xff7fffff;
if (((dVar15 < local_78[0]) && (local_78[0] < dVar14)) &&
((bVar4 || (local_78[0] < (double)CONCAT44(local_54,local_58))))) {
bVar4 = false;
memcpy(local_44,local_78,0x10) //possible issue identified - semgrep
}
if (debug != 0) {
printf("minseg[%d] = %f *x+ %f\n",iVar12,SUB84(dVar15,0),(int)((ulonglong)dVar15 >> 0x20));
}
iVar12 = iVar12 + 1;
dVar14 = *pdVar9;
pdVar9 = pdVar9 + 2;
uVar7 = uVar5;
} while (uVar5 != DAT_0041d494);
bVar3 = true;
if (!bVar4) {
bVar3 = bVar2;
}
if ((debug != 0) && (!bVar4)) {
printf("maxcross %f *x+ %f\n");
}
iVar6 = 1;
bVar2 = true;
DAT_0041d9c0 = 0;
DAT_0041d9c4 = 0x40340000;
DAT_0041d9b8 = 0;
DAT_0041d9bc = 0x40340000;
FUN_00404c20();
do {
if ((bVar2) &&
(in_fcsr = in_fcsr & 0xff7fffff, (double)CONCAT44(local_64,local_68) < *pdVar10)) {
bVar2 = false;
memcpy(pdVar10 + -2,&local_68,0x10) //possible issue identified - semgrep
}
in_fcsr = in_fcsr & 0xff7fffff;
if ((double)CONCAT44(local_54,local_58) < *pdVar10) break;
iVar6 = iVar6 + 1;
if (!bVar2) {
FUN_00404c20(pdVar10);
}
pdVar10 = pdVar10 + 2;
} while (iVar6 < local_48);
if (bVar2) {
if (debug == 0) {
bVar3 = true;
}
else {
puts("found maxseg vs. save_min inconsistency");
bVar3 = true;
}
}
memcpy(&DAT_0041d798 + iVar6 * 0x10,&local_58,0x10) //possible issue identified - semgrep
FUN_00404c20(&local_58);
iVar6 = 1;
bVar2 = true;
do {
if ((bVar2) &&
(in_fcsr = in_fcsr & 0xff7fffff, *pdVar11 < (double)CONCAT44(local_54,local_58))) {
bVar2 = false;
memcpy(&DAT_0041d8a8,&local_58,0x10) //possible issue identified - semgrep
}
in_fcsr = in_fcsr & 0xff7fffff;
if (*pdVar11 < (double)CONCAT44(local_64,local_68)) break;
iVar6 = iVar6 + 1;
if (!bVar2) {
FUN_00404c20(pdVar11);
}
pdVar11 = pdVar11 + 2;
} while (iVar6 < iVar12);
if (bVar2) {
if (debug == 0) {
bVar3 = true;
}
else {
puts("found minseg vs. save_max inconsistency");
bVar3 = true;
}
}
memcpy(&DAT_0041d8a8 + iVar6 * 0x10,&local_58,0x10) //possible issue identified - semgrep
if (debug != 0) {
FUN_00404c20(&local_68);
}
if (bVar3) {
puts("# inconsistent");
}
else {
in_fcsr = in_fcsr & 0xff7fffff;
if ((double)CONCAT44(DAT_0041d9bc,DAT_0041d9b8) == 0.0) {
if ((double)CONCAT44(DAT_0041d9c4,DAT_0041d9c0) == 0.0) {
uVar8 = 0;
bVar2 = false;
uVar7 = 0;
}
else {
bVar2 = false;
uVar8 = DAT_0041d9c0;
uVar7 = DAT_0041d9c4 ^ 0x80000000;
}
}
else {
bVar2 = false;
uVar8 = DAT_0041d9b8;
uVar7 = DAT_0041d9bc;
if ((double)CONCAT44(DAT_0041d9c4,DAT_0041d9c0) != 0.0) {
bVar2 = true;
uVar8 = 0;
uVar7 = 0;
}
}
dVar14 = (double)CONCAT44(uVar7,uVar8);
if (debug != 0) {
printf("find_df() = %e\n");
}
if (bVar2) {
dVar14 = 60.0 / ((local_50 - local_60) +
((double)CONCAT44(local_54,local_58) - (double)CONCAT44(local_64,local_68))
* 600.0);
dVar15 = ((local_50 + local_60) * 0.5) / -600.0 -
((double)CONCAT44(local_54,local_58) + (double)CONCAT44(local_64,local_68)) * 0.5;
if (debug != 0) {
printf("find_df_center %f %f\n");
}
dVar14 = dVar14 * dVar15;
}
dVar14 = dVar14 * 65536.0 + 0.5;
if ((((in_fcsr | 3) ^ 2) & 3) == 0) {
dVar14 = ROUND(dVar14);
}
else {
dVar14 = FLOOR(dVar14);
}
if (debug != 0) {
printf("delta_f %f delta_freq %d bsn %d\n");
}
iVar12 = param_6 - (int)dVar14;
printf("# box [( %.3f , %.1f ) ");
printf(" ( %.3f , %.1f )] ");
printf(" delta_f %.3f computed_freq %d\n");
param_6 = -6000000;
if ((-0x5b8d81 < iVar12) && (param_6 = iVar12, 6000000 < iVar12)) {
param_6 = 6000000;
}
}
}
DAT_0041d494 = (int)(DAT_0041d494 + 1) % 0x10;
return param_6;
}