/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined4 xmldbc_main(int param_1,char **param_2)

{
  int iVar1;
  undefined4 uVar2;
  size_t sVar3;
  size_t sVar4;
  uint uVar5;
  char *pcVar6;
  char *pcVar7;
  char *pcVar8;
  code *pcVar9;
  
LAB_004043e0:
  iVar1 = getopt(param_1,param_2,"hHvg:s:a:d:D:l:L:r:R:w:W:S:P:V:x:t:k:X:")   //possible issue identified - semgrep
  if (0 < iVar1) {
    switch(iVar1) {
    case 0x44:
      DAT_00434908 = _optarg;
      DAT_004348f8 = 5;
      break;
    default:
      printf("XMLDBC: unknown opt \'%c\'\n",iVar1);
      FUN_00403dc0(param_1,param_2);
      uVar2 = 0xffffffff;
      goto LAB_00404004;
    case 0x48:
      puts("3");
      goto LAB_004043e0;
    case 0x4c:
      DAT_00434904 = _optarg;
      DAT_004348f8 = 4;
      break;
    case 0x50:
      DAT_00434910 = _optarg;
      DAT_004348f8 = 10;
      goto LAB_004043e0;
    case 0x52:
      DAT_00434904 = _optarg;
      DAT_004348f8 = 6;
      break;
    case 0x53:
      DAT_004348fc = _optarg;
      goto LAB_004043e0;
    case 0x56:
      sVar3 = strlen(_optarg);
      pcVar6 = DAT_0043490c;
      sVar3 = sVar3 + 2   //possible issue identified - semgrep
      if (DAT_0043490c != (char *)0x0) {
        sVar4 = strlen(DAT_0043490c);
        sVar3 = sVar3 + sVar4 + 1   //possible issue identified - semgrep
      }
      DAT_0043490c = (char *)realloc(pcVar6,sVar3)   //possible issue identified - semgrep
      if (DAT_0043490c != (char *)0x0) {
        strcat(DAT_0043490c,"\n")   //possible issue identified - semgrep
        strcat(DAT_0043490c,_optarg)   //possible issue identified - semgrep
      }
      goto LAB_004043e0;
    case 0x57:
      DAT_004348f0 = lxmldbc_eatwhite(_optarg);
      DAT_004348f8 = 0xe;
      DAT_00434900 = 1;
      goto LAB_004043e0;
    case 0x58:
      DAT_004348f0 = lxmldbc_eatwhite(_optarg);
      DAT_004348f8 = 3;
      goto LAB_004043e0;
    case 0x61:
    case 0x73:
      if (param_1 <= _optind) {
        puts("XMLDBC: need more argument for add");
        FUN_00403dc0(param_1,param_2);
        FUN_00403f0c(0xffffffff);
      }
      DAT_004348f0 = lxmldbc_eatwhite(_optarg);
      DAT_004348f4 = lxmldbc_eatwhite(param_2[_optind]);
      DAT_00434900 = (uint)(iVar1 == 0x61);
      DAT_004348f8 = 2;
      goto LAB_004043e0;
    case 100:
      DAT_00434908 = _optarg;
      DAT_004348f8 = 5;
      goto LAB_004043e0;
    case 0x67:
      DAT_004348f0 = lxmldbc_eatwhite(_optarg);
      DAT_004348f8 = 1;
      goto LAB_004043e0;
    case 0x68:
      uVar2 = 0;
LAB_00404004:
      FUN_00403f0c(uVar2);
      goto LAB_004043e0;
    case 0x6b:
      DAT_004348f8 = 0xd;
      DAT_00434914 = _optarg;
      goto LAB_004043e0;
    case 0x6c:
      DAT_00434904 = _optarg;
      DAT_004348f8 = 4;
      goto LAB_004043e0;
    case 0x72:
      DAT_00434904 = _optarg;
      DAT_004348f8 = 6;
      goto LAB_004043e0;
    case 0x74:
      DAT_00434914 = _optarg;
      DAT_004348f8 = 0xc;
      goto LAB_004043e0;
    case 0x76:
      DAT_00434918 = DAT_00434918 + 1;
      goto LAB_004043e0;
    case 0x77:
      DAT_004348f0 = lxmldbc_eatwhite(_optarg);
      DAT_004348f8 = 0xe;
      goto LAB_004043e0;
    case 0x78:
      goto switchD_00403fd0_caseD_78;
    }
    DAT_00434900 = 3;
    goto LAB_004043e0;
  }
  if (DAT_004348f8 == 0) {
    FUN_00403e44("No action specified!\n");
    FUN_00403ea0(0);
  }
  if (DAT_004348fc == (char *)0x0) {
    DAT_004348fc = "/var/run/xmldb_sock";
  }
  FUN_00403e44("Unix socket: %s\n",DAT_004348fc);
  pcVar6 = (char *)0x0;
  if (DAT_004348f0 != 0) {
    pcVar6 = strdup((char *)DAT_004348f0)   //possible issue identified - semgrep
  }
  pcVar7 = (char *)0x0;
  if (DAT_004348f4 != 0) {
    pcVar7 = strdup((char *)DAT_004348f4)   //possible issue identified - semgrep
  }
  pcVar8 = (char *)0x0;
  if (pcVar6 != (char *)0x0) {
    uVar2 = lxmldbc_reatwhite(pcVar6);
    pcVar8 = (char *)lxmldbc_eatwhite(uVar2);
  }
  uVar2 = 0;
  if (pcVar7 != (char *)0x0) {
    uVar2 = lxmldbc_reatwhite(pcVar7);
    uVar2 = lxmldbc_eatwhite(uVar2);
  }
  uVar5 = DAT_00434900;
  switch(DAT_004348f8 + -1) {
  case 0:
    pcVar9 = xmldbc_get;
    uVar5 = 0;
    goto LAB_00404628;
  case 1:
    pcVar9 = xmldbc_set;
    goto LAB_00404778;
  case 2:
    pcVar9 = xmldbc_del;
    goto LAB_004047b8;
  case 3:
    pcVar9 = xmldbc_reload;
    pcVar8 = DAT_00434904;
    break;
  case 4:
    pcVar9 = xmldbc_dump;
    pcVar8 = DAT_00434908;
    break;
  case 5:
    pcVar9 = xmldbc_read;
    pcVar8 = DAT_00434904;
    break;
  default:
    uVar2 = 0xffffffff;
    goto LAB_004047c8;
  case 9:
    if (DAT_0043490c != (char *)0x0) {
      sVar3 = strlen(DAT_0043490c);
      sVar4 = strlen(DAT_00434910);
      pcVar6 = (char *)malloc(sVar3 + sVar4 + 2)   //possible issue identified - semgrep
      if (pcVar6 != (char *)0x0) {
        strcpy(pcVar6,DAT_00434910)   //possible issue identified - semgrep
        strcat(pcVar6,DAT_0043490c)   //possible issue identified - semgrep
        uVar2 = xmldbc_ephp(DAT_004348fc,0,pcVar6,_stdout);
        free(pcVar6);
        goto LAB_004047c8;
      }
    }
    pcVar9 = xmldbc_ephp;
    uVar5 = 0;
    pcVar8 = DAT_00434910;
    uVar2 = _stdout;
    goto LAB_00404778;
  case 10:
    pcVar9 = xmldbc_setext;
    uVar5 = 0;
LAB_00404778:
    uVar2 = (*pcVar9)(DAT_004348fc,uVar5,pcVar8,uVar2);
    goto LAB_004047c8;
  case 0xb:
    pcVar9 = xmldbc_timer;
    uVar5 = 0;
    pcVar8 = DAT_00434914;
    break;
  case 0xc:
    pcVar9 = xmldbc_killtimer;
    pcVar8 = DAT_00434914;
LAB_004047b8:
    uVar5 = 0;
    break;
  case 0xd:
    pcVar9 = xmldbc_write;
LAB_00404628:
    uVar2 = (*pcVar9)(DAT_004348fc,uVar5,pcVar8,_stdout);
    putchar(10);
    goto LAB_004047c8;
  }
  uVar2 = (*pcVar9)(DAT_004348fc,uVar5,pcVar8,uVar2);
LAB_004047c8:
  FUN_00403ea0(uVar2);
  return uVar2;
switchD_00403fd0_caseD_78:
  if (param_1 <= _optind) {
    puts("XMLDBC: need more argument fro del");
    FUN_00403dc0(param_1,param_2);
    FUN_00403f0c(0xffffffff);
  }
  DAT_004348f0 = lxmldbc_eatwhite(_optarg);
  DAT_004348f4 = lxmldbc_eatwhite(param_2[_optind]);
  DAT_004348f8 = 0xb;
  goto LAB_004043e0;
}