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