undefined4 sessioncgi_main(void)

{
  char *pcVar1;
  int iVar2;
  char *pcVar3;
  int iVar4;
  void *__ptr;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  uint uVar8;
  code *pcVar9;
  char *pcVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  undefined **ppuVar13;
  undefined **ppuVar14;
  uint uVar15;
  
  pcVar1 = getenv("REQUEST_METHOD")   //possible issue identified - semgrep
  if (pcVar1 == (char *)0x0) {
    pcVar1 = "no REQUEST";
LAB_00409764:
    cgibin_print_http_status(400,"",pcVar1);
    uVar12 = 0xffffffff;
    goto LAB_00409cd8;
  }
  iVar2 = strcasecmp(pcVar1,"GET");
  if (iVar2 == 0) {
    pcVar9 = FUN_00409504;
    uVar12 = 0x40;
  }
  else {
    iVar2 = strcasecmp(pcVar1,"POST");
    if (iVar2 != 0) {
      pcVar1 = "unsupported HTTP request";
      goto LAB_00409764;
    }
    pcVar9 = FUN_00409450;
    uVar12 = 0x400;
  }
  cgibin_parse_request(pcVar9,0,uVar12);
  pcVar1 = (char *)sobj_new();
  if (pcVar1 == (char *)0x0) {
    uVar12 = 0xffffffff;
    goto LAB_00409cd8;
  }
  pcVar3 = (char *)FUN_004095a8("REPORT_METHOD");
  if (pcVar3 == (char *)0x0) {
LAB_004097a4:
    iVar2 = FUN_004095a8("REPORT");
    if (iVar2 != 0) {
      sobj_add_string(pcVar1,"http://");
      pcVar3 = getenv("HTTP_HOST")   //possible issue identified - semgrep
      sobj_add_string(pcVar1,pcVar3);
      pcVar3 = getenv("SERVER_PORT")   //possible issue identified - semgrep
      iVar4 = strcasecmp(pcVar3,"80");
      if (iVar4 != 0) {
        sobj_add_char(pcVar1,0x3a);
        pcVar3 = getenv("SERVER_PORT")   //possible issue identified - semgrep
        sobj_add_string(pcVar1,pcVar3);
      }
      sobj_add_char(pcVar1,0x2f);
      sobj_add_string(pcVar1,iVar2);
      pcVar9 = sobj_strdup;
      pcVar3 = pcVar1;
LAB_004098fc:
      uVar12 = 1;
      __ptr = (void *)(*pcVar9)(pcVar3);
      goto LAB_00409950;
    }
    pcVar3 = getenv("HTTP_REFERER")   //possible issue identified - semgrep
    if (pcVar3 != (char *)0x0) {
      pcVar3 = getenv("HTTP_REFERER")   //possible issue identified - semgrep
      pcVar9 = strdup;
      goto LAB_004098fc;
    }
    cgibin_print_http_resp(1,0,&DAT_0041e01c,"ERR_NO_REPORT",0xffffffff,"");
    uVar12 = 0xffffffff;
    __ptr = (void *)0x0;
  }
  else {
    iVar2 = strcasecmp(pcVar3,"xml");
    uVar12 = 0;
    if (iVar2 != 0) goto LAB_004097a4;
    __ptr = (void *)0x0;
LAB_00409950:
    pcVar3 = (char *)FUN_004095a8("ACTION");
    if (pcVar3 == (char *)0x0) {
      pcVar3 = "";
      pcVar10 = "ERR_NO_ACTION";
LAB_00409bfc:
      cgibin_print_http_resp(uVar12,__ptr,&DAT_0041e01c,pcVar10,0xffffffff,pcVar3);
      uVar12 = 0xffffffff;
    }
    else {
      sobj_free(pcVar1);
      ppuVar13 = (undefined **)0x0;
      while( true ) {
        ppuVar14 = (undefined **)PTR_LOOP_00430430;
        if (ppuVar13 != (undefined **)0x0) {
          ppuVar14 = (undefined **)*ppuVar13;
        }
        if ((ppuVar14 == &PTR_LOOP_00430430) || (ppuVar14 == (undefined **)0x0)) break;
        iVar2 = strncmp(ppuVar14[2],"PELOTA_",7);
        ppuVar13 = ppuVar14;
        if (iVar2 == 0) {
          sobj_add_string(pcVar1,"&");
          sobj_add_string(pcVar1,ppuVar14[2]);
          sobj_add_string(pcVar1,"=");
          sobj_add_string(pcVar1,ppuVar14[3]);
        }
      }
      iVar2 = strcmp(pcVar3,"login_plaintext");
      if (iVar2 == 0) {
        uVar5 = FUN_004095a8(&DAT_0041e810);
        uVar6 = FUN_004095a8("PASSWD");
        uVar7 = FUN_004095a8("CAPTCHA");
        uVar11 = 0;
LAB_00409b38:
        uVar8 = authentication(uVar5,uVar6,uVar7,uVar11);
        uVar15 = uVar8 & -(uint)((int)uVar8 < 1);
      }
      else {
        iVar2 = strcmp(pcVar3,"login_digest");
        if (iVar2 == 0) {
          uVar5 = FUN_004095a8(&DAT_0041e810);
          uVar6 = FUN_004095a8("PASSWD");
          uVar7 = FUN_004095a8("CAPTCHA");
          uVar11 = 1;
          goto LAB_00409b38;
        }
        iVar2 = strcmp(pcVar3,"logout");
        if (iVar2 != 0) {
          pcVar3 = (char *)sobj_get_string(pcVar1);
          pcVar10 = "ERR_UNKNOW_ACTION";
          goto LAB_00409bfc;
        }
        pcVar10 = getenv("REMOTE_ADDR")   //possible issue identified - semgrep
        weblogin_log(0xfffffffb,pcVar10);
        uVar15 = 0;
        uVar8 = 0xffffffff;
        sess_logout();
      }
      iVar2 = strcmp(pcVar3,"logout");
      if (iVar2 != 0) {
        pcVar3 = getenv("REMOTE_ADDR")   //possible issue identified - semgrep
        weblogin_log(uVar8,pcVar3);
      }
      uVar5 = authentication_result(uVar15);
      uVar6 = sobj_get_string(pcVar1);
      if ((int)uVar8 < 0) {
        uVar8 = 0xffffffff;
      }
      cgibin_print_http_resp(uVar12,__ptr,uVar5,"",uVar8,uVar6);
      uVar12 = 0;
    }
  }
  sobj_del(pcVar1);
  if (__ptr != (void *)0x0) {
    free(__ptr);
  }
LAB_00409cd8:
  FUN_00409200();
  return uVar12;
}