/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void handle_service(FILE *param_1,int param_2,int param_3)

{
  undefined4 *puVar1;
  undefined1 uVar2;
  int iVar3;
  undefined **ppuVar4;
  size_t sVar5;
  undefined4 *puVar6;
  undefined *puVar7;
  undefined4 *puVar8;
  undefined4 uVar9;
  int iVar10;
  char *pcVar11;
  char *pcVar12;
  char *pcVar13;
  undefined **ppuVar14;
  undefined **ppuVar15;
  code *pcVar16;
  char acStack_c8 [32];
  char local_a8 [132];
  
  FUN_004035d4();
  if (param_2 == 2) {
    pcVar13 = *(char **)(param_3 + 4);
    iVar3 = strcmp(pcVar13,"dump");
    if (iVar3 == 0) {
      FUN_00402b90(1);
      return;
    }
    iVar3 = strcmp(pcVar13,"schedule");
    if (iVar3 != 0) {
      return;
    }
    uVar9 = 0;
LAB_0040451c:
    FUN_00403f10(param_1,uVar9);
    return;
  }
  if (param_2 < 3) {
    return;
  }
  pcVar13 = *(char **)(param_3 + 4);
  iVar3 = strcmp(pcVar13,"status");
  if (iVar3 == 0) {
    pcVar13 = *(char **)(param_3 + 8);
    iVar3 = strcmp(pcVar13,"running");
    if (iVar3 == 0) {
      iVar10 = 0;
      ppuVar4 = (undefined **)0x0;
      while( true ) {
        ppuVar14 = (undefined **)PTR_LOOP_0041b0d0;
        if (ppuVar4 != (undefined **)0x0) {
          ppuVar14 = (undefined **)*ppuVar4;
        }
        if ((ppuVar14 == &PTR_LOOP_0041b0d0) || (ppuVar14 == (undefined **)0x0)) break;
        iVar10 = iVar10 + (uint)(ppuVar14[4] != (undefined *)0x0);
        ppuVar4 = ppuVar14;
      }
LAB_004044c4:
      sprintf(acStack_c8,"%d\n",iVar10)   //possible issue identified - semgrep
    }
    else {
      iVar3 = strcmp(pcVar13,"request");
      if (iVar3 == 0) {
        ppuVar4 = (undefined **)0x0;
        iVar3 = 0;
        do {
          iVar10 = iVar3;
          ppuVar14 = (undefined **)PTR_LOOP_0041b0d8;
          if (ppuVar4 != (undefined **)0x0) {
            ppuVar14 = (undefined **)*ppuVar4;
          }
        } while ((ppuVar14 != &PTR_LOOP_0041b0d8) &&
                (ppuVar4 = ppuVar14, iVar3 = iVar10 + 1, ppuVar14 != (undefined **)0x0));
        goto LAB_004044c4;
      }
    }
    pcVar13 = acStack_c8;
    sVar5 = strlen(pcVar13);
  }
  else {
    iVar3 = strcmp(pcVar13,"schedule");
    if (iVar3 == 0) {
      uVar9 = *(undefined4 *)(param_3 + 8);
      goto LAB_0040451c;
    }
    pcVar11 = *(char **)(param_3 + 8);
    iVar3 = strcmp(pcVar11,"status");
    if (iVar3 != 0) {
      iVar3 = strcmp(pcVar11,"delete");
      if (iVar3 == 0) {
        FUN_00403474(param_1,pcVar13);
        return;
      }
      puVar6 = (undefined4 *)FUN_004031a0(pcVar13);
      if (puVar6 == (undefined4 *)0x0) {
        pcVar16 = fprintf;
        pcVar13 = "%s: %s\n";
        pcVar11 = "handle_service";
        pcVar12 = "memory alloc failed!";
        param_1 = _stderr;
        goto LAB_00404640;
      }
      pcVar13 = *(char **)(param_3 + 8);
      iVar3 = strcmp(pcVar13,"start");
      if (iVar3 == 0) {
        if (param_2 == 3) {
          puVar6[3] = 0;
          goto LAB_00404a2c;
        }
        pcVar13 = "%s: too many arguments for %s command!\n";
        pcVar11 = "start";
      }
      else {
        iVar3 = strcmp(pcVar13,"stop");
        if (iVar3 == 0) {
          if (param_2 == 3) {
            puVar6[3] = 1;
            goto LAB_00404a2c;
          }
          pcVar13 = "%s: too many arguments for %s command!\n";
          pcVar11 = "stop";
        }
        else {
          iVar3 = strcmp(pcVar13,"restart");
          if (iVar3 == 0) {
            if (param_2 == 3) {
              pcVar13 = *(char **)(param_3 + 4);
              ppuVar14 = (undefined **)0x0;
              ppuVar4 = (undefined **)PTR_LOOP_0041b0d8;
              while( true ) {
                ppuVar15 = ppuVar4;
                if (ppuVar14 != (undefined **)0x0) {
                  ppuVar15 = (undefined **)*ppuVar14;
                }
                if ((ppuVar15 == &PTR_LOOP_0041b0d8) || (ppuVar15 == (undefined **)0x0)) break;
                iVar3 = strcmp(pcVar13,ppuVar15[2]);
                ppuVar14 = ppuVar15;
                if (iVar3 == 0) {
                  puVar8 = (undefined4 *)ppuVar15[1];
                  puVar7 = *ppuVar15;
                  ppuVar14 = (undefined **)ppuVar15[1];
                  *puVar8 = puVar7;
                  *(undefined4 **)(puVar7 + 4) = puVar8;
                  *ppuVar15 = (undefined *)0x0;
                  ppuVar15[1] = (undefined *)0x0;
                  FUN_00402fdc(ppuVar15);
                  ppuVar4 = (undefined **)PTR_LOOP_0041b0d8;
                }
              }
              puVar8 = (undefined4 *)FUN_004031a0(*(undefined4 *)(param_3 + 4));
              puVar7 = PTR_LOOP_0041b0dc;
              if (puVar8 != (undefined4 *)0x0) {
                puVar8[3] = 1;
                *puVar8 = &PTR_LOOP_0041b0d8;
                puVar1 = puVar8;
                *(undefined4 **)PTR_LOOP_0041b0dc = puVar8;
                PTR_LOOP_0041b0dc = (undefined *)puVar1;
                puVar6[3] = 0;
                puVar8[1] = puVar7;
                goto LAB_00404a2c;
              }
              pcVar13 = "%s: %s\n";
              pcVar11 = "memory alloc failed!";
            }
            else {
              pcVar13 = "%s: too many arguments for %s command!\n";
              pcVar11 = "restart";
            }
          }
          else {
            iVar3 = strcmp(pcVar13,"schedule_o");
            if ((iVar3 == 0) || (iVar3 = strcmp(pcVar13,"schedule"), iVar3 == 0)) {
              if (param_2 == 6) {
                uVar9 = *(undefined4 *)(param_3 + 0xc);
                puVar6[3] = 2;
                uVar2 = FUN_00404094(uVar9);
                *(undefined1 *)(puVar6 + 4) = uVar2;
                uVar9 = *(undefined4 *)(param_3 + 0x10);
                puVar6[9] = 1;
                goto LAB_0040490c;
              }
LAB_004048cc:
              pcVar13 = "%s: %s\n";
              pcVar11 = "invalid schedule command!";
            }
            else {
              iVar3 = strcmp(pcVar13,"schedule!");
              if (iVar3 == 0) {
                if (param_2 != 6) goto LAB_004048cc;
                uVar9 = *(undefined4 *)(param_3 + 0xc);
                puVar6[3] = 3;
                uVar2 = FUN_00404094(uVar9);
                *(undefined1 *)(puVar6 + 4) = uVar2;
                uVar9 = *(undefined4 *)(param_3 + 0x10);
                puVar6[9] = 0;
LAB_0040490c:
                FUN_0040424c(uVar9,puVar6 + 5,puVar6 + 6);
                FUN_0040424c(*(undefined4 *)(param_3 + 0x14),puVar6 + 7,puVar6 + 8);
LAB_00404a2c:
                puVar7 = PTR_LOOP_0041b0dc;
                *puVar6 = &PTR_LOOP_0041b0d8;
                puVar8 = puVar6;
                *(undefined4 **)PTR_LOOP_0041b0dc = puVar6;
                PTR_LOOP_0041b0dc = (undefined *)puVar8;
                puVar6[1] = puVar7;
                service_requests();
                return;
              }
              iVar3 = strcmp(pcVar13,"alias");
              if (iVar3 != 0) {
                fprintf(_stderr,"SERVD: unknown service command [%s]\n",pcVar13);
                goto LAB_00404a18;
              }
              if (param_2 == 4) {
                puVar6[3] = 4;
                puVar6[10] = param_1;
                memset(puVar6 + 0xb,0,0x32)   //possible issue identified - semgrep
                memset((char *)((int)puVar6 + 0x5e),0,0x32)   //possible issue identified - semgrep
                strcpy((char *)(puVar6 + 0xb),*(char **)(param_3 + 4))   //possible issue identified - semgrep
                strcpy((char *)((int)puVar6 + 0x5e),*(char **)(param_3 + 0xc))   //possible issue identified - semgrep
                goto LAB_00404a2c;
              }
              pcVar13 = "%s: %s\n";
              pcVar11 = "invalid alias command!";
            }
          }
        }
      }
      fprintf(_stderr,pcVar13,"handle_service",pcVar11);
LAB_00404a18:
      FUN_00402fdc(puVar6);
      return;
    }
    local_a8[0] = '\0';
    iVar3 = FUN_00403240(pcVar13,0);
    if (iVar3 == 0) {
      pcVar13 = "N/A";
    }
    else if (*(int *)(iVar3 + 0x10) == 0) {
      pcVar13 = "stopped";
    }
    else {
      pcVar13 = "running";
    }
    strcpy(local_a8,pcVar13)   //possible issue identified - semgrep
    pcVar13 = local_a8;
    sVar5 = strlen(pcVar13);
    if (sVar5 == 0) {
      return;
    }
  }
  pcVar16 = susock_send;
  pcVar11 = (char *)(sVar5 + 1);
  pcVar12 = (char *)0x4000;
LAB_00404640:
  (*pcVar16)(param_1,pcVar13,pcVar11,pcVar12);
  return;
}