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