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