undefined4 FUN_004039b0(undefined4 param_1,undefined4 param_2)
{
int iVar1;
char *pcVar2;
size_t sVar3;
int iVar4;
int iVar5;
int iVar6;
undefined4 *__s;
long lVar7;
int *piVar8;
undefined4 uVar9;
int *piVar10;
char *pcVar11;
char *pcVar12;
char **ppcVar13;
undefined **ppuVar14;
undefined **ppuVar15;
code *pcVar16;
char *local_240 [7];
char acStack_224 [516];
memset(acStack_224,0,0x200) //possible issue identified - semgrep
iVar1 = susock_recv(param_2,acStack_224,0x200,0) //possible issue identified - semgrep
if (iVar1 < 1) goto LAB_00404100;
pcVar2 = (char *)sobj_new();
iVar1 = solist_new();
sVar3 = strlen(acStack_224);
iVar4 = xs_bopen(acStack_224,sVar3) //possible issue identified - semgrep
if (((iVar4 != 0) && (iVar1 != 0)) && (pcVar2 != (char *)0x0)) {
sobj_xstream_read_tokens(iVar4,iVar1,0,0);
iVar5 = solist_get_count(iVar1);
ppcVar13 = local_240;
if (0 < iVar5) {
local_240[0] = (char *)0x0;
local_240[1] = (char *)0x0;
local_240[2] = (char *)0x0;
local_240[3] = (char *)0x0;
local_240[4] = (char *)0x0;
local_240[5] = (char *)0x0;
local_240[6] = (char *)0x0;
iVar5 = 0;
do {
iVar6 = solist_get_next(iVar1);
if (iVar6 == 0) break;
iVar5 = iVar5 + 1;
pcVar12 = (char *)sobj_get_string(iVar6);
*ppcVar13 = pcVar12;
ppcVar13 = ppcVar13 + 1;
} while (iVar5 != 7);
pcVar12 = local_240[0];
iVar6 = strcmp(local_240[0],"USERAGENT");
if (iVar6 == 0) {
if (iVar5 < 2) {
LAB_00403f00:
pcVar12 = "BADARG";
LAB_00404030:
pcVar16 = sobj_add_string;
pcVar11 = pcVar2;
}
else {
pcVar16 = strcpy;
pcVar11 = s_DDNSD_0041a9a0;
pcVar12 = local_240[1];
}
(*pcVar16)(pcVar11,pcVar12);
}
else {
iVar6 = strcmp(pcVar12,"SET");
if (iVar6 == 0) {
if (iVar5 < 7) goto LAB_00403f00;
__s = (undefined4 *)FUN_00401d00(local_240[1]);
pcVar12 = local_240[1];
if (__s == (undefined4 *)0x0) {
__s = (undefined4 *)malloc(0x44) //possible issue identified - semgrep
if (__s != (undefined4 *)0x0) {
memset(__s,0,0x44) //possible issue identified - semgrep
pcVar12 = strdup(pcVar12);
__s[2] = 0xffffffff;
__s[7] = pcVar12;
if (pcVar12 != (char *)0x0) {
*__s = PTR_LOOP_0041a9f8;
*(undefined4 **)(PTR_LOOP_0041a9f8 + 4) = __s;
PTR_LOOP_0041a9f8 = (undefined *)__s;
__s[1] = &PTR_LOOP_0041a9f8;
goto LAB_00403c2c;
}
FUN_004015b0(__s);
}
pcVar12 = "ERROR";
goto LAB_00404030;
}
LAB_00403c2c:
if (__s[5] != 0) {
sloop_cancel_timeout();
}
pcVar12 = (char *)__s[8];
if (pcVar12 == (char *)0x0) {
LAB_00403c94:
iVar6 = 1;
pcVar12 = strdup(local_240[2]) //possible issue identified - semgrep
__s[8] = pcVar12;
}
else {
iVar5 = strcmp(pcVar12,local_240[2]);
iVar6 = 0;
if (iVar5 != 0) {
free(pcVar12);
goto LAB_00403c94;
}
}
pcVar12 = (char *)__s[9];
if (pcVar12 == (char *)0x0) {
LAB_00403cf0:
iVar6 = iVar6 + 1;
pcVar12 = strdup(local_240[3]) //possible issue identified - semgrep
__s[9] = pcVar12;
}
else {
iVar5 = strcmp(pcVar12,local_240[3]);
if (iVar5 != 0) {
free(pcVar12);
goto LAB_00403cf0;
}
}
pcVar12 = (char *)__s[10];
if (pcVar12 == (char *)0x0) {
LAB_00403d4c:
iVar6 = iVar6 + 1;
pcVar12 = strdup(local_240[4]) //possible issue identified - semgrep
__s[10] = pcVar12;
}
else {
iVar5 = strcmp(pcVar12,local_240[4]);
if (iVar5 != 0) {
free(pcVar12);
goto LAB_00403d4c;
}
}
pcVar12 = (char *)__s[0xb];
if (pcVar12 == (char *)0x0) {
LAB_00403da8:
iVar6 = iVar6 + 1;
pcVar12 = strdup(local_240[5]) //possible issue identified - semgrep
__s[0xb] = pcVar12;
}
else {
iVar5 = strcmp(pcVar12,local_240[5]);
if (iVar5 != 0) {
free(pcVar12);
goto LAB_00403da8;
}
}
lVar7 = atol(local_240[6]);
__s[0xd] = lVar7;
if (((__s[0xc] != 0) && (iVar5 = sloop_uptime(), iVar5 <= __s[0xd] * 0x3c + __s[0xc])) &&
(iVar6 == 0)) {
LAB_00403f64:
pcVar12 = "NOCHG";
goto LAB_00404030;
}
}
else {
iVar6 = strcmp(pcVar12,"DEL");
if (iVar6 == 0) {
if (iVar5 < 2) goto LAB_00403f00;
piVar8 = (int *)FUN_00401d00(local_240[1]);
if (piVar8 != (int *)0x0) {
iVar5 = strcmp((char *)piVar8[7],"IOBB");
if (iVar5 == 0) {
iVar5 = sloop_register_timeout(5,0,&LAB_00404160,piVar8);
piVar8[5] = iVar5;
}
else {
piVar10 = (int *)piVar8[1];
iVar5 = *piVar8;
*piVar10 = iVar5;
*(int **)(iVar5 + 4) = piVar10;
*piVar8 = 0;
piVar8[1] = 0;
FUN_004015b0(piVar8);
}
goto LAB_00404044;
}
LAB_00404000:
pcVar12 = "NOSVC";
goto LAB_00404030;
}
iVar6 = strcmp(pcVar12,"UPDATE");
if (iVar6 != 0) {
iVar5 = strcmp(pcVar12,"DUMP");
if (iVar5 != 0) {
pcVar12 = "BADCMD";
goto LAB_00404030;
}
if (local_240[1] == (char *)0x0) {
ppuVar14 = (undefined **)0x0;
while( true ) {
ppuVar15 = (undefined **)PTR_LOOP_0041a9f8;
if (ppuVar14 != (undefined **)0x0) {
ppuVar15 = (undefined **)*ppuVar14;
}
if ((ppuVar15 == &PTR_LOOP_0041a9f8) || (ppuVar15 == (undefined **)0x0)) break;
FUN_004020e0(ppuVar15,pcVar2);
ppuVar14 = ppuVar15;
}
}
else {
iVar5 = FUN_00401d00();
if (iVar5 == 0) goto LAB_00404000;
FUN_004020e0(iVar5,pcVar2);
}
goto LAB_00404044;
}
if (iVar5 < 2) goto LAB_00403f00;
__s = (undefined4 *)FUN_00401d00(local_240[1]);
if (__s == (undefined4 *)0x0) goto LAB_00404000;
if ((iVar5 != 2) && (iVar5 = strcmp((char *)__s[8],local_240[2]), iVar5 != 0))
goto LAB_00403f64;
}
FUN_00403674(__s,0);
}
}
}
LAB_00404044:
iVar5 = sobj_get_length(pcVar2);
if (iVar5 != 0) {
uVar9 = sobj_get_string(pcVar2);
iVar5 = sobj_get_length(pcVar2);
susock_send(param_2,uVar9,iVar5 + 1,0x4000);
}
if (pcVar2 != (char *)0x0) {
sobj_del(pcVar2);
}
if (iVar1 != 0) {
solist_del(iVar1);
}
if (iVar4 != 0) {
xs_close(iVar4);
}
LAB_00404100:
susock_close(param_2);
return 0xffffffff;
}