/* WARNING: Removing unreachable block (ram,0x0040dae8) */
int FUN_0040d858(undefined4 *param_1,undefined4 param_2,int param_3,undefined4 param_4,
undefined4 *param_5)
{
char *pcVar1;
int iVar2;
char *pcVar3;
uint uVar4;
int iVar5;
undefined4 uVar6;
uint uVar7;
undefined4 *puVar8;
int iVar9;
int iVar10;
code *pcVar11;
longlong lVar12;
longlong lVar13;
char acStack_a8 [128];
pcVar1 = (char *)sobj_new();
iVar10 = -1;
if (pcVar1 != (char *)0x0) {
sobj_free(param_4);
iVar10 = 0;
iVar9 = 0;
for (puVar8 = (undefined4 *)*param_5; puVar8 != param_5; puVar8 = (undefined4 *)*puVar8) {
sobj_free(pcVar1);
iVar2 = puVar8[2];
if (iVar2 == 1) {
iVar2 = puVar8[4];
if (puVar8[4] == 0) {
iVar2 = param_3;
}
uVar6 = FUN_0040c950(param_1,iVar2,puVar8[3]);
LAB_0040d96c:
sobj_add_string(pcVar1,uVar6);
}
else {
if (iVar2 == 0) {
uVar6 = puVar8[3];
goto LAB_0040d96c;
}
if (iVar2 == 2) {
iVar10 = FUN_0040d56c(param_1,param_2,param_3,pcVar1,puVar8 + 3);
}
}
if (iVar9 == 0) {
pcVar11 = sobj_move;
pcVar3 = pcVar1;
goto LAB_0040dbdc;
}
if (iVar9 == 0x2e) {
pcVar3 = (char *)sobj_get_string(pcVar1);
pcVar11 = sobj_add_string;
goto LAB_0040dbdc;
}
pcVar3 = (char *)sobj_get_string(param_4);
lVar12 = atoll(pcVar3);
iVar2 = (int)((ulonglong)lVar12 >> 0x20);
uVar4 = (uint)lVar12;
pcVar3 = (char *)sobj_get_string(pcVar1);
lVar13 = atoll(pcVar3);
iVar5 = (int)((ulonglong)lVar13 >> 0x20);
switch(iVar9 - 0x25U & 0xff) {
case 0:
pcVar11 = __moddi3;
LAB_0040db88:
lVar12 = (*pcVar11)(uVar4,iVar2,(int)lVar13,iVar5);
break;
default:
goto switchD_0040da60_caseD_1;
case 5:
lVar12 = lVar12 * lVar13;
break;
case 6:
lVar12 = lVar12 + lVar13;
break;
case 8:
uVar7 = uVar4 - (int)lVar13;
lVar12 = CONCAT44((iVar2 - iVar5) - (uint)(uVar4 < uVar7),uVar7);
break;
case 10:
if (0 < lVar13) {
pcVar11 = __divdi3;
goto LAB_0040db88;
}
strcpy(acStack_a8," !! DIV 0 ERROR !! ") //possible issue identified - semgrep
client_printf(*param_1,"\n!! %s >>>>>>>>>>>>>>>>>>>>>>>>>\n","INTERNAL ERROR");
client_printf(*param_1,"DIV 0 ERROR !!");
client_printf(*param_1,"\n!! %s <<<<<<<<<<<<<<<<<<<<<<<<<\n","INTERNAL ERROR");
iVar10 = -1;
goto switchD_0040da60_caseD_1;
}
sprintf(acStack_a8,"%lld",(int)lVar12,(int)((ulonglong)lVar12 >> 0x20)) //possible issue identified - semgrep
switchD_0040da60_caseD_1:
sobj_free(param_4);
pcVar11 = sobj_add_string;
pcVar3 = acStack_a8;
LAB_0040dbdc:
(*pcVar11)(param_4,pcVar3);
iVar9 = (int)*(char *)(puVar8 + 7);
if (iVar10 < 0) break;
}
sobj_del(pcVar1);
}
return iVar10;
}