int FUN_00409a00(undefined4 *param_1,int param_2,int param_3)
{
int iVar1;
int iVar2;
int iVar3;
int *piVar4;
int iVar5;
undefined4 *puVar6;
undefined4 uVar7;
char *pcVar8;
int *piVar9;
undefined *puVar10;
int iVar11;
undefined4 uVar12;
int *piVar13;
int local_58;
int local_54;
undefined1 auStack_50 [8];
undefined4 *local_48;
undefined4 *local_44;
undefined4 *local_40;
undefined4 *local_3c;
undefined4 *local_38;
undefined4 *local_34;
undefined4 *local_30;
undefined4 *local_2c;
iVar1 = sobj_new();
iVar11 = 0;
iVar2 = sobj_new();
if (iVar1 != 0) {
FUN_00407458(param_1[1],iVar1,&local_54);
iVar11 = 0;
if (iVar2 != 0) {
local_30 = param_1 + 6;
local_34 = param_1 + 8;
local_38 = param_1 + 10;
local_3c = param_1 + 0xc;
local_40 = param_1 + 0xe;
local_44 = param_1 + 0x10;
local_48 = param_1 + 0x12;
local_2c = param_1 + 4;
while (iVar3 = sobj_empty(iVar1), iVar3 == 0) {
if ((param_3 != 0) && (iVar3 = sobj_strcmp(iVar1,param_3), iVar3 == 0)) goto LAB_0040a9b8;
if (local_54 != 0) {
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","SYNTAX ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","SYNTAX ERROR",param_1[2]);
uVar7 = *param_1;
pcVar8 = "should not see quotation mark here !";
goto LAB_00409bc0;
}
iVar11 = sobj_get_char(iVar1,0);
if (iVar11 == 0x24) {
pcVar8 = (char *)sobj_get_string(iVar1);
iVar3 = sobj_new();
if (iVar3 == 0) goto LAB_0040a514;
piVar4 = (int *)malloc(0x24) //possible issue identified - semgrep
if (piVar4 == (int *)0x0) {
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","INTERNAL ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","INTERNAL ERROR",param_1[2]);
client_printf(*param_1,"memory allocation failed !");
client_printf(*param_1,"\n!! %s <<<<<<<<<<<<<<<<<<<<<<<<<\n","INTERNAL ERROR");
}
else {
memset(piVar4,0,0x24) //possible issue identified - semgrep
piVar9 = piVar4 + 6;
piVar4[2] = 0;
piVar4[1] = (int)piVar4;
*piVar4 = (int)piVar4;
piVar4[7] = (int)piVar9;
piVar4[6] = (int)piVar9;
iVar11 = strcmp(pcVar8,"$_GLOBALS");
puVar6 = local_30;
if (((((iVar11 == 0) ||
(iVar11 = strcmp(pcVar8,"$_SERVER"), puVar6 = local_34, iVar11 == 0)) ||
(iVar11 = strcmp(pcVar8,"$_GET"), puVar6 = local_38, iVar11 == 0)) ||
((iVar11 = strcmp(pcVar8,"$_POST"), puVar6 = local_3c, iVar11 == 0 ||
(iVar11 = strcmp(pcVar8,"$_ENV"), puVar6 = local_40, iVar11 == 0)))) ||
((iVar11 = strcmp(pcVar8,"$_FILES"), puVar6 = local_44, iVar11 == 0 ||
(iVar11 = strcmp(pcVar8,"$_FILETYPES"), puVar6 = local_48, iVar11 == 0)))) {
sobj_free(iVar3);
FUN_00407458(param_1[1],iVar3,&local_58);
if (local_58 == 0) {
iVar11 = sobj_strcmp(iVar3,&DAT_00422728);
if (iVar11 == 0) {
sobj_free(iVar3);
FUN_00407458(param_1[1],iVar3,&local_58);
iVar11 = sobj_strdup(iVar3);
piVar4[4] = iVar11;
sobj_free(iVar3);
FUN_00407458(param_1[1],iVar3,&local_58);
if (local_58 != 0) goto LAB_0040a040;
iVar11 = sobj_strcmp(iVar3,"]");
if (iVar11 == 0) {
piVar4[5] = (int)puVar6;
goto LAB_00409f9c;
}
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","SYNTAX ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","SYNTAX ERROR",param_1[2]);
uVar7 = *param_1;
pcVar8 = "expecting \']\'";
}
else {
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","SYNTAX ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","SYNTAX ERROR",param_1[2]);
uVar7 = *param_1;
pcVar8 = "expecting \'[\'";
}
}
else {
LAB_0040a040:
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","SYNTAX ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","SYNTAX ERROR",param_1[2]);
uVar7 = *param_1;
pcVar8 = "should not see quotation mark here !";
}
LAB_0040a090:
client_printf(uVar7,pcVar8);
uVar7 = *param_1;
}
else {
pcVar8 = strdup(pcVar8 + 1) //possible issue identified - semgrep
piVar4[4] = (int)pcVar8;
piVar4[5] = 0;
LAB_00409f9c:
sobj_free(iVar3);
FUN_00407458(param_1[1],iVar3,&local_58);
iVar11 = sobj_empty(iVar3);
if (iVar11 != 0) {
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","SYNTAX ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","SYNTAX ERROR",param_1[2]);
uVar7 = *param_1;
pcVar8 = "unable to read token !";
goto LAB_0040a090;
}
if (local_58 != 0) goto LAB_0040a040;
iVar11 = sobj_strcmp(iVar3,&DAT_004227d0);
iVar5 = 1;
if (iVar11 == 0) {
LAB_0040a134:
piVar4[3] = iVar5;
LAB_0040a160:
sobj_del(iVar3);
goto LAB_0040a2cc;
}
iVar11 = sobj_strcmp(iVar3,&DAT_004227d4);
iVar5 = 2;
if (iVar11 == 0) goto LAB_0040a134;
iVar11 = sobj_strcmp(iVar3,&DAT_004227d8);
iVar5 = 3;
if (iVar11 == 0) goto LAB_0040a134;
iVar11 = sobj_strcmp(iVar3,&DAT_004227dc);
iVar5 = 4;
if (iVar11 == 0) goto LAB_0040a134;
iVar11 = sobj_strcmp(iVar3,"=");
if (iVar11 == 0) {
piVar4[3] = 0;
goto LAB_0040a160;
}
LAB_0040a19c:
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","SYNTAX ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","SYNTAX ERROR",param_1[2]);
uVar12 = *param_1;
uVar7 = sobj_get_string(iVar3);
client_printf(uVar12,"got an invalid token [%s]",uVar7);
uVar7 = *param_1;
}
client_printf(uVar7,"\n!! %s <<<<<<<<<<<<<<<<<<<<<<<<<\n","SYNTAX ERROR");
LAB_0040aa1c:
FUN_00409248(piVar4);
}
iVar11 = -1;
LAB_0040a360:
if (iVar3 != 0) {
LAB_0040a77c:
sobj_del(iVar3);
}
}
else {
iVar11 = sobj_strcmp(iVar1,"function");
if (iVar11 == 0) {
iVar11 = FUN_0040b870(param_1,param_2);
goto LAB_0040a974;
}
iVar11 = sobj_strcmp(iVar1,&DAT_004227ec);
if (iVar11 == 0) {
piVar4 = (int *)malloc(0x24) //possible issue identified - semgrep
if (piVar4 == (int *)0x0) {
LAB_0040a514:
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","INTERNAL ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","INTERNAL ERROR",param_1[2]);
client_printf(*param_1,"memory allocation failed !");
client_printf(*param_1,"\n!! %s <<<<<<<<<<<<<<<<<<<<<<<<<\n","INTERNAL ERROR");
iVar11 = -1;
goto LAB_0040a974;
}
memset(piVar4,0,0x24) //possible issue identified - semgrep
iVar11 = 5;
LAB_0040a2c0:
piVar9 = piVar4 + 3;
piVar4[2] = iVar11;
piVar4[4] = (int)piVar9;
piVar4[3] = (int)piVar9;
LAB_0040a2cc:
iVar3 = FUN_00407f84(param_1,piVar9);
if (iVar3 == 0) goto LAB_0040aa1c;
iVar11 = sobj_strcmp(iVar3,&DAT_0042335c);
if (iVar11 != 0) goto LAB_0040a19c;
puVar6 = *(undefined4 **)(param_2 + 4);
*piVar4 = param_2;
*(int **)(param_2 + 4) = piVar4;
*puVar6 = piVar4;
piVar4[1] = (int)puVar6;
iVar11 = 0;
goto LAB_0040a360;
}
iVar11 = sobj_strcmp(iVar1,"return");
if (iVar11 == 0) {
piVar4 = (int *)malloc(0x24) //possible issue identified - semgrep
if (piVar4 != (int *)0x0) {
memset(piVar4,0,0x24) //possible issue identified - semgrep
iVar11 = 6;
goto LAB_0040a2c0;
}
goto LAB_0040a514;
}
iVar11 = sobj_strcmp(iVar1,"break");
if (iVar11 == 0) {
uVar7 = 7;
}
else {
iVar11 = sobj_strcmp(iVar1,&DAT_00422804);
if (iVar11 == 0) {
uVar7 = 8;
}
else {
iVar11 = sobj_strcmp(iVar1,"continue");
if (iVar11 != 0) {
iVar11 = sobj_strcmp(iVar1,"require");
if (iVar11 == 0) {
uVar7 = 1;
LAB_0040a454:
iVar11 = FUN_0040b3ec(param_1,param_2,uVar7);
goto LAB_0040a974;
}
iVar11 = sobj_strcmp(iVar1,"include");
if (iVar11 == 0) {
uVar7 = 0;
goto LAB_0040a454;
}
sobj_free(iVar2);
FUN_00407458(param_1[1],iVar2,auStack_50);
iVar11 = sobj_strcmp(iVar2,&DAT_0042274c);
if (iVar11 == 0) {
iVar11 = sobj_strcmp(iVar1,&DAT_00422828);
if (iVar11 == 0) {
iVar11 = FUN_0040c158(param_1,param_2);
goto LAB_0040a974;
}
iVar11 = sobj_strcmp(iVar1,"while");
if (iVar11 != 0) {
iVar11 = sobj_strcmp(iVar1,"foreach");
if (iVar11 == 0) {
iVar11 = FUN_0040aa44(param_1,param_2);
}
else {
uVar7 = sobj_get_string(iVar1);
iVar11 = FUN_00407c68(uVar7);
if (iVar11 == 0) {
pcVar8 = (char *)sobj_get_string(iVar1);
puVar6 = (undefined4 *)param_1[4];
while( true ) {
if (puVar6 == local_2c) {
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n",
"SYNTAX ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","SYNTAX ERROR",param_1[2]);
uVar12 = *param_1;
uVar7 = sobj_get_string(iVar1);
pcVar8 = "unknown function name - [%s]";
goto LAB_0040a950;
}
iVar11 = strcmp(pcVar8,(char *)puVar6[2]);
if (iVar11 == 0) break;
puVar6 = (undefined4 *)*puVar6;
}
uVar7 = sobj_get_string(iVar1);
uVar12 = 0;
}
else {
uVar7 = sobj_get_string(iVar1);
uVar12 = *(undefined4 *)(iVar11 + 8);
}
iVar11 = FUN_004093c8(param_1,param_2,uVar7,uVar12);
}
goto LAB_0040a974;
}
iVar3 = sobj_new();
if (iVar3 == 0) goto LAB_0040a514;
piVar4 = (int *)malloc(0x24) //possible issue identified - semgrep
if (piVar4 == (int *)0x0) {
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","INTERNAL ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","INTERNAL ERROR",param_1[2]);
client_printf(*param_1,"memory allocation failed !");
client_printf(*param_1,"\n!! %s <<<<<<<<<<<<<<<<<<<<<<<<<\n","INTERNAL ERROR");
LAB_0040aa38:
iVar11 = -1;
}
else {
memset(piVar4,0,0x24) //possible issue identified - semgrep
piVar9 = piVar4 + 3;
piVar13 = piVar4 + 5;
piVar4[2] = 3;
piVar4[4] = (int)piVar9;
piVar4[3] = (int)piVar9;
piVar4[6] = (int)piVar13;
piVar4[5] = (int)piVar13;
iVar11 = FUN_00408e6c(param_1,piVar9);
if (iVar11 < 0) {
LAB_0040aa30:
FUN_00409248(piVar4);
goto LAB_0040aa38;
}
sobj_free(iVar3);
FUN_00407458(param_1[1],iVar3,&local_58);
if ((local_58 == 0) && (iVar11 = sobj_strcmp(iVar3,&DAT_00422834), iVar11 == 0))
{
puVar10 = &DAT_00422838;
}
else {
if (local_58 != 0) {
xs_ungetc(0x22,param_1[1]) //possible issue identified - semgrep
}
uVar7 = sobj_get_string(iVar3);
xs_ungets(uVar7,param_1[1]) //possible issue identified - semgrep
if (local_58 != 0) {
xs_ungetc(0x22,param_1[1]) //possible issue identified - semgrep
}
puVar10 = (undefined *)0x0;
}
iVar11 = FUN_00409a00(param_1,piVar13,puVar10);
if (iVar11 < 0) goto LAB_0040aa30;
puVar6 = *(undefined4 **)(param_2 + 4);
*piVar4 = param_2;
*(int **)(param_2 + 4) = piVar4;
*puVar6 = piVar4;
piVar4[1] = (int)puVar6;
iVar11 = 0;
}
goto LAB_0040a77c;
}
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","SYNTAX ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","SYNTAX ERROR",param_1[2]);
uVar12 = *param_1;
uVar7 = sobj_get_string(iVar1);
pcVar8 = "got an invalid token [%s]";
LAB_0040a950:
client_printf(uVar12,pcVar8,uVar7);
uVar7 = *param_1;
goto LAB_00409be0;
}
uVar7 = 9;
}
}
iVar11 = FUN_004078e8(param_1,param_2,uVar7);
}
LAB_0040a974:
if ((param_3 == 0) || (iVar11 < 0)) goto LAB_0040a9b8;
sobj_free(iVar1);
FUN_00407458(param_1[1],iVar1,&local_54);
}
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","SYNTAX ERROR");
client_printf(*param_1,"!! %s: File:[%s]\n","SYNTAX ERROR",param_1[2]);
uVar7 = *param_1;
pcVar8 = "unable to read token !";
LAB_00409bc0:
client_printf(uVar7,pcVar8);
uVar7 = *param_1;
LAB_00409be0:
iVar11 = -1;
client_printf(uVar7,"\n!! %s <<<<<<<<<<<<<<<<<<<<<<<<<\n","SYNTAX ERROR");
}
LAB_0040a9b8:
sobj_del(iVar1);
}
if (iVar2 != 0) {
sobj_del(iVar2);
}
return iVar11;
}