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