/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
void handle_pidmon(undefined4 param_1,int param_2,int param_3)
{
int iVar1;
undefined *puVar2;
undefined **ppuVar3;
undefined4 *puVar4;
char *pcVar5;
undefined **ppuVar6;
pcVar5 = *(char **)(param_3 + 4);
iVar1 = strcmp(pcVar5,"dump");
if (iVar1 == 0) {
FUN_004057c0();
return;
}
puVar2 = (undefined *)atoi(pcVar5);
if (0 < (int)puVar2) {
ppuVar3 = (undefined **)0x0;
do {
ppuVar6 = (undefined **)PTR_LOOP_0041b0f0;
if (ppuVar3 != (undefined **)0x0) {
ppuVar6 = (undefined **)*ppuVar3;
}
if ((ppuVar6 == &PTR_LOOP_0041b0f0) || (ppuVar6 == (undefined **)0x0)) {
ppuVar6 = (undefined **)0x0;
break;
}
ppuVar3 = ppuVar6;
} while (ppuVar6[3] != puVar2);
if ((param_2 < 4) || (iVar1 = strcmp(*(char **)(param_3 + 8),"add"), iVar1 != 0)) {
if (ppuVar6 == (undefined **)0x0) {
(*(code *)(undefined *)0x0)(_stderr,"SERVD: pidmon [%d] not found!\n",puVar2);
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
(*(code *)(undefined *)0x0)();
FUN_00401660();
return;
}
if ((param_2 == 3) && (iVar1 = strcmp(*(char **)(param_3 + 8),"del"), iVar1 == 0)) {
fprintf(_stderr,"SERVD: pidmon [%d] was deleted!\n",ppuVar6[3]);
puVar4 = (undefined4 *)ppuVar6[1];
puVar2 = *ppuVar6;
*puVar4 = puVar2;
*(undefined4 **)(puVar2 + 4) = puVar4;
*ppuVar6 = (undefined *)0x0;
ppuVar6[1] = (undefined *)0x0;
FUN_0040589c(ppuVar6);
return;
}
}
else {
if (ppuVar6 == (undefined **)0x0) {
ppuVar6 = (undefined **)malloc(0x18) //possible issue identified - semgrep
if (ppuVar6 != (undefined **)0x0) {
ppuVar6[3] = puVar2;
*ppuVar6 = (undefined *)0x0;
ppuVar6[1] = (undefined *)0x0;
ppuVar6[2] = (undefined *)0x0;
ppuVar6[4] = (undefined *)0x0;
ppuVar6[5] = (undefined *)0x0;
}
puVar2 = PTR_LOOP_0041b0f4;
*ppuVar6 = (undefined *)&PTR_LOOP_0041b0f0;
ppuVar3 = ppuVar6;
*(undefined ***)PTR_LOOP_0041b0f4 = ppuVar6;
PTR_LOOP_0041b0f4 = (undefined *)ppuVar3;
ppuVar6[1] = puVar2;
}
if (ppuVar6[2] != (undefined *)0x0) {
sloop_cancel_timeout();
}
ppuVar6[2] = (undefined *)0x0;
if (ppuVar6[4] != (undefined *)0x0) {
free(ppuVar6[4]);
}
pcVar5 = strdup(*(char **)(param_3 + 0xc)) //possible issue identified - semgrep
ppuVar6[4] = pcVar5;
if (param_2 != 4) {
puVar2 = (undefined *)atoi(*(char **)(param_3 + 0x10));
ppuVar6[5] = puVar2;
}
if ((int)ppuVar6[5] < 1) {
ppuVar6[5] = (undefined *)0x2;
}
puVar2 = (undefined *)sloop_register_timeout(ppuVar6[5],0,FUN_00405c88,ppuVar6);
ppuVar6[2] = puVar2;
}
}
return;
}