int conntrackcgi_main(void)

{
  undefined4 *puVar1;
  bool bVar2;
  undefined *puVar3;
  int iVar4;
  char *pcVar5;
  char *pcVar6;
  size_t sVar7;
  uint uVar8;
  int iVar9;
  size_t sVar10;
  undefined4 *__s;
  int *piVar11;
  code *pcVar12;
  char *pcVar13;
  void *__ptr;
  undefined4 uVar14;
  undefined **ppuVar15;
  undefined **ppuVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  FILE *unaff_s8;
  in_addr local_568;
  char local_564 [16];
  char acStack_554 [128];
  char local_4d4 [1156];
  uint local_50;
  char *local_4c;
  uint local_48;
  char *local_44;
  char *local_40;
  char *local_3c;
  char *local_38;
  in_addr *local_34;
  char *local_30;
  
  memset(local_4d4,0,0x80)   //possible issue identified - semgrep
  builtin_strncpy(local_4d4,"src=",5)   //possible issue identified - semgrep
  local_4d4[5] = '\0';
  local_4d4[0x10] = 'd';
  local_4d4[0x11] = 's';
  local_4d4[0x12] = 't';
  local_4d4[0x13] = '=';
  local_4d4[0x14] = '\0';
  local_4d4[0x15] = '\0';
  local_4d4[0x20] = 's';
  local_4d4[0x21] = 'p';
  local_4d4[0x22] = 'o';
  local_4d4[0x23] = 'r';
  local_4d4[0x24] = 't';
  local_4d4[0x25] = '=';
  local_4d4[0x26] = '\0';
  local_4d4[0x27] = '\0';
  local_4d4[0x30] = 'd';
  local_4d4[0x31] = 'p';
  local_4d4[0x32] = 'o';
  local_4d4[0x33] = 'r';
  local_4d4[0x34] = 't';
  local_4d4[0x35] = '=';
  local_4d4[0x36] = '\0';
  local_4d4[0x37] = '\0';
  local_4d4[0x40] = '\0';
  local_4d4[0x41] = '\0';
  local_4d4[6] = '\0';
  local_4d4[7] = '\0';
  local_4d4[8] = '\0';
  local_4d4[9] = '\0';
  local_4d4[10] = '\0';
  local_4d4[0xb] = '\0';
  local_4d4[0xc] = '\0';
  local_4d4[0xd] = '\0';
  local_4d4[0xe] = '\0';
  local_4d4[0xf] = '\0';
  local_4d4[0x16] = '\0';
  local_4d4[0x17] = '\0';
  local_4d4[0x18] = '\0';
  local_4d4[0x19] = '\0';
  local_4d4[0x1a] = '\0';
  local_4d4[0x1b] = '\0';
  local_4d4[0x1c] = '\0';
  local_4d4[0x1d] = '\0';
  local_4d4[0x1e] = '\0';
  local_4d4[0x1f] = '\0';
  local_4d4[0x28] = '\0';
  local_4d4[0x29] = '\0';
  local_4d4[0x2a] = '\0';
  local_4d4[0x2b] = '\0';
  local_4d4[0x2c] = '\0';
  local_4d4[0x2d] = '\0';
  local_4d4[0x2e] = '\0';
  local_4d4[0x2f] = '\0';
  local_4d4[0x38] = '\0';
  local_4d4[0x39] = '\0';
  local_4d4[0x3a] = '\0';
  local_4d4[0x3b] = '\0';
  local_4d4[0x3c] = '\0';
  local_4d4[0x3d] = '\0';
  local_4d4[0x3e] = '\0';
  local_4d4[0x3f] = '\0';
  local_4d4[0x42] = '\0';
  local_4d4[0x43] = '\0';
  local_4d4[0x44] = '\0';
  local_4d4[0x45] = '\0';
  local_4d4[0x70] = '\0';
  local_4d4[0x71] = '\0';
  local_4d4[0x46] = '\0';
  local_4d4[0x47] = '\0';
  local_4d4[0x48] = '\0';
  local_4d4[0x49] = '\0';
  local_4d4[0x4a] = '\0';
  local_4d4[0x4b] = '\0';
  local_4d4[0x4c] = '\0';
  local_4d4[0x4d] = '\0';
  local_4d4[0x4e] = '\0';
  local_4d4[0x4f] = '\0';
  local_4d4[0x50] = '\0';
  local_4d4[0x51] = '\0';
  local_4d4[0x52] = '\0';
  local_4d4[0x53] = '\0';
  local_4d4[0x54] = '\0';
  local_4d4[0x55] = '\0';
  local_4d4[0x56] = '\0';
  local_4d4[0x57] = '\0';
  local_4d4[0x58] = '\0';
  local_4d4[0x59] = '\0';
  local_4d4[0x5a] = '\0';
  local_4d4[0x5b] = '\0';
  local_4d4[0x5c] = '\0';
  local_4d4[0x5d] = '\0';
  local_4d4[0x5e] = '\0';
  local_4d4[0x5f] = '\0';
  local_4d4[0x60] = '\0';
  local_4d4[0x61] = '\0';
  local_4d4[0x62] = '\0';
  local_4d4[99] = '\0';
  local_4d4[100] = '\0';
  local_4d4[0x65] = '\0';
  local_4d4[0x66] = '\0';
  local_4d4[0x67] = '\0';
  local_4d4[0x68] = '\0';
  local_4d4[0x69] = '\0';
  local_4d4[0x6a] = '\0';
  local_4d4[0x6b] = '\0';
  local_4d4[0x6c] = '\0';
  local_4d4[0x6d] = '\0';
  local_4d4[0x6e] = '\0';
  local_4d4[0x6f] = '\0';
  local_4d4[0x72] = '\0';
  local_4d4[0x73] = '\0';
  local_4d4[0x74] = '\0';
  local_4d4[0x75] = '\0';
  local_4d4[0x76] = '\0';
  local_4d4[0x77] = '\0';
  local_4d4[0x78] = '\0';
  local_4d4[0x79] = '\0';
  local_4d4[0x7a] = '\0';
  local_4d4[0x7b] = '\0';
  local_4d4[0x7c] = '\0';
  local_4d4[0x7d] = '\0';
  local_4d4[0x7e] = '\0';
  local_4d4[0x7f] = '\0';
  iVar4 = sess_validate();
  if (iVar4 < 0) {
    pcVar13 = "no authorized";
  }
  else {
    pcVar13 = getenv("REQUEST_METHOD")   //possible issue identified - semgrep
    if (pcVar13 == (char *)0x0) {
      pcVar13 = "no REQUEST";
    }
    else {
      iVar4 = strcasecmp(pcVar13,"POST");
      if (iVar4 == 0) {
        pcVar12 = FUN_0040eacc;
        uVar14 = 0x400;
      }
      else {
        iVar4 = strcasecmp(pcVar13,"GET");
        uVar14 = 0x40;
        if (iVar4 != 0) {
          pcVar13 = "unsupported HTTP request";
          goto LAB_0040e0b8;
        }
        pcVar12 = FUN_0040ea28;
      }
      iVar4 = cgibin_parse_request(pcVar12,0,uVar14);
      puVar3 = PTR_LOOP_00430478;
      if (iVar4 < 0) {
        pcVar13 = "unable to parse HTTP request";
      }
      else {
        ppuVar15 = (undefined **)0x0;
        do {
          ppuVar16 = (undefined **)puVar3;
          if (ppuVar15 != (undefined **)0x0) {
            ppuVar16 = (undefined **)*ppuVar15;
          }
          if ((ppuVar16 == &PTR_LOOP_00430478) || (ppuVar16 == (undefined **)0x0))
          goto LAB_0040e1e4;
          iVar18 = strcmp("NETWORK",ppuVar16[2]);
          ppuVar15 = ppuVar16;
        } while (iVar18 != 0);
        local_4c = ppuVar16[3];
        if (local_4c == (char *)0x0) {
LAB_0040e1e4:
          pcVar13 = "LAN network address not found.";
        }
        else {
          ppuVar15 = (undefined **)0x0;
          do {
            ppuVar16 = (undefined **)puVar3;
            if (ppuVar15 != (undefined **)0x0) {
              ppuVar16 = (undefined **)*ppuVar15;
            }
            if ((ppuVar16 == &PTR_LOOP_00430478) || (ppuVar16 == (undefined **)0x0)) {
              pcVar13 = (char *)0x0;
              goto LAB_0040e254;
            }
            iVar18 = strcmp("MASK",ppuVar16[2]);
            ppuVar15 = ppuVar16;
          } while (iVar18 != 0);
          pcVar13 = ppuVar16[3];
LAB_0040e254:
          iVar18 = atoi(pcVar13);
          uVar8 = -iVar18;
          if (iVar18 == 0) {
            uVar8 = 0xffffffe8;
          }
          local_48 = -1 << (uVar8 & 0x1f);
          unaff_s8 = fopen("/proc/net/ip_conntrack","r")   //possible issue identified - semgrep
          if ((unaff_s8 != (FILE *)0x0) ||
             (unaff_s8 = fopen("/proc/net/nf_conntrack","r"), unaff_s8 != (FILE *)0x0)) {   //possible issue identified - semgrep
            local_44 = local_4d4 + 0x80;
            local_40 = local_4d4;
            local_50 = 1;
            local_3c = local_4d4 + 0x40;
            local_38 = local_564;
            local_34 = &local_568;
            local_30 = local_4d4 + 0x50;
            iVar19 = 0;
            iVar18 = 0;
LAB_0040e788:
            do {
              pcVar13 = fgets(local_44,0x400,unaff_s8)   //possible issue identified - semgrep
              if (pcVar13 == (char *)0x0) goto LAB_0040e7a8;
              pcVar13 = strrchr(local_44,0x53);
              if (pcVar13 != (char *)0x0) {
                iVar17 = strncmp(local_44,"tcp",3);
                if (iVar17 == 0) {
                  pcVar13 = strstr(local_44,"ESTABLISHED");
                  bVar2 = true;
                  if (pcVar13 == (char *)0x0) goto LAB_0040e788;
                }
                else {
                  iVar17 = strncmp(local_44,"udp",3);
                  bVar2 = false;
                  if (iVar17 != 0) goto LAB_0040e788;
                }
                pcVar13 = strchr(local_44,0x20);
                do {
                  pcVar13 = pcVar13 + 1;
                } while (*pcVar13 == ' ');
                pcVar13 = strchr(pcVar13,0x20);
                pcVar5 = strchr(pcVar13 + 1,0x20);
                pcVar5 = pcVar5 + 1;
                iVar17 = 0;
                memset(local_3c,0,0x40)   //possible issue identified - semgrep
                pcVar13 = local_40;
                do {
                  pcVar5 = strstr(pcVar5,pcVar13);
                  if (pcVar5 == (char *)0x0) goto LAB_0040e788;
                  pcVar6 = strchr(pcVar5,0x20);
                  sVar7 = strlen(pcVar13);
                  strncpy(pcVar13 + 0x40,pcVar5 + sVar7,(size_t)(pcVar6 + (-sVar7 - (int)pcVar5)))   //possible issue identified - semgrep
                  pcVar13 = pcVar13 + 0x10;
                  if (iVar17 == 0) {
                    pcVar6 = local_38;
                    pcVar6[0] = '\0';
                    pcVar6[1] = '\0';
                    pcVar6[2] = '\0';
                    pcVar6[3] = '\0';
                    pcVar6[4] = '\0';
                    pcVar6[5] = '\0';
                    pcVar6[6] = '\0';
                    pcVar6[7] = '\0';
                    pcVar6[8] = '\0';
                    pcVar6[9] = '\0';
                    pcVar6[10] = '\0';
                    pcVar6[0xb] = '\0';
                    pcVar6[0xc] = '\0';
                    pcVar6[0xd] = '\0';
                    pcVar6[0xe] = '\0';
                    pcVar6[0xf] = '\0';
                    inet_aton(local_3c,local_34);
                    uVar8 = local_48 &
                            (local_568.s_addr << 0x18 | local_568.s_addr >> 0x18 |
                             (local_568.s_addr & 0xff0000) >> 8 | (local_568.s_addr & 0xff00) << 8);
                    local_568.s_addr =
                         uVar8 << 0x18 | uVar8 >> 0x18 | (uVar8 & 0xff0000) >> 8 |
                         (uVar8 & 0xff00) << 8;
                    pcVar6 = inet_ntoa(local_568);
                    strcpy(local_38,pcVar6)   //possible issue identified - semgrep
                    sVar7 = strlen(local_4c);
                    iVar9 = strncmp(local_38,local_4c,sVar7)   //possible issue identified - semgrep
                    local_50 = (uint)(iVar9 == 0);
                  }
                  iVar17 = iVar17 + 1;
                } while (iVar17 != 4);
                iVar17 = 0;
                if (local_50 == 0) {
                  pcVar13 = strstr(pcVar5,local_40);
                  if (pcVar13 == (char *)0x0) goto LAB_0040e788;
                  pcVar5 = strchr(pcVar13,0x20);
                  sVar7 = strlen(local_40);
                  memset(local_30,0,0x10)   //possible issue identified - semgrep
                  sVar10 = strlen(local_40);
                  strncpy(local_30,pcVar13 + sVar10,(size_t)(pcVar5 + (-sVar7 - (int)pcVar13)))   //possible issue identified - semgrep
                  iVar17 = 1;
                }
                puVar3 = PTR_LOOP_00430470;
                pcVar13 = local_40 + (iVar17 + 4) * 0x10;
                ppuVar15 = (undefined **)0x0;
                do {
                  ppuVar16 = (undefined **)puVar3;
                  if (ppuVar15 != (undefined **)0x0) {
                    ppuVar16 = (undefined **)*ppuVar15;
                  }
                  if ((ppuVar16 == &PTR_LOOP_00430470) || (ppuVar16 == (undefined **)0x0)) {
                    __s = (undefined4 *)malloc(0x20)   //possible issue identified - semgrep
                    if (__s != (undefined4 *)0x0) {
                      memset(__s,0,0x20)   //possible issue identified - semgrep
                      strcpy((char *)(__s + 2),pcVar13)   //possible issue identified - semgrep
                      if (bVar2) {
                        __s[6] = __s[6] + 1;
                      }
                      else {
                        __s[7] = __s[7] + 1;
                      }
                      puVar3 = PTR_LOOP_00430470;
                      puVar1 = (undefined4 *)(PTR_LOOP_00430470 + 4);
                      PTR_LOOP_00430470 = (undefined *)__s;
                      *puVar1 = __s;
                      *__s = puVar3;
                      __s[1] = &PTR_LOOP_00430470;
                    }
                    if (!bVar2) goto LAB_0040e784;
                    goto LAB_0040e77c;
                  }
                  iVar17 = strcmp(pcVar13,(char *)(ppuVar16 + 2));
                  ppuVar15 = ppuVar16;
                } while (iVar17 != 0);
                if (bVar2) {
                  ppuVar16[6] = ppuVar16[6] + 1;
LAB_0040e77c:
                  iVar19 = iVar19 + 1;
                }
                else {
                  ppuVar16[7] = ppuVar16[7] + 1;
LAB_0040e784:
                  iVar18 = iVar18 + 1;
                }
              }
            } while( true );
          }
          pcVar13 = "open conntrack file failed.";
        }
      }
    }
  }
LAB_0040e0b8:
  strcpy(acStack_554,pcVar13)   //possible issue identified - semgrep
  iVar4 = -1;
  iVar19 = 0;
  iVar18 = 0;
LAB_0040e7a8:
  puts("HTTP/1.1 200 OK\r\nContent-Type: text/xml\r\n\r");
  puts("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  puts("<conntrack>");
  if (iVar4 == -1) {
    printf("\t<result>FAILED</result>\n\t<essage>%s</message>\n",acStack_554);
  }
  else {
    puts("\t<result>OK</result>");
    puts("\t<essage>");
    iVar17 = 0;
    ppuVar15 = (undefined **)0x0;
    while( true ) {
      ppuVar16 = (undefined **)PTR_LOOP_00430470;
      if (ppuVar15 != (undefined **)0x0) {
        ppuVar16 = (undefined **)*ppuVar15;
      }
      if ((ppuVar16 == &PTR_LOOP_00430470) || (ppuVar16 == (undefined **)0x0)) break;
      iVar17 = iVar17 + 1;
      printf("\t\t<entry>\n\t\t\t<ipaddr>%s</ipaddr>\n\t\t\t<tcp>%d</tcp>\n\t\t\t<udp>%d</udp>\n\t\t</entry>\n"
             ,ppuVar16 + 2,ppuVar16[6],ppuVar16[7]);
      ppuVar15 = ppuVar16;
    }
    printf("\t\t<count>%d</count>\n",iVar17);
    printf("\t\t<tcp_count>%d</tcp_count>\n",iVar19);
    printf("\t\t<udp_count>%d</udp_count>\n",iVar18);
    puts("\t</message>");
  }
  puts("</conntrack>");
  while (puVar3 = PTR_LOOP_00430478, (undefined **)PTR_LOOP_00430478 != &PTR_LOOP_00430478) {
    piVar11 = *(int **)(PTR_LOOP_00430478 + 4);
    iVar18 = *(int *)PTR_LOOP_00430478;
    __ptr = *(void **)(PTR_LOOP_00430478 + 8);
    *piVar11 = iVar18;
    *(int **)(iVar18 + 4) = piVar11;
    *(undefined4 *)puVar3 = 0;
    *(undefined4 *)(puVar3 + 4) = 0;
    if (__ptr != (void *)0x0) {
      free(__ptr);
    }
    if (*(void **)(puVar3 + 0xc) != (void *)0x0) {
      free(*(void **)(puVar3 + 0xc));
    }
    free(puVar3);
  }
  while (puVar3 = PTR_LOOP_00430470, (undefined **)PTR_LOOP_00430470 != &PTR_LOOP_00430470) {
    piVar11 = *(int **)(PTR_LOOP_00430470 + 4);
    iVar18 = *(int *)PTR_LOOP_00430470;
    *piVar11 = iVar18;
    *(int **)(iVar18 + 4) = piVar11;
    *(undefined4 *)puVar3 = 0;
    *(undefined4 *)(puVar3 + 4) = 0;
    free(puVar3);
  }
  if (unaff_s8 != (FILE *)0x0) {
    fclose(unaff_s8);
  }
  return iVar4;
}