uint FUN_0040c9e4(undefined4 *param_1,int param_2,int param_3,undefined4 param_4,int *param_5)
{
uint uVar1;
int *piVar2;
int iVar3;
int iVar4;
undefined4 uVar5;
char *pcVar6;
int iVar7;
char *pcVar8;
int iVar9;
undefined4 uVar10;
uint uVar11;
uint uVar12;
int iVar13;
int *piVar14;
code *pcVar15;
longlong lVar16;
char acStack_d0 [16];
char acStack_c0 [128];
int *local_40;
undefined4 local_3c;
int local_38;
int local_34;
char *local_30;
char *local_2c;
piVar14 = (int *)*param_5;
uVar12 = 0xffffffff;
if (piVar14 == param_5) {
return 0;
}
local_30 = acStack_d0;
local_2c = acStack_c0;
LAB_0040ca54:
sobj_free(param_4);
switch(piVar14[2]) {
case 0:
pcVar8 = (char *)sobj_new();
if (pcVar8 != (char *)0x0) {
iVar9 = piVar14[5];
if (piVar14[5] == 0) {
iVar9 = param_3;
}
pcVar6 = (char *)FUN_0040c950(param_1,iVar9,piVar14[4]);
iVar9 = piVar14[3];
if (iVar9 - 3U < 2) {
lVar16 = atoll(pcVar6);
if (iVar9 == 3) {
lVar16 = lVar16 + 1;
}
else {
lVar16 = lVar16 + -1;
}
LAB_0040cc10:
sprintf(local_2c,"%lld",(int)lVar16,(int)((ulonglong)lVar16 >> 0x20)) //possible issue identified - semgrep
pcVar15 = sobj_add_string;
pcVar6 = local_2c;
}
else {
uVar12 = FUN_0040d858(param_1,param_2,param_3,pcVar8,piVar14 + 6);
if ((int)uVar12 < 0) goto LAB_0040d408;
if (piVar14[3] != 0) {
lVar16 = atoll(pcVar6);
iVar9 = (int)((ulonglong)lVar16 >> 0x20);
uVar12 = (uint)lVar16;
pcVar6 = (char *)sobj_get_string(pcVar8);
lVar16 = atoll(pcVar6);
iVar3 = (int)((ulonglong)lVar16 >> 0x20);
uVar1 = (uint)lVar16;
uVar11 = uVar1 + uVar12;
if (piVar14[3] == 1) {
iVar9 = (uint)(uVar11 < uVar1) + iVar3 + iVar9;
}
else {
uVar11 = uVar12 - uVar1;
iVar9 = (iVar9 - iVar3) - (uint)(uVar12 < uVar11);
}
lVar16 = CONCAT44(iVar9,uVar11);
goto LAB_0040cc10;
}
pcVar15 = sobj_move;
pcVar6 = pcVar8;
}
(*pcVar15)(param_4,pcVar6);
iVar9 = piVar14[5];
if (piVar14[5] == 0) {
iVar9 = param_3;
}
iVar3 = piVar14[4];
uVar10 = sobj_get_string(param_4);
FUN_0040c984(param_1,iVar9,iVar3,uVar10);
uVar12 = 0;
LAB_0040d408:
sobj_del(pcVar8);
goto switchD_0040ca90_default;
}
goto LAB_0040d260;
case 1:
uVar12 = FUN_0040dc50(param_1,3,param_3,piVar14 + 3);
if (-1 < (int)uVar12) {
piVar2 = piVar14 + 7;
if (uVar12 != 0) {
piVar2 = piVar14 + 5;
}
uVar12 = FUN_0040c9e4(param_1,3,param_3,param_4,piVar2);
}
goto LAB_0040d34c;
case 2:
uVar12 = FUN_0040d56c(param_1,param_2,param_3,param_4,piVar14 + 3);
goto LAB_0040d34c;
case 3:
do {
uVar12 = FUN_0040dc50(param_1,2,param_3,piVar14 + 3);
if (((int)uVar12 < 1) ||
(uVar12 = FUN_0040c9e4(param_1,2,param_3,param_4,piVar14 + 5), (int)uVar12 < 0))
goto LAB_0040cd74;
} while ((uVar12 == 4) || (2 < uVar12 - 1));
if (uVar12 == 3) goto switchD_0040ca90_default;
LAB_0040cd74:
sobj_free(param_4);
if ((uVar12 != 2) && (uVar12 != 4)) goto switchD_0040ca90_default;
uVar12 = 0;
goto LAB_0040d37c;
case 4:
local_38 = sobj_new();
local_34 = sobj_new();
iVar9 = sobj_new();
if (iVar9 == 0) {
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","INTERNAL ERROR");
client_printf(*param_1,"memory allocation failed !");
client_printf(*param_1,"\n!! %s <<<<<<<<<<<<<<<<<<<<<<<<<\n","INTERNAL ERROR");
uVar12 = 0xffffffff;
}
else {
iVar3 = FUN_0040d858(param_1,param_2,param_3,iVar9,piVar14 + 3);
uVar12 = 0xffffffff;
if (-1 < iVar3) {
local_3c = param_1[3];
param_1[3] = 0;
uVar10 = FUN_0040c950(param_1,param_3,"InDeX");
sobj_add_string(local_38,uVar10);
uVar10 = FUN_0040c950(param_1,param_3,"VaLuE");
sobj_add_string(local_34,uVar10);
iVar3 = 0;
iVar4 = sobj_get_length(iVar9);
if (iVar4 != 0) {
uVar10 = xmldb_anchor_node(local_3c);
uVar5 = sobj_get_string(iVar9);
iVar3 = xmldb_find_node(uVar10,uVar5,0,1);
}
local_40 = piVar14 + 5;
iVar4 = 0;
uVar12 = 0;
LAB_0040d0b4:
iVar13 = iVar3;
if (iVar13 != 0) {
iVar4 = iVar4 + 1;
sprintf(local_30,"%d",iVar4) //possible issue identified - semgrep
if (param_1[3] != 0) {
xmldb_del_anchor();
}
uVar10 = xmldb_set_anchor(iVar13);
param_1[3] = uVar10;
FUN_0040c984(param_1,param_3,"InDeX",local_30);
uVar10 = xmlnode_get_value(iVar13);
FUN_0040c984(param_1,param_3,"VaLuE",uVar10);
uVar12 = FUN_0040c9e4(param_1,4,param_3,param_4,local_40);
if (((((int)uVar12 < 0) || (uVar12 == 3)) || (uVar12 == 2)) ||
(iVar3 = iVar13, uVar12 == 1)) goto LAB_0040d0bc;
do {
iVar3 = xmlnode_get_sibling(iVar3);
if (iVar3 == 0) break;
pcVar8 = (char *)xmlnode_get_name(iVar3);
pcVar6 = (char *)xmlnode_get_name(iVar13);
iVar7 = strcmp(pcVar8,pcVar6);
} while (iVar7 != 0);
goto LAB_0040d0b4;
}
LAB_0040d0bc:
pcVar8 = (char *)sobj_get_string(local_38);
if (*pcVar8 == '\0') {
uVar10 = FUN_0040c86c(param_1,param_3,"InDeX");
FUN_0040995c(uVar10);
uVar10 = FUN_0040c86c(param_1,param_3,"VaLuE");
FUN_0040995c(uVar10);
}
else {
uVar10 = sobj_get_string(local_38,param_3);
FUN_0040c984(param_1,param_3,"InDeX",uVar10);
uVar10 = sobj_get_string(local_34);
FUN_0040c984(param_1,param_3,"VaLuE",uVar10);
}
if (param_1[3] != 0) {
xmldb_del_anchor();
}
param_1[3] = local_3c;
if ((uVar12 != 3) && ((sobj_free(param_4), uVar12 == 2 || (uVar12 == 4)))) {
uVar12 = 0;
}
}
}
if (local_38 != 0) {
sobj_del(local_38);
}
if (local_34 != 0) {
sobj_del(local_34);
}
if (iVar9 != 0) {
sobj_del(iVar9);
}
LAB_0040d34c:
if (uVar12 == 4) {
switchD_0040ca90_caseD_9:
uVar12 = -(uint)(2 < param_2 - 2U) | 4;
break;
}
switchD_0040ca90_default:
if (uVar12 != 0) break;
LAB_0040d37c:
piVar14 = (int *)*piVar14;
if (piVar14 == param_5) {
LAB_0040d3a4:
sobj_free(param_4);
return uVar12;
}
goto LAB_0040ca54;
case 5:
pcVar8 = (char *)sobj_new();
if (pcVar8 != (char *)0x0) {
iVar9 = FUN_0040d858(param_1,param_2,param_3,pcVar8,piVar14 + 3);
uVar12 = 0xffffffff;
if (-1 < iVar9) {
uVar10 = sobj_get_string(pcVar8);
client_puts(uVar10,*param_1);
uVar12 = 0;
}
goto LAB_0040d408;
}
LAB_0040d260:
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","INTERNAL ERROR");
client_printf(*param_1,"memory allocation failed !");
client_printf(*param_1,"\n!! %s <<<<<<<<<<<<<<<<<<<<<<<<<\n","INTERNAL ERROR");
uVar12 = 0xffffffff;
break;
case 6:
uVar12 = FUN_0040d858(param_1,param_2,param_3,param_4,piVar14 + 3);
if (-1 < (int)uVar12) {
uVar12 = 3;
}
break;
case 7:
uVar12 = 2;
break;
case 8:
uVar12 = 1;
break;
case 9:
goto switchD_0040ca90_caseD_9;
default:
goto switchD_0040ca90_default;
}
if (uVar12 == 3) {
return 3;
}
goto LAB_0040d3a4;
}