/* WARNING: Removing unreachable block (ram,0x0048784c) */
/* WARNING: Removing unreachable block (ram,0x00487800) */
/* WARNING: Removing unreachable block (ram,0x00487894) */
/* WARNING: Heritage AFTER dead removal. Example location: r0x004c2254 : 0x00487680 */
/* WARNING: Restarted to delay deadcode elimination for space: ram */
undefined4
FUN_004875e0(code *param_1,int param_2,undefined4 *param_3,code *param_4,undefined4 param_5,
undefined4 param_6,undefined4 param_7)
{
uint uVar1;
int iVar2;
int iVar3;
undefined4 *puVar4;
undefined4 uVar5;
uint *puVar6;
code *pcVar7;
code *pcVar8;
undefined1 auStack_98 [52];
int local_64;
int local_3c;
int local_34;
int local_2c;
int local_24;
DAT_004c2250 = param_7;
DAT_004c2254 = param_3 + param_2 + 1;
DAT_004c2260 = param_6;
if (DAT_004c2254 == (uint *)*param_3) {
DAT_004c2254 = param_3 + param_2;
}
pcVar7 = param_4;
FUN_00483cc0(auStack_98,0,0x78);
puVar6 = DAT_004c2254;
do {
uVar1 = *puVar6;
puVar6 = puVar6 + 1;
} while (uVar1 != 0);
while( true ) {
uVar1 = *puVar6;
if (uVar1 == 0) break;
if (uVar1 < 0xf) {
FUN_00483c90(auStack_98 + uVar1 * 8,puVar6,8);
puVar6 = puVar6 + 2;
}
else {
puVar6 = puVar6 + 2;
}
}
FUN_0048ae10(auStack_98);
FUN_00487570();
if (local_64 == 0) {
local_64 = 0x1000;
}
DAT_004c2258 = local_64;
if (local_3c == -1) {
iVar2 = FUN_0047ee70();
iVar3 = FUN_00487d00();
if (iVar2 == iVar3) {
iVar2 = FUN_00487d60();
iVar3 = FUN_00487ca0();
if (iVar2 == iVar3) goto LAB_0048776c;
}
LAB_00487794:
FUN_004874f4(0,0x20000);
FUN_004874f4(1,0x20002);
FUN_004874f4(2,0x20002);
}
else {
LAB_0048776c:
if (local_3c != -1) {
if ((local_3c == local_34) && (local_2c == local_24)) {
PTR_s__004b7830 = (undefined *)*param_3;
goto LAB_004877d4;
}
goto LAB_00487794;
}
}
PTR_s__004b7830 = (undefined *)*param_3;
LAB_004877d4:
DAT_004c225c = param_5;
if (param_4 != (code *)0x0) {
(*param_4)();
}
puVar4 = (undefined4 *)FUN_0047f6f0();
*puVar4 = 0;
uVar5 = (*param_1)(param_2,param_3,DAT_004c2254);
pcVar8 = FUN_00486450;
FUN_00486450(uVar5);
uVar5 = 0xffa;
syscall(0) //possible issue identified - semgrep
if (pcVar7 != (code *)0x0) {
puVar4 = (undefined4 *)(**(code **)(pcVar8 + 0x302bc))();
*puVar4 = 0xffa;
uVar5 = 0xffffffff;
}
return uVar5;
}