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

void FUN_00402b90(int param_1)

{
  byte bVar1;
  undefined4 uVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  FILE *pFVar6;
  char *pcVar7;
  undefined *puVar8;
  undefined **ppuVar9;
  undefined **ppuVar10;
  int iVar11;
  int iVar12;
  
  if (param_1 != 0) {
    fputs("Services ==============================\n",_stderr);
  }
  iVar12 = 0;
  ppuVar9 = (undefined **)0x0;
  while( true ) {
    ppuVar10 = (undefined **)PTR_LOOP_0041b0d0;
    if (ppuVar9 != (undefined **)0x0) {
      ppuVar10 = (undefined **)*ppuVar9;
    }
    if ((ppuVar10 == &PTR_LOOP_0041b0d0) || (ppuVar10 == (undefined **)0x0)) break;
    if (param_1 != 0) {
      pcVar7 = "stopped";
      if (ppuVar10[4] != (undefined *)0x0) {
        pcVar7 = "running";
      }
      fprintf(_stderr,"service : [%s] %s\n",ppuVar10[2],pcVar7);
    }
    iVar12 = iVar12 + (uint)(ppuVar10[4] != (undefined *)0x0);
    if (*(byte *)(ppuVar10 + 7) != 0) {
      pcVar7 = "    service XXX stop";
      if (ppuVar10[0xc] != (undefined *)0x0) {
        pcVar7 = "    service XXX start";
      }
      fprintf(_stderr,"service :    schedule to %s at 0x%x %02d:%02d -> %02d:%02d\n",pcVar7 + 0x10,
              (uint)*(byte *)(ppuVar10 + 7),ppuVar10[8],ppuVar10[9],ppuVar10[10],ppuVar10[0xb]);
    }
    ppuVar9 = ppuVar10;
    if (ppuVar10[3] != (undefined *)0x0) {
      solist_get_reset();
      while (iVar11 = solist_get_next(ppuVar10[3]), pFVar6 = _stderr, iVar11 != 0) {
        if (param_1 != 0) {
          uVar2 = sobj_get_string(iVar11);
          fprintf(pFVar6,"service :    alias: %s\n",uVar2);
        }
      }
    }
  }
  if (param_1 != 0) {
    fputs("=======================================\n",_stderr);
    fputs("Service Requests ======================\n",_stderr);
  }
  iVar11 = 0;
  ppuVar9 = (undefined **)0x0;
  do {
    ppuVar10 = (undefined **)PTR_LOOP_0041b0d8;
    if (ppuVar9 != (undefined **)0x0) {
      ppuVar10 = (undefined **)*ppuVar9;
    }
    if ((ppuVar10 == &PTR_LOOP_0041b0d8) || (ppuVar10 == (undefined **)0x0)) {
      if (param_1 != 0) {
        fputs("=======================================\n",_stderr);
      }
      pFVar6 = fopen("/var/servd.status","w")   //possible issue identified - semgrep
      if (pFVar6 != (FILE *)0x0) {
        fprintf(pFVar6,"running=%d\nrequest=%d\n",iVar12,iVar11);
                    /* WARNING: Could not recover jumptable at 0x00402fa4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        fclose(pFVar6);
        return;
      }
      return;
    }
    if (param_1 != 0) {
      fprintf(_stderr,"request : [%s] ",ppuVar10[2]);
    }
    switch(ppuVar10[3]) {
    case (undefined *)0x0:
      pcVar7 = "start\n";
      goto joined_r0x00402e28;
    case (undefined *)0x1:
      pcVar7 = "stop\n";
joined_r0x00402e28:
      if (param_1 != 0) {
LAB_00402ed0:
        fputs(pcVar7,_stderr);
      }
      break;
    case (undefined *)0x2:
      if (param_1 != 0) {
        puVar3 = ppuVar10[6];
        bVar1 = *(byte *)(ppuVar10 + 4);
        puVar8 = ppuVar10[5];
        puVar4 = ppuVar10[7];
        puVar5 = ppuVar10[8];
        pcVar7 = "schedule to start at 0x%02X %02d:%02d ~ %02d:%02d\n";
LAB_00402eac:
        fprintf(_stderr,pcVar7,(uint)bVar1,puVar8,puVar3,puVar4,puVar5);
      }
      break;
    case (undefined *)0x3:
      if (param_1 != 0) {
        puVar3 = ppuVar10[6];
        bVar1 = *(byte *)(ppuVar10 + 4);
        puVar8 = ppuVar10[5];
        puVar4 = ppuVar10[7];
        puVar5 = ppuVar10[8];
        pcVar7 = "schedule to stop at 0x%02X %02d:%02d ~ %02d:%02d\n";
        goto LAB_00402eac;
      }
      break;
    case (undefined *)0x4:
      if (param_1 == 0) break;
      pcVar7 = "alias\n";
      goto LAB_00402ed0;
    }
    iVar11 = iVar11 + 1;
    ppuVar9 = ppuVar10;
  } while( true );
}