undefined4 FUN_0047d9c0(uint *param_1,uint param_2,uint *param_3)
{
char cVar1;
bool bVar2;
byte bVar3;
undefined1 uVar4;
uint *puVar5;
undefined4 uVar6;
undefined4 uVar7;
int iVar8;
undefined4 *puVar9;
uint uVar10;
uint uVar11;
uint *puVar12;
uint uVar13;
uint *puVar14;
char *pcVar15;
uint uVar16;
int *piVar17;
int *piVar18;
int *piVar19;
uint *puVar20;
uint uVar21;
int *piVar22;
int *piVar23;
char *pcVar24;
code *pcVar25;
undefined4 local_48;
int local_44;
char *local_40;
undefined4 local_3c;
uint local_38;
uint local_34;
undefined4 local_30;
undefined4 local_2c;
piVar17 = (int *)param_1[2];
uVar13 = *param_1;
if ((param_3[5] == 0) || (param_2 < 0x20)) {
if (param_2 < 0xe) {
return 0xffffffff;
}
LAB_0047db8c:
puVar20 = (uint *)0x0;
puVar14 = (uint *)0x0;
}
else {
if ((((DAT_004b7600 != param_1[4]) || (DAT_004b7604 != param_1[5])) ||
(param_1[6] != DAT_004c0050)) || (param_1[7] != DAT_004c0054)) {
DAT_004c0050 = param_1[6];
DAT_004c0054 = param_1[7];
puVar9 = &DAT_004c0078;
DAT_004b7600 = param_1[4];
DAT_004b7604 = param_1[5];
do {
puVar9[-6] = 0;
puVar9[-5] = 0;
puVar9[-1] = puVar9;
puVar9 = puVar9 + 6;
} while (puVar9 != (undefined4 *)0x4c0138);
DAT_004c0120 = &DAT_004c0060;
param_3[5] = 0;
DAT_004c011c = 0;
goto LAB_0047db8c;
}
puVar5 = DAT_004c0120;
puVar14 = (uint *)0x0;
puVar20 = (uint *)0x0;
while (puVar12 = puVar5, puVar12 != (uint *)0x0) {
if ((*puVar12 <= *param_3) && (*param_3 < puVar12[1])) {
uVar13 = puVar12[2];
piVar18 = (int *)puVar12[3];
if (puVar12 != DAT_004c0120) {
puVar20[5] = puVar12[5];
puVar12[5] = (uint)DAT_004c0120;
DAT_004c0120 = puVar12;
}
goto LAB_0047dca4;
}
puVar14 = puVar12;
if (*puVar12 == 0 && puVar12[1] == 0) break;
puVar5 = (uint *)puVar12[5];
if (puVar5 != (uint *)0x0) {
puVar20 = puVar12;
}
}
}
uVar11 = (uint)(ushort)param_1[3];
bVar2 = false;
uVar21 = 0;
uVar16 = 0;
piVar18 = (int *)0x0;
piVar23 = (int *)0x0;
while (uVar11 = uVar11 - 1, uVar11 != 0xffffffff) {
iVar8 = *piVar17;
piVar19 = piVar18;
piVar22 = piVar23;
if (iVar8 == 1) {
uVar10 = uVar13 + piVar17[2];
if (uVar10 <= *param_3) {
if (uVar10 + piVar17[5] <= *param_3) goto LAB_0047dc30;
bVar2 = true;
uVar16 = uVar10 + piVar17[5];
uVar21 = uVar10;
}
}
else {
piVar19 = piVar17;
if ((iVar8 != 0x6474e550) && (piVar19 = piVar18, piVar22 = piVar17, iVar8 != 2)) {
LAB_0047dc30:
piVar19 = piVar18;
piVar22 = piVar23;
}
}
piVar17 = piVar17 + 8;
piVar18 = piVar19;
piVar23 = piVar22;
}
if (!bVar2) {
return 0;
}
if (0x1f < param_2) {
if ((puVar14 != (uint *)0x0) && (puVar20 != (uint *)0x0)) {
puVar20[5] = puVar14[5];
puVar14[5] = (uint)DAT_004c0120;
DAT_004c0120 = puVar14;
}
puVar14 = DAT_004c0120;
DAT_004c0120[1] = uVar16;
puVar14[4] = (uint)piVar23;
*puVar14 = uVar21;
puVar14[2] = uVar13;
puVar14[3] = (uint)piVar18;
}
LAB_0047dca4:
if (piVar18 == (int *)0x0) {
return 0;
}
pcVar24 = (char *)(uVar13 + piVar18[2]);
if (*pcVar24 != '\x01') {
return 1;
}
cVar1 = pcVar24[1] //possible issue identified - semgrep
uVar6 = FUN_0047d918(cVar1,param_3);
uVar6 = FUN_0047ce1c(cVar1,uVar6,pcVar24 + 4,&local_48);
cVar1 = pcVar24[2] //possible issue identified - semgrep
if ((cVar1 != -1) && (pcVar24[3] == ';')) {
uVar7 = FUN_0047d918(cVar1,param_3);
piVar17 = (int *)FUN_0047ce1c(cVar1,uVar7,uVar6,&local_44);
if (local_44 == 0) {
return 1;
}
if (((uint)piVar17 & 3) == 0) {
pcVar15 = (char *)*param_3;
uVar13 = local_44 - 1;
if (pcVar15 < pcVar24 + *piVar17) {
return 1;
}
if (pcVar15 < pcVar24 + piVar17[uVar13 * 2]) {
uVar16 = 0;
do {
do {
uVar21 = uVar13;
if (uVar21 <= uVar16) {
pcVar25 = FUN_00485c50;
FUN_00485c50();
uVar6 = (**(code **)(pcVar25 + 0x3a32c))(0x18);
/* WARNING: Could not recover jumptable at 0x0047dff4. Too many branches */
/* WARNING: Treating indirect jump as call */
uVar6 = (**(code **)(pcVar25 + 0x398d0))(uVar16,uVar6);
return uVar6;
}
uVar13 = uVar21 + uVar16 >> 1;
} while (pcVar15 < pcVar24 + piVar17[uVar13 * 2]);
uVar16 = uVar13 + 1;
iVar8 = uVar13 << 3;
uVar13 = uVar21;
} while (pcVar24 + piVar17[uVar16 * 2] <= pcVar15);
}
else {
iVar8 = uVar13 * 8;
}
piVar17 = (int *)((int)piVar17 + iVar8);
pcVar15 = pcVar24 + piVar17[1];
bVar3 = FUN_0047cfb8(pcVar15 + (4 - *(int *)(pcVar15 + 4)));
iVar8 = FUN_0047ccf0(bVar3);
FUN_0047ce1c(bVar3 & 0xf,0,pcVar15 + iVar8 + 8,&local_40);
if ((char *)*param_3 < local_40 + *piVar17 + (int)pcVar24) {
param_3[4] = (uint)pcVar15;
}
local_40 = pcVar24 + *piVar17;
goto LAB_0047df64;
}
}
local_38 = param_3[1];
local_34 = param_3[2];
local_2c = 4;
local_3c = 0;
local_30 = local_48;
uVar13 = FUN_0047d6f4(&local_3c,local_48,*param_3);
param_3[4] = uVar13;
if (uVar13 == 0) {
return 1;
}
uVar4 = FUN_0047cfb8((uVar13 + 4) - *(int *)(uVar13 + 4));
uVar6 = FUN_0047d918(uVar4,param_3);
FUN_0047ce1c(uVar4,uVar6,param_3[4] + 8,&local_40);
LAB_0047df64:
param_3[3] = (uint)local_40;
return 1;
}