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