
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void do_delete(NODE *symbol,int nsubs)

{
  char **ppcVar1;
  NODE *pNVar2;
  anon_union_4_4_7583dc62_for_l symbol_00;
  afunc_t p_Var3;
  size_t sVar4;
  code *pcVar5;
  _func_void_char_ptr_varargs *p_Var6;
  char *pcVar7;
  char *pcVar8;
  exp_node **ppeVar9;
  char *pcVar10;
  anon_union_4_4_7583dc62_for_l aVar11;
  size_t sVar12;
  int iVar13;
  int iVar14;
  NODE *local_38;
  anon_union_4_4_7583dc62_for_l local_34;
  
  local_34.lptr = symbol;
  if (nsubs == 0) {
    adjust_fcall_stack(symbol,0);
                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*((symbol->sub).nodep.l.lp)->clear)(symbol,(exp_node *)0x0);
    return;
  }
  iVar13 = nsubs;
  if (nsubs < 1) {
                    /* WARNING: Does not return */
    pcVar5 = (code *)invalidInstructionException();
    (*pcVar5)();
  }
  do {
    local_38 = stack_ptr[1 - iVar13].rptr;
    if (local_38->type == Node_val) {
      iVar14 = iVar13 + -1;
    }
    else {
      iVar14 = iVar13 * -4 + 8;
      while (iVar13 = iVar13 + -1, iVar13 != 0) {
        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);
        if (pNVar2->type == Node_val) {
          if (((pNVar2->flags & 4) == 0) ||
             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)
              ))) {
            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);
          }
          ppcVar1 = &(pNVar2->sub).nodep.name;
          *ppcVar1 = *ppcVar1 + -1;
          if (*ppcVar1 == (char *)0x0) {
            r_unref(pNVar2);
          }
        }
        iVar14 = iVar14 + 4;
      }
      set_loc("array.c",0x238);
      pcVar7 = array_vname(local_38);
      iVar13 = 0;
      pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
      iVar14 = -1;
      r_fatal(pcVar8,pcVar7);
    }
    ppeVar9 = (**(code **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38);
    if ((ppeVar9 == (exp_node **)0x0) || (symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0))
    {
      if (((byte)do_flags & 5) != 0) {
        if (((local_38->flags & 4) == 0) ||
           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)
            ))) {
          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);
        }
        set_loc("array.c",0x23f);
        p_Var6 = lintfunc;
        pcVar8 = array_vname(local_34.lptr);
        pcVar7 = (local_38->sub).val.sp;
        sVar12 = (local_38->sub).val.slen;
        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);
        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);
      }
      iVar14 = iVar13 * -4;
      do {
        iVar14 = iVar14 + 4;
        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);
        if (pNVar2->type == Node_val) {
          if (((pNVar2->flags & 4) == 0) ||
             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)
              ))) {
            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);
          }
          ppcVar1 = &(pNVar2->sub).nodep.name;
          *ppcVar1 = *ppcVar1 + -1;
          if (*ppcVar1 == (char *)0x0) {
            r_unref(pNVar2);
          }
        }
        iVar13 = iVar13 + -1;
      } while (0 < iVar13);
      return;
    }
    if (1 < iVar13) {
      if ((symbol_00.lptr)->type != Node_var_array) {
        iVar14 = iVar13 * -4;
        pcVar7 = CONVFMT;
        sVar12 = CONVFMTidx;
        do {
          iVar14 = iVar14 + 4;
          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);
          if (pNVar2->type == Node_val) {
            if (((pNVar2->flags & 4) == 0) ||
               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {
              (*format_val)(pcVar7,sVar12,pNVar2);
            }
            ppcVar1 = &(pNVar2->sub).nodep.name;
            *ppcVar1 = *ppcVar1 + -1;
            pcVar7 = CONVFMT;
            sVar12 = CONVFMTidx;
            if (*ppcVar1 == (char *)0x0) {
              r_unref(pNVar2);
              pcVar7 = CONVFMT;
              sVar12 = CONVFMTidx;
            }
          }
          iVar13 = iVar13 + -1;
        } while (iVar13 != 0);
        if (((local_38->flags & 4) == 0) ||
           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {
          local_38 = (*format_val)(pcVar7,sVar12,local_38);
        }
        set_loc("array.c",0x24d);
        pcVar7 = (local_38->sub).val.sp;
        sVar12 = (local_38->sub).val.slen;
        pcVar8 = array_vname(local_34.lptr);
        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);
        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);
        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');
        (local_38->sub).nodep.name = pcVar7;
        local_34.lptr = symbol_00.lptr;
        if (pcVar7 == (char *)0x0) {
          r_unref(local_38);
        }
LAB_00018fc5:
        if ((symbol_00.lptr)->type == Node_var_array) {
          aVar11.lptr = symbol_00.lptr;
          adjust_fcall_stack(symbol_00.lptr,nsubs);
          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)
                    (symbol_00.lptr,(exp_node *)0x0);
          free((symbol_00.lp)->exists);
          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;
          nextfree.lptr = symbol_00.lptr;
        }
        else {
          p_Var3 = (symbol_00.lp)->exists;
          (symbol_00.lp)->exists = p_Var3 + -1;
          if ((int)(p_Var3 + -1) < 1) {
            r_unref(symbol_00.lptr);
          }
        }
        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);
        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');
        (local_38->sub).nodep.name = pcVar7;
        if (pcVar7 == (char *)0x0) {
          r_unref(local_38);
        }
        if ((local_34.lp)->copy != (afunc_t)0x0) {
          return;
        }
        (local_34.lptr)->type = Node_var_array;
        (local_34.lp)->init = (afunc_t)0x0;
        (local_34.lp)->list = (afunc_t)0x0;
        (local_34.li)->opcode = Op_illegal;
        (local_34.lptr)->flags = 0;
        (local_34.li)->nexti = (exp_instruction *)&null_array_func;
        return;
      }
      pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');
      (local_38->sub).nodep.name = pcVar7;
      local_34.lptr = symbol_00.lptr;
      if (pcVar7 == (char *)0x0) {
        r_unref(local_38);
      }
    }
    iVar13 = iVar14;
    if (iVar14 < 1) goto LAB_00018fc5;
  } while( true );
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00018d20(int *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined *puVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  int *piVar10;
  int iVar11;
  int iVar12;
  int local_38;
  int *local_34;
  
  local_34 = param_1;
  if (param_2 == 0) {
    FUN_000170e0();
                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_1 + 0x14))();
    return;
  }
  if (param_2 < 1) {
                    /* WARNING: Does not return */
    pcVar3 = (code *)invalidInstructionException();
    (*pcVar3)();
  }
  do {
    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);
    if (*(int *)(local_38 + 0x28) == 1) {
      iVar12 = param_2 + -1;
    }
    else {
      iVar12 = param_2 * -4 + 8;
      while (param_2 = param_2 + -1, param_2 != 0) {
        iVar11 = *(int *)(DAT_000c13c8 + iVar12);
        if (*(int *)(iVar11 + 0x28) == 1) {
          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||
             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {
            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);
          }
          piVar1 = (int *)(iVar11 + 0x10);
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            FUN_000668b0(iVar11);
          }
        }
        iVar12 = iVar12 + 4;
      }
      FUN_000660d0("array.c",0x238);
      uVar4 = FUN_00018020(local_38);
      param_2 = 0;
      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
      iVar12 = -1;
      FUN_00066470(uVar5,uVar4);
    }
    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);
    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {
      if ((DAT_000c3760 & 5) != 0) {
        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||
           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {
          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);
        }
        FUN_000660d0("array.c",0x23f);
        puVar7 = PTR_FUN_000bf8e8;
        uVar8 = FUN_00018020(local_34);
        uVar4 = *(undefined4 *)(local_38 + 8);
        uVar5 = *(undefined4 *)(local_38 + 0xc);
        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);
        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);
      }
      iVar12 = param_2 * -4;
      do {
        iVar12 = iVar12 + 4;
        iVar11 = *(int *)(DAT_000c13c8 + iVar12);
        if (*(int *)(iVar11 + 0x28) == 1) {
          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||
             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {
            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);
          }
          piVar1 = (int *)(iVar11 + 0x10);
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            FUN_000668b0(iVar11);
          }
        }
        param_2 = param_2 + -1;
      } while (0 < param_2);
      return;
    }
    if (1 < param_2) {
      if (piVar1[10] != 5) {
        iVar12 = param_2 * -4;
        puVar7 = PTR_DAT_000bf8f0;
        iVar11 = DAT_000c4994;
        do {
          iVar12 = iVar12 + 4;
          iVar2 = *(int *)(DAT_000c13c8 + iVar12);
          if (*(int *)(iVar2 + 0x28) == 1) {
            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||
               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {
              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);
            }
            piVar10 = (int *)(iVar2 + 0x10);
            *piVar10 = *piVar10 + -1;
            puVar7 = PTR_DAT_000bf8f0;
            iVar11 = DAT_000c4994;
            if (*piVar10 == 0) {
              FUN_000668b0(iVar2);
              puVar7 = PTR_DAT_000bf8f0;
              iVar11 = DAT_000c4994;
            }
          }
          param_2 = param_2 + -1;
        } while (param_2 != 0);
        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||
           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {
          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);
        }
        FUN_000660d0("array.c",0x24d);
        uVar4 = *(undefined4 *)(local_38 + 8);
        uVar5 = *(undefined4 *)(local_38 + 0xc);
        uVar8 = FUN_00018020(local_34);
        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);
        FUN_00066470(uVar9,uVar8,uVar5,uVar4);
        iVar12 = *(int *)(local_38 + 0x10) + -1;
        *(int *)(local_38 + 0x10) = iVar12;
        local_34 = piVar1;
        if (iVar12 == 0) {
          FUN_000668b0(local_38);
        }
LAB_00018fc5:
        if (piVar1[10] == 5) {
          piVar10 = (int *)FUN_000170e0();
          (**(code **)(*piVar10 + 0x14))(piVar1,0);
          free((void *)piVar1[4]);
          *piVar1 = (int)DAT_000bf900;
          DAT_000bf900 = piVar1;
        }
        else {
          iVar12 = piVar1[4];
          piVar1[4] = iVar12 + -1;
          if (iVar12 + -1 < 1) {
            FUN_000668b0(piVar1);
          }
        }
        (**(code **)(*local_34 + 0x18))(local_34,local_38);
        iVar12 = *(int *)(local_38 + 0x10) + -1;
        *(int *)(local_38 + 0x10) = iVar12;
        if (iVar12 == 0) {
          FUN_000668b0(local_38);
        }
        if (local_34[8] != 0) {
          return;
        }
        local_34[10] = 5;
        local_34[1] = 0;
        local_34[7] = 0;
        local_34[5] = 0;
        local_34[0xb] = 0;
        *local_34 = (int)&DAT_000bd4e0;
        return;
      }
      iVar11 = *(int *)(local_38 + 0x10) + -1;
      *(int *)(local_38 + 0x10) = iVar11;
      local_34 = piVar1;
      if (iVar11 == 0) {
        FUN_000668b0(local_38);
      }
    }
    param_2 = iVar12;
    if (iVar12 < 1) goto LAB_00018fc5;
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0001a5ee
ADD EAX,0xa5fbb
SUB ESP,0x2c
MOV ESI,dword ptr [ESP + 0x44]
MOV ECX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP],EAX
CMP ESI,0x0
MOV dword ptr [ESP + 0x8],ECX
MOV dword ptr [ESP + 0x1c],ESI
JZ 0x00019248
LEA EBP,[EAX + 0x26e4]
LEA EAX,[EAX + 0x5cb0]
MOV dword ptr [ESP + 0x10],EAX
JLE 0x0001926f
NOP
LEA ESI,[ESI]
MOV EDI,ESI
MOV EAX,dword ptr [EBP]
NEG EDI
SHL EDI,0x2
MOV EAX,dword ptr [EAX + EDI*0x1 + 0x4]
CMP dword ptr [EAX + 0x28],0x1
MOV dword ptr [ESP + 0x4],EAX
JZ 0x00019090
MOV EAX,dword ptr [ESP]
ADD EDI,0x8
LEA EAX,[EAX + 0xc0c]
MOV dword ptr [ESP + 0xc],EAX
JMP 0x00018da3
ADD EDI,0x4
SUB ESI,0x1
JZ 0x00018e00
MOV EAX,dword ptr [EBP]
MOV EBX,dword ptr [EAX + EDI*0x1]
CMP dword ptr [EBX + 0x28],0x1
JNZ 0x00018da0
TEST byte ptr [EBX + 0x2c],0x4
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [ECX]
JNZ 0x000190c8
SUB ESP,0x4
PUSH EBX
PUSH EAX
PUSH EDX
MOV EAX,dword ptr [ESP + 0x10]
LEA EAX,[EAX + 0xc60]
CALL dword ptr [EAX]
ADD ESP,0x10
SUB dword ptr [EBX + 0x10],0x1
JNZ 0x00018da0
SUB ESP,0xc
PUSH EBX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000668b0
ADD ESP,0x10
JMP 0x00018da0
SUB ESP,0x8
PUSH 0x238
MOV EDI,dword ptr [ESP + 0xc]
LEA EAX,[EDI + 0xfffd7092]
MOV EBX,EDI
PUSH EAX
CALL 0x000660d0
POP EAX
PUSH dword ptr [ESP + 0x10]
CALL 0x00018020
MOV ESI,EAX
LEA EAX,[EDI + 0xfffc916c]
ADD ESP,0xc
PUSH 0x5
XOR EDI,EDI
PUSH EAX
PUSH 0x0
CALL 0x00013f40
POP EDX
POP ECX
PUSH ESI
PUSH EAX
MOV ESI,0xffffffff
CALL 0x00066470
ADD ESP,0x10
SUB ESP,0x8
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EDX]
PUSH dword ptr [ESP + 0xc]
PUSH EDX
CALL dword ptr [EAX + 0x10]
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000190e8
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x000190e8
CMP EDI,0x1
JLE 0x0001907d
CMP dword ptr [EAX + 0x28],0x5
JZ 0x00019060
MOV EBX,dword ptr [ESP]
MOV dword ptr [ESP + 0x18],EAX
MOV EDX,EDI
NEG EDX
LEA ESI,[EDX*0x4 + 0x4]
LEA EAX,[EBX + 0x5cb0]
LEA EDX,[EBX + 0xc60]
MOV dword ptr [ESP + 0xc],EAX
MOV ECX,dword ptr [EAX]
LEA EAX,[EBX + 0xc0c]
MOV dword ptr [ESP + 0x14],EDX
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EAX]
JMP 0x00018ec8
ADD ESI,0x4
SUB EDI,0x1
JZ 0x00018f0b
MOV EDX,dword ptr [EBP]
MOV EBX,dword ptr [EDX + ESI*0x1]
CMP dword ptr [EBX + 0x28],0x1
JNZ 0x00018ec0
TEST byte ptr [EBX + 0x2c],0x4
JNZ 0x00019228
SUB ESP,0x4
PUSH EBX
PUSH ECX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x24]
CALL dword ptr [EAX]
ADD ESP,0x10
SUB dword ptr [EBX + 0x10],0x1
JZ 0x000190a0
MOV EAX,dword ptr [ESP + 0xc]
ADD ESI,0x4
SUB EDI,0x1
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
JNZ 0x00018ec8
MOV ESI,dword ptr [ESP + 0x4]
TEST byte ptr [ESI + 0x2c],0x4
JNZ 0x000192d0
SUB ESP,0x4
PUSH dword ptr [ESP + 0x8]
PUSH ECX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x10]
LEA EAX,[EAX + 0xc60]
CALL dword ptr [EAX]
MOV dword ptr [ESP + 0x14],EAX
ADD ESP,0x10
SUB ESP,0x8
PUSH 0x24d
MOV ECX,dword ptr [ESP + 0xc]
LEA EAX,[ECX + 0xfffd7092]
MOV EBX,ECX
PUSH EAX
MOV dword ptr [ESP + 0x10],ECX
CALL 0x000660d0
MOV EDX,dword ptr [ESP + 0x14]
POP ECX
MOV EBP,dword ptr [EDX + 0x8]
MOV EDI,dword ptr [EDX + 0xc]
PUSH dword ptr [ESP + 0x14]
CALL 0x00018020
ADD ESP,0xc
MOV ESI,EAX
PUSH 0x5
MOV ECX,dword ptr [ESP + 0x8]
LEA EAX,[ECX + 0xfffc9248]
MOV EBX,ECX
PUSH EAX
PUSH 0x0
MOV dword ptr [ESP + 0x10],ECX
CALL 0x00013f40
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EAX
MOV ESI,dword ptr [ESP + 0x20]
MOV EBX,ESI
CALL 0x00066470
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EDX + 0x10]
MOV dword ptr [ESP + 0x28],EAX
SUB EAX,0x1
ADD ESP,0x20
TEST EAX,EAX
MOV dword ptr [EDX + 0x10],EAX
JNZ 0x00019280
SUB ESP,0xc
PUSH EDX
CALL 0x000668b0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x18]
CMP dword ptr [EAX + 0x28],0x5
JZ 0x0001928d
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ECX + 0x10]
MOV dword ptr [ESP + 0xc],EAX
SUB EAX,0x1
TEST EAX,EAX
MOV dword ptr [ECX + 0x10],EAX
JLE 0x00019333
SUB ESP,0x8
MOV ECX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ECX]
PUSH ESI
PUSH ECX
CALL dword ptr [EAX + 0x18]
MOV EAX,dword ptr [ESI + 0x10]
MOV dword ptr [ESP + 0x1c],EAX
SUB EAX,0x1
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [ESI + 0x10],EAX
JZ 0x00019302
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ECX + 0x20]
TEST EAX,EAX
JNZ 0x0001904f
MOV EAX,dword ptr [ESP]
MOV dword ptr [ECX + 0x28],0x5
MOV dword ptr [ECX + 0x4],0x0
MOV dword ptr [ECX + 0x1c],0x0
MOV dword ptr [ECX + 0x14],0x0
MOV dword ptr [ECX + 0x2c],0x0
LEA EAX,[EAX + 0xffffe7fc]
MOV dword ptr [ECX],EAX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ECX + 0x10]
MOV dword ptr [ESP + 0x8],EDX
SUB EDX,0x1
MOV dword ptr [ESP + 0x8],EAX
TEST EDX,EDX
MOV dword ptr [ECX + 0x10],EDX
JZ 0x0001934b
TEST ESI,ESI
JG 0x00018d68
MOV dword ptr [ESP + 0x18],EAX
JMP 0x00018fc5
MOV EDI,ESI
SUB ESI,0x1
JMP 0x00018e4c
SUB ESP,0xc
PUSH EBX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000668b0
MOV EAX,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x20]
ADD ESP,0x10
MOV EAX,dword ptr [EAX]
JMP 0x00018ec0
MOV ECX,dword ptr [EBX + 0x14]
CMP EAX,ECX
JZ 0x00018ddf
CMP ECX,-0x1
JNZ 0x00018dca
JMP 0x00018ddf
MOV ECX,dword ptr [ESP]
LEA EAX,[ECX + 0x4a7c]
TEST byte ptr [EAX],0x5
JZ 0x0001919f
MOV ESI,dword ptr [ESP + 0x4]
LEA EAX,[ECX + 0x5cb0]
LEA EDX,[ECX + 0xc0c]
TEST byte ptr [ESI + 0x2c],0x4
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EDX]
JNZ 0x0001931a
SUB ESP,0x4
PUSH dword ptr [ESP + 0x8]
PUSH EAX
PUSH EDX
MOV EAX,dword ptr [ESP + 0x10]
LEA EAX,[EAX + 0xc60]
CALL dword ptr [EAX]
MOV dword ptr [ESP + 0x14],EAX
ADD ESP,0x10
SUB ESP,0x8
PUSH 0x23f
MOV ESI,dword ptr [ESP + 0xc]
LEA EAX,[ESI + 0xfffd7092]
MOV EBX,ESI
PUSH EAX
CALL 0x000660d0
LEA EAX,[ESI + 0xc04]
MOV ECX,dword ptr [EAX]
MOV dword ptr [ESP + 0x1c],ECX
POP ESI
PUSH dword ptr [ESP + 0x14]
CALL 0x00018020
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [EAX + 0x8]
MOV EDX,dword ptr [EAX + 0xc]
LEA EAX,[EBX + 0xfffc9220]
MOV dword ptr [ESP + 0x14],ECX
MOV dword ptr [ESP + 0x18],EDX
ADD ESP,0xc
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00013f40
PUSH ESI
PUSH dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x20]
PUSH EDX
PUSH EAX
MOV ECX,dword ptr [ESP + 0x2c]
CALL ECX
ADD ESP,0x20
MOV EAX,EDI
NEG EAX
LEA ESI,[EAX*0x4 + 0x4]
MOV EAX,dword ptr [ESP]
LEA ECX,[EAX + 0x5cb0]
LEA EAX,[EAX + 0xc0c]
MOV dword ptr [ESP + 0x4],ECX
MOV dword ptr [ESP + 0x8],EAX
JMP 0x000191d6
SUB EDI,0x1
ADD ESI,0x4
TEST EDI,EDI
JLE 0x0001904f
MOV EAX,dword ptr [EBP]
MOV EBX,dword ptr [EAX + ESI*0x1]
CMP dword ptr [EBX + 0x28],0x1
JNZ 0x000191c8
TEST byte ptr [EBX + 0x2c],0x4
MOV EAX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [ECX]
JNZ 0x000192e9
SUB ESP,0x4
PUSH EBX
PUSH EAX
PUSH EDX
MOV EAX,dword ptr [ESP + 0x10]
LEA EAX,[EAX + 0xc60]
CALL dword ptr [EAX]
ADD ESP,0x10
SUB dword ptr [EBX + 0x10],0x1
JNZ 0x000191c8
SUB ESP,0xc
PUSH EBX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000668b0
ADD ESP,0x10
JMP 0x000191c8
MOV EDX,dword ptr [EBX + 0x14]
CMP EDX,-0x1
JZ 0x00018eed
CMP EDX,ECX
JNZ 0x00018ede
JMP 0x00018eed
MOV ESI,dword ptr [ESP + 0x8]
XOR EDX,EDX
MOV EAX,ESI
CALL 0x000170e0
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x40],ESI
MOV dword ptr [ESP + 0x44],0x0
MOV EAX,dword ptr [EAX + 0x14]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
JMP EAX
MOV EAX,[0x00000028]
UD2
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x00018fc5
MOV EDX,dword ptr [ESP + 0x1c]
MOV ESI,EAX
CALL 0x000170e0
MOV EAX,dword ptr [EAX]
SUB ESP,0x8
PUSH 0x0
PUSH ESI
CALL dword ptr [EAX + 0x14]
POP EDX
PUSH dword ptr [ESI + 0x10]
MOV EDI,dword ptr [ESP + 0x10]
MOV EBX,EDI
CALL 0x00013e50
LEA EAX,[EDI + 0xc1c]
ADD ESP,0x10
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESI],EDX
MOV dword ptr [EAX],ESI
JMP 0x00018fec
MOV EDX,dword ptr [ESI + 0x14]
CMP EDX,-0x1
JZ 0x00018f35
CMP EDX,ECX
JNZ 0x00018f19
JMP 0x00018f35
MOV ECX,dword ptr [EBX + 0x14]
CMP EAX,ECX
JZ 0x0001920d
CMP ECX,-0x1
JNZ 0x000191f8
JMP 0x0001920d
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000668b0
ADD ESP,0x10
JMP 0x00019016
MOV ECX,dword ptr [ESI + 0x14]
CMP ECX,-0x1
JZ 0x00019134
CMP EAX,ECX
JNZ 0x00019118
JMP 0x00019134
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000668b0
ADD ESP,0x10
JMP 0x00018fec
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000668b0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
JMP 0x0001907d
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00018d20(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int *piVar10;\n  int iVar11;\n  int iVar12;\n  int local_38;\n  int *local_34;\n  \n  local_34 = param_1;\n  if (param_2 == 0) {\n    FUN_000170e0();\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    /* WARNING: Does not return */\n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }\n  do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );\n}\n\n" comment (function_definition "void FUN_00018d20(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int *piVar10;\n  int iVar11;\n  int iVar12;\n  int local_38;\n  int *local_34;\n  \n  local_34 = param_1;\n  if (param_2 == 0) {\n    FUN_000170e0();\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    /* WARNING: Does not return */\n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }\n  do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00018d20(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int *piVar10;\n  int iVar11;\n  int iVar12;\n  int local_38;\n  int *local_34;\n  \n  local_34 = param_1;\n  if (param_2 == 0) {\n    FUN_000170e0();\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    /* WARNING: Does not return */\n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }\n  do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (expression_statement "local_34 = param_1;" (assignment_expression "local_34 = param_1" identifier = identifier) ;) (if_statement "if (param_2 == 0) {\n    FUN_000170e0();\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_000170e0();\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }" { (expression_statement "FUN_000170e0();" (call_expression "FUN_000170e0()" identifier (argument_list "()" ( ))) ;) comment comment (expression_statement "(**(code **)(*param_1 + 0x14))();" (call_expression "(**(code **)(*param_1 + 0x14))()" (parenthesized_expression "(**(code **)(*param_1 + 0x14))" ( (pointer_expression "**(code **)(*param_1 + 0x14)" * (pointer_expression "*(code **)(*param_1 + 0x14)" * (cast_expression "(code **)(*param_1 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x14)" ( (binary_expression "*param_1 + 0x14" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_2 < 1) {\n                    /* WARNING: Does not return */\n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }" if (parenthesized_expression "(param_2 < 1)" ( (binary_expression "param_2 < 1" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Does not return */\n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }" { comment (expression_statement "pcVar3 = (code *)invalidInstructionException();" (assignment_expression "pcVar3 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) })) (do_statement "do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );" do (compound_statement "{\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  }" { (expression_statement "local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);" (assignment_expression "local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4)" identifier = (pointer_expression "*(int *)(DAT_000c13c8 + 4 + param_2 * -4)" * (cast_expression "(int *)(DAT_000c13c8 + 4 + param_2 * -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c8 + 4 + param_2 * -4)" ( (binary_expression "DAT_000c13c8 + 4 + param_2 * -4" (binary_expression "DAT_000c13c8 + 4" identifier + number_literal) + (binary_expression "param_2 * -4" identifier * number_literal)) ))))) ;) (if_statement "if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }" if (parenthesized_expression "(*(int *)(local_38 + 0x28) == 1)" ( (binary_expression "*(int *)(local_38 + 0x28) == 1" (pointer_expression "*(int *)(local_38 + 0x28)" * (cast_expression "(int *)(local_38 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x28)" ( (binary_expression "local_38 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar12 = param_2 + -1;\n    }" { (expression_statement "iVar12 = param_2 + -1;" (assignment_expression "iVar12 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }" else (compound_statement "{\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }" { (expression_statement "iVar12 = param_2 * -4 + 8;" (assignment_expression "iVar12 = param_2 * -4 + 8" identifier = (binary_expression "param_2 * -4 + 8" (binary_expression "param_2 * -4" identifier * number_literal) + number_literal)) ;) (while_statement "while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }" while (parenthesized_expression "(param_2 = param_2 + -1, param_2 != 0)" ( (comma_expression "param_2 = param_2 + -1, param_2 != 0" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) , (binary_expression "param_2 != 0" identifier != number_literal)) )) (compound_statement "{\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }" { (expression_statement "iVar11 = *(int *)(DAT_000c13c8 + iVar12);" (assignment_expression "iVar11 = *(int *)(DAT_000c13c8 + iVar12)" identifier = (pointer_expression "*(int *)(DAT_000c13c8 + iVar12)" * (cast_expression "(int *)(DAT_000c13c8 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c8 + iVar12)" ( (binary_expression "DAT_000c13c8 + iVar12" identifier + identifier) ))))) ;) (if_statement "if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" if (parenthesized_expression "(*(int *)(iVar11 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar11 + 0x28) == 1" (pointer_expression "*(int *)(iVar11 + 0x28)" * (cast_expression "(int *)(iVar11 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x28)" ( (binary_expression "iVar11 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" { (if_statement "if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" if (parenthesized_expression "(((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))))" ( (binary_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" ( (parenthesized_expression "(DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))" ( (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)" (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14)" identifier != (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) ))))) && (parenthesized_expression "(*(int *)(iVar11 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar11 + 0x14) != -1" (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" { (expression_statement "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);" (call_expression "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "piVar1 = (int *)(iVar11 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar11 + 0x10)" identifier = (cast_expression "(int *)(iVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n            FUN_000668b0(iVar11);\n          }" { (expression_statement "FUN_000668b0(iVar11);" (call_expression "FUN_000668b0(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) })) })) (expression_statement "iVar12 = iVar12 + 4;" (assignment_expression "iVar12 = iVar12 + 4" identifier = (binary_expression "iVar12 + 4" identifier + number_literal)) ;) })) (expression_statement "FUN_000660d0("array.c",0x238);" (call_expression "FUN_000660d0("array.c",0x238)" identifier (argument_list "("array.c",0x238)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar4 = FUN_00018020(local_38);" (assignment_expression "uVar4 = FUN_00018020(local_38)" identifier = (call_expression "FUN_00018020(local_38)" identifier (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "iVar12 = -1;" (assignment_expression "iVar12 = -1" identifier = number_literal) ;) (expression_statement "FUN_00066470(uVar5,uVar4);" (call_expression "FUN_00066470(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) }))) (expression_statement "puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);" (assignment_expression "puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38)" identifier = (cast_expression "(undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*local_34 + 0x10))(local_34,local_38)" (parenthesized_expression "(**(code **)(*local_34 + 0x10))" ( (pointer_expression "**(code **)(*local_34 + 0x10)" * (pointer_expression "*(code **)(*local_34 + 0x10)" * (cast_expression "(code **)(*local_34 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_34 + 0x10)" ( (binary_expression "*local_34 + 0x10" (pointer_expression "*local_34" * identifier) + number_literal) ))))) )) (argument_list "(local_34,local_38)" ( identifier , identifier ))))) ;) (if_statement "if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }" if (parenthesized_expression "((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0))" ( (binary_expression "(puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)" (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)" ( (comma_expression "piVar1 = (int *)*puVar6, piVar1 == (int *)0x0" (assignment_expression "piVar1 = (int *)*puVar6" identifier = (cast_expression "(int *)*puVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) , (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }" { (if_statement "if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }" if (parenthesized_expression "((DAT_000c3760 & 5) != 0)" ( (binary_expression "(DAT_000c3760 & 5) != 0" (parenthesized_expression "(DAT_000c3760 & 5)" ( (binary_expression "DAT_000c3760 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }" { (if_statement "if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }" if (parenthesized_expression "(((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14)))))" ( (binary_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))" (parenthesized_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(local_38 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(local_38 + 0x2c) & 4)" ( (binary_expression "*(byte *)(local_38 + 0x2c) & 4" (pointer_expression "*(byte *)(local_38 + 0x2c)" * (cast_expression "(byte *)(local_38 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x2c)" ( (binary_expression "local_38 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))" ( (parenthesized_expression "(*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14)))" ( (binary_expression "*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))" (binary_expression "*(int *)(local_38 + 0x14) != -1" (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(DAT_000c4994 != *(int *)(local_38 + 0x14))" ( (binary_expression "DAT_000c4994 != *(int *)(local_38 + 0x14)" identifier != (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }" { (expression_statement "local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);" (assignment_expression "local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000bf8f0,DAT_000c4994,local_38)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "FUN_000660d0("array.c",0x23f);" (call_expression "FUN_000660d0("array.c",0x23f)" identifier (argument_list "("array.c",0x23f)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "puVar7 = PTR_FUN_000bf8e8;" (assignment_expression "puVar7 = PTR_FUN_000bf8e8" identifier = identifier) ;) (expression_statement "uVar8 = FUN_00018020(local_34);" (assignment_expression "uVar8 = FUN_00018020(local_34)" identifier = (call_expression "FUN_00018020(local_34)" identifier (argument_list "(local_34)" ( identifier )))) ;) (expression_statement "uVar4 = *(undefined4 *)(local_38 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(local_38 + 8)" identifier = (pointer_expression "*(undefined4 *)(local_38 + 8)" * (cast_expression "(undefined4 *)(local_38 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 8)" ( (binary_expression "local_38 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(local_38 + 0xc);" (assignment_expression "uVar5 = *(undefined4 *)(local_38 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(local_38 + 0xc)" * (cast_expression "(undefined4 *)(local_38 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0xc)" ( (binary_expression "local_38 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);" (assignment_expression "uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5)" identifier = (call_expression "dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5)" identifier (argument_list "(0,"delete: index `%.*s\' not in array `%s\'",5)" ( number_literal , (string_literal ""delete: index `%.*s\' not in array `%s\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "(*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);" (call_expression "(*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8)" (parenthesized_expression "(*(code *)puVar7)" ( (pointer_expression "*(code *)puVar7" * (cast_expression "(code *)puVar7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,uVar5,uVar4,uVar8)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "iVar12 = param_2 * -4;" (assignment_expression "iVar12 = param_2 * -4" identifier = (binary_expression "param_2 * -4" identifier * number_literal)) ;) (do_statement "do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);" do (compound_statement "{\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      }" { (expression_statement "iVar12 = iVar12 + 4;" (assignment_expression "iVar12 = iVar12 + 4" identifier = (binary_expression "iVar12 + 4" identifier + number_literal)) ;) (expression_statement "iVar11 = *(int *)(DAT_000c13c8 + iVar12);" (assignment_expression "iVar11 = *(int *)(DAT_000c13c8 + iVar12)" identifier = (pointer_expression "*(int *)(DAT_000c13c8 + iVar12)" * (cast_expression "(int *)(DAT_000c13c8 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c8 + iVar12)" ( (binary_expression "DAT_000c13c8 + iVar12" identifier + identifier) ))))) ;) (if_statement "if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" if (parenthesized_expression "(*(int *)(iVar11 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar11 + 0x28) == 1" (pointer_expression "*(int *)(iVar11 + 0x28)" * (cast_expression "(int *)(iVar11 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x28)" ( (binary_expression "iVar11 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" { (if_statement "if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" if (parenthesized_expression "(((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))))" ( (binary_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" ( (parenthesized_expression "(DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))" ( (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)" (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14)" identifier != (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) ))))) && (parenthesized_expression "(*(int *)(iVar11 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar11 + 0x14) != -1" (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" { (expression_statement "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);" (call_expression "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "piVar1 = (int *)(iVar11 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar11 + 0x10)" identifier = (cast_expression "(int *)(iVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n            FUN_000668b0(iVar11);\n          }" { (expression_statement "FUN_000668b0(iVar11);" (call_expression "FUN_000668b0(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) })) })) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }" if (parenthesized_expression "(1 < param_2)" ( (binary_expression "1 < param_2" number_literal < identifier) )) (compound_statement "{\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }" { (if_statement "if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }" if (parenthesized_expression "(piVar1[10] != 5)" ( (binary_expression "piVar1[10] != 5" (subscript_expression "piVar1[10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }" { (expression_statement "iVar12 = param_2 * -4;" (assignment_expression "iVar12 = param_2 * -4" identifier = (binary_expression "param_2 * -4" identifier * number_literal)) ;) (expression_statement "puVar7 = PTR_DAT_000bf8f0;" (assignment_expression "puVar7 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar11 = DAT_000c4994;" (assignment_expression "iVar11 = DAT_000c4994" identifier = identifier) ;) (do_statement "do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);" do (compound_statement "{\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        }" { (expression_statement "iVar12 = iVar12 + 4;" (assignment_expression "iVar12 = iVar12 + 4" identifier = (binary_expression "iVar12 + 4" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(DAT_000c13c8 + iVar12);" (assignment_expression "iVar2 = *(int *)(DAT_000c13c8 + iVar12)" identifier = (pointer_expression "*(int *)(DAT_000c13c8 + iVar12)" * (cast_expression "(int *)(DAT_000c13c8 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c8 + iVar12)" ( (binary_expression "DAT_000c13c8 + iVar12" identifier + identifier) ))))) ;) (if_statement "if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }" if (parenthesized_expression "(*(int *)(iVar2 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar2 + 0x28) == 1" (pointer_expression "*(int *)(iVar2 + 0x28)" * (cast_expression "(int *)(iVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }" { (if_statement "if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }" if (parenthesized_expression "(((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11))))" ( (binary_expression "((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))" (parenthesized_expression "((*(byte *)(iVar2 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar2 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar2 + 0x2c)" * (cast_expression "(byte *)(iVar2 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))" ( (parenthesized_expression "(*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11))" ( (binary_expression "*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)" (binary_expression "*(int *)(iVar2 + 0x14) != -1" (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(iVar2 + 0x14) != iVar11)" ( (binary_expression "*(int *)(iVar2 + 0x14) != iVar11" (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) != identifier) ))) )) ))) )) (compound_statement "{\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }" { (expression_statement "(*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);" (call_expression "(*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar7,iVar11,iVar2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "piVar10 = (int *)(iVar2 + 0x10);" (assignment_expression "piVar10 = (int *)(iVar2 + 0x10)" identifier = (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar10 = *piVar10 + -1;" (assignment_expression "*piVar10 = *piVar10 + -1" (pointer_expression "*piVar10" * identifier) = (binary_expression "*piVar10 + -1" (pointer_expression "*piVar10" * identifier) + number_literal)) ;) (expression_statement "puVar7 = PTR_DAT_000bf8f0;" (assignment_expression "puVar7 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar11 = DAT_000c4994;" (assignment_expression "iVar11 = DAT_000c4994" identifier = identifier) ;) (if_statement "if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }" if (parenthesized_expression "(*piVar10 == 0)" ( (binary_expression "*piVar10 == 0" (pointer_expression "*piVar10" * identifier) == number_literal) )) (compound_statement "{\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }" { (expression_statement "FUN_000668b0(iVar2);" (call_expression "FUN_000668b0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "puVar7 = PTR_DAT_000bf8f0;" (assignment_expression "puVar7 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar11 = DAT_000c4994;" (assignment_expression "iVar11 = DAT_000c4994" identifier = identifier) ;) })) })) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) ;) (if_statement "if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }" if (parenthesized_expression "(((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11))))" ( (binary_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))" (parenthesized_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(local_38 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(local_38 + 0x2c) & 4)" ( (binary_expression "*(byte *)(local_38 + 0x2c) & 4" (pointer_expression "*(byte *)(local_38 + 0x2c)" * (cast_expression "(byte *)(local_38 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x2c)" ( (binary_expression "local_38 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))" ( (parenthesized_expression "(*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11))" ( (binary_expression "*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)" (binary_expression "*(int *)(local_38 + 0x14) != -1" (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(local_38 + 0x14) != iVar11)" ( (binary_expression "*(int *)(local_38 + 0x14) != iVar11" (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) )))) != identifier) ))) )) ))) )) (compound_statement "{\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }" { (expression_statement "local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);" (assignment_expression "local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar7,iVar11,local_38)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "FUN_000660d0("array.c",0x24d);" (call_expression "FUN_000660d0("array.c",0x24d)" identifier (argument_list "("array.c",0x24d)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar4 = *(undefined4 *)(local_38 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(local_38 + 8)" identifier = (pointer_expression "*(undefined4 *)(local_38 + 8)" * (cast_expression "(undefined4 *)(local_38 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 8)" ( (binary_expression "local_38 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(local_38 + 0xc);" (assignment_expression "uVar5 = *(undefined4 *)(local_38 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(local_38 + 0xc)" * (cast_expression "(undefined4 *)(local_38 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0xc)" ( (binary_expression "local_38 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = FUN_00018020(local_34);" (assignment_expression "uVar8 = FUN_00018020(local_34)" identifier = (call_expression "FUN_00018020(local_34)" identifier (argument_list "(local_34)" ( identifier )))) ;) (expression_statement "uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);" (assignment_expression "uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" identifier = (call_expression "dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" identifier (argument_list "(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" ( number_literal , (string_literal ""attempt to use scalar `%s[\"%.*s\"]\' as an array"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar9,uVar8,uVar5,uVar4);" (call_expression "FUN_00066470(uVar9,uVar8,uVar5,uVar4)" identifier (argument_list "(uVar9,uVar8,uVar5,uVar4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar12 = *(int *)(local_38 + 0x10) + -1;" (assignment_expression "iVar12 = *(int *)(local_38 + 0x10) + -1" identifier = (binary_expression "*(int *)(local_38 + 0x10) + -1" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(local_38 + 0x10) = iVar12;" (assignment_expression "*(int *)(local_38 + 0x10) = iVar12" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_34 = piVar1;" (assignment_expression "local_34 = piVar1" identifier = identifier) ;) (if_statement "if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_000668b0(local_38);\n        }" { (expression_statement "FUN_000668b0(local_38);" (call_expression "FUN_000668b0(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) (labeled_statement "LAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" statement_identifier : (if_statement "if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" if (parenthesized_expression "(piVar1[10] == 5)" ( (binary_expression "piVar1[10] == 5" (subscript_expression "piVar1[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }" { (expression_statement "piVar10 = (int *)FUN_000170e0();" (assignment_expression "piVar10 = (int *)FUN_000170e0()" identifier = (cast_expression "(int *)FUN_000170e0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000170e0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(**(code **)(*piVar10 + 0x14))(piVar1,0);" (call_expression "(**(code **)(*piVar10 + 0x14))(piVar1,0)" (parenthesized_expression "(**(code **)(*piVar10 + 0x14))" ( (pointer_expression "**(code **)(*piVar10 + 0x14)" * (pointer_expression "*(code **)(*piVar10 + 0x14)" * (cast_expression "(code **)(*piVar10 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x14)" ( (binary_expression "*piVar10 + 0x14" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "free((void *)piVar1[4]);" (call_expression "free((void *)piVar1[4])" identifier (argument_list "((void *)piVar1[4])" ( (cast_expression "(void *)piVar1[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[4]" identifier [ number_literal ])) ))) ;) (expression_statement "*piVar1 = (int)DAT_000bf900;" (assignment_expression "*piVar1 = (int)DAT_000bf900" (pointer_expression "*piVar1" * identifier) = (cast_expression "(int)DAT_000bf900" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "DAT_000bf900 = piVar1;" (assignment_expression "DAT_000bf900 = piVar1" identifier = identifier) ;) }) (else_clause "else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" else (compound_statement "{\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" { (expression_statement "iVar12 = piVar1[4];" (assignment_expression "iVar12 = piVar1[4]" identifier = (subscript_expression "piVar1[4]" identifier [ number_literal ])) ;) (expression_statement "piVar1[4] = iVar12 + -1;" (assignment_expression "piVar1[4] = iVar12 + -1" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }" if (parenthesized_expression "(iVar12 + -1 < 1)" ( (binary_expression "iVar12 + -1 < 1" (binary_expression "iVar12 + -1" identifier + number_literal) < number_literal) )) (compound_statement "{\n            FUN_000668b0(piVar1);\n          }" { (expression_statement "FUN_000668b0(piVar1);" (call_expression "FUN_000668b0(piVar1)" identifier (argument_list "(piVar1)" ( identifier ))) ;) })) })))) (expression_statement "(**(code **)(*local_34 + 0x18))(local_34,local_38);" (call_expression "(**(code **)(*local_34 + 0x18))(local_34,local_38)" (parenthesized_expression "(**(code **)(*local_34 + 0x18))" ( (pointer_expression "**(code **)(*local_34 + 0x18)" * (pointer_expression "*(code **)(*local_34 + 0x18)" * (cast_expression "(code **)(*local_34 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_34 + 0x18)" ( (binary_expression "*local_34 + 0x18" (pointer_expression "*local_34" * identifier) + number_literal) ))))) )) (argument_list "(local_34,local_38)" ( identifier , identifier ))) ;) (expression_statement "iVar12 = *(int *)(local_38 + 0x10) + -1;" (assignment_expression "iVar12 = *(int *)(local_38 + 0x10) + -1" identifier = (binary_expression "*(int *)(local_38 + 0x10) + -1" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(local_38 + 0x10) = iVar12;" (assignment_expression "*(int *)(local_38 + 0x10) = iVar12" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_000668b0(local_38);\n        }" { (expression_statement "FUN_000668b0(local_38);" (call_expression "FUN_000668b0(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) (if_statement "if (local_34[8] != 0) {\n          return;\n        }" if (parenthesized_expression "(local_34[8] != 0)" ( (binary_expression "local_34[8] != 0" (subscript_expression "local_34[8]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "local_34[10] = 5;" (assignment_expression "local_34[10] = 5" (subscript_expression "local_34[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34[1] = 0;" (assignment_expression "local_34[1] = 0" (subscript_expression "local_34[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34[7] = 0;" (assignment_expression "local_34[7] = 0" (subscript_expression "local_34[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34[5] = 0;" (assignment_expression "local_34[5] = 0" (subscript_expression "local_34[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34[0xb] = 0;" (assignment_expression "local_34[0xb] = 0" (subscript_expression "local_34[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*local_34 = (int)&DAT_000bd4e0;" (assignment_expression "*local_34 = (int)&DAT_000bd4e0" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)&DAT_000bd4e0" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&DAT_000bd4e0" & identifier))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar11 = *(int *)(local_38 + 0x10) + -1;" (assignment_expression "iVar11 = *(int *)(local_38 + 0x10) + -1" identifier = (binary_expression "*(int *)(local_38 + 0x10) + -1" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(local_38 + 0x10) = iVar11;" (assignment_expression "*(int *)(local_38 + 0x10) = iVar11" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_34 = piVar1;" (assignment_expression "local_34 = piVar1" identifier = identifier) ;) (if_statement "if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_000668b0(local_38);\n      }" { (expression_statement "FUN_000668b0(local_38);" (call_expression "FUN_000668b0(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) })) (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" identifier = identifier) ;) (if_statement "if (iVar12 < 1) goto LAB_00018fc5;" if (parenthesized_expression "(iVar12 < 1)" ( (binary_expression "iVar12 < 1" identifier < number_literal) )) (goto_statement "goto LAB_00018fc5;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid do_delete(NODE *symbol,int nsubs)\n\n{\n  char **ppcVar1;\n  NODE *pNVar2;\n  anon_union_4_4_7583dc62_for_l symbol_00;\n  afunc_t p_Var3;\n  size_t sVar4;\n  code *pcVar5;\n  _func_void_char_ptr_varargs *p_Var6;\n  char *pcVar7;\n  char *pcVar8;\n  exp_node **ppeVar9;\n  char *pcVar10;\n  anon_union_4_4_7583dc62_for_l aVar11;\n  size_t sVar12;\n  int iVar13;\n  int iVar14;\n  NODE *local_38;\n  anon_union_4_4_7583dc62_for_l local_34;\n  \n  local_34.lptr = symbol;\n  if (nsubs == 0) {\n    adjust_fcall_stack(symbol,0);\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*((symbol->sub).nodep.l.lp)->clear)(symbol,(exp_node *)0x0);\n    return;\n  }\n  iVar13 = nsubs;\n  if (nsubs < 1) {\n                    /* WARNING: Does not return */\n    pcVar5 = (code *)invalidInstructionException();\n    (*pcVar5)();\n  }\n  do {\n    local_38 = stack_ptr[1 - iVar13].rptr;\n    if (local_38->type == Node_val) {\n      iVar14 = iVar13 + -1;\n    }\n    else {\n      iVar14 = iVar13 * -4 + 8;\n      while (iVar13 = iVar13 + -1, iVar13 != 0) {\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }\n      set_loc("array.c",0x238);\n      pcVar7 = array_vname(local_38);\n      iVar13 = 0;\n      pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar14 = -1;\n      r_fatal(pcVar8,pcVar7);\n    }\n    ppeVar9 = (**(code **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38);\n    if ((ppeVar9 == (exp_node **)0x0) || (symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0))\n    {\n      if (((byte)do_flags & 5) != 0) {\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }\n        set_loc("array.c",0x23f);\n        p_Var6 = lintfunc;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);\n      }\n      iVar14 = iVar13 * -4;\n      do {\n        iVar14 = iVar14 + 4;\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar13 = iVar13 + -1;\n      } while (0 < iVar13);\n      return;\n    }\n    if (1 < iVar13) {\n      if ((symbol_00.lptr)->type != Node_var_array) {\n        iVar14 = iVar13 * -4;\n        pcVar7 = CONVFMT;\n        sVar12 = CONVFMTidx;\n        do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }\n        set_loc("array.c",0x24d);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        local_34.lptr = symbol_00.lptr;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\nLAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }\n        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\n        if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }\n        (local_34.lptr)->type = Node_var_array;\n        (local_34.lp)->init = (afunc_t)0x0;\n        (local_34.lp)->list = (afunc_t)0x0;\n        (local_34.li)->opcode = Op_illegal;\n        (local_34.lptr)->flags = 0;\n        (local_34.li)->nexti = (exp_instruction *)&null_array_func;\n        return;\n      }\n      pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n      (local_38->sub).nodep.name = pcVar7;\n      local_34.lptr = symbol_00.lptr;\n      if (pcVar7 == (char *)0x0) {\n        r_unref(local_38);\n      }\n    }\n    iVar13 = iVar14;\n    if (iVar14 < 1) goto LAB_00018fc5;\n  } while( true );\n}\n\n" comment (function_definition "void do_delete(NODE *symbol,int nsubs)\n\n{\n  char **ppcVar1;\n  NODE *pNVar2;\n  anon_union_4_4_7583dc62_for_l symbol_00;\n  afunc_t p_Var3;\n  size_t sVar4;\n  code *pcVar5;\n  _func_void_char_ptr_varargs *p_Var6;\n  char *pcVar7;\n  char *pcVar8;\n  exp_node **ppeVar9;\n  char *pcVar10;\n  anon_union_4_4_7583dc62_for_l aVar11;\n  size_t sVar12;\n  int iVar13;\n  int iVar14;\n  NODE *local_38;\n  anon_union_4_4_7583dc62_for_l local_34;\n  \n  local_34.lptr = symbol;\n  if (nsubs == 0) {\n    adjust_fcall_stack(symbol,0);\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*((symbol->sub).nodep.l.lp)->clear)(symbol,(exp_node *)0x0);\n    return;\n  }\n  iVar13 = nsubs;\n  if (nsubs < 1) {\n                    /* WARNING: Does not return */\n    pcVar5 = (code *)invalidInstructionException();\n    (*pcVar5)();\n  }\n  do {\n    local_38 = stack_ptr[1 - iVar13].rptr;\n    if (local_38->type == Node_val) {\n      iVar14 = iVar13 + -1;\n    }\n    else {\n      iVar14 = iVar13 * -4 + 8;\n      while (iVar13 = iVar13 + -1, iVar13 != 0) {\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }\n      set_loc("array.c",0x238);\n      pcVar7 = array_vname(local_38);\n      iVar13 = 0;\n      pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar14 = -1;\n      r_fatal(pcVar8,pcVar7);\n    }\n    ppeVar9 = (**(code **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38);\n    if ((ppeVar9 == (exp_node **)0x0) || (symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0))\n    {\n      if (((byte)do_flags & 5) != 0) {\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }\n        set_loc("array.c",0x23f);\n        p_Var6 = lintfunc;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);\n      }\n      iVar14 = iVar13 * -4;\n      do {\n        iVar14 = iVar14 + 4;\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar13 = iVar13 + -1;\n      } while (0 < iVar13);\n      return;\n    }\n    if (1 < iVar13) {\n      if ((symbol_00.lptr)->type != Node_var_array) {\n        iVar14 = iVar13 * -4;\n        pcVar7 = CONVFMT;\n        sVar12 = CONVFMTidx;\n        do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }\n        set_loc("array.c",0x24d);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        local_34.lptr = symbol_00.lptr;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\nLAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }\n        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\n        if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }\n        (local_34.lptr)->type = Node_var_array;\n        (local_34.lp)->init = (afunc_t)0x0;\n        (local_34.lp)->list = (afunc_t)0x0;\n        (local_34.li)->opcode = Op_illegal;\n        (local_34.lptr)->flags = 0;\n        (local_34.li)->nexti = (exp_instruction *)&null_array_func;\n        return;\n      }\n      pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n      (local_38->sub).nodep.name = pcVar7;\n      local_34.lptr = symbol_00.lptr;\n      if (pcVar7 == (char *)0x0) {\n        r_unref(local_38);\n      }\n    }\n    iVar13 = iVar14;\n    if (iVar14 < 1) goto LAB_00018fc5;\n  } while( true );\n}" primitive_type (function_declarator "do_delete(NODE *symbol,int nsubs)" identifier (parameter_list "(NODE *symbol,int nsubs)" ( (parameter_declaration "NODE *symbol" type_identifier (pointer_declarator "*symbol" * identifier)) , (parameter_declaration "int nsubs" primitive_type identifier) ))) (compound_statement "{\n  char **ppcVar1;\n  NODE *pNVar2;\n  anon_union_4_4_7583dc62_for_l symbol_00;\n  afunc_t p_Var3;\n  size_t sVar4;\n  code *pcVar5;\n  _func_void_char_ptr_varargs *p_Var6;\n  char *pcVar7;\n  char *pcVar8;\n  exp_node **ppeVar9;\n  char *pcVar10;\n  anon_union_4_4_7583dc62_for_l aVar11;\n  size_t sVar12;\n  int iVar13;\n  int iVar14;\n  NODE *local_38;\n  anon_union_4_4_7583dc62_for_l local_34;\n  \n  local_34.lptr = symbol;\n  if (nsubs == 0) {\n    adjust_fcall_stack(symbol,0);\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*((symbol->sub).nodep.l.lp)->clear)(symbol,(exp_node *)0x0);\n    return;\n  }\n  iVar13 = nsubs;\n  if (nsubs < 1) {\n                    /* WARNING: Does not return */\n    pcVar5 = (code *)invalidInstructionException();\n    (*pcVar5)();\n  }\n  do {\n    local_38 = stack_ptr[1 - iVar13].rptr;\n    if (local_38->type == Node_val) {\n      iVar14 = iVar13 + -1;\n    }\n    else {\n      iVar14 = iVar13 * -4 + 8;\n      while (iVar13 = iVar13 + -1, iVar13 != 0) {\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }\n      set_loc("array.c",0x238);\n      pcVar7 = array_vname(local_38);\n      iVar13 = 0;\n      pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar14 = -1;\n      r_fatal(pcVar8,pcVar7);\n    }\n    ppeVar9 = (**(code **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38);\n    if ((ppeVar9 == (exp_node **)0x0) || (symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0))\n    {\n      if (((byte)do_flags & 5) != 0) {\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }\n        set_loc("array.c",0x23f);\n        p_Var6 = lintfunc;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);\n      }\n      iVar14 = iVar13 * -4;\n      do {\n        iVar14 = iVar14 + 4;\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar13 = iVar13 + -1;\n      } while (0 < iVar13);\n      return;\n    }\n    if (1 < iVar13) {\n      if ((symbol_00.lptr)->type != Node_var_array) {\n        iVar14 = iVar13 * -4;\n        pcVar7 = CONVFMT;\n        sVar12 = CONVFMTidx;\n        do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }\n        set_loc("array.c",0x24d);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        local_34.lptr = symbol_00.lptr;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\nLAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }\n        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\n        if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }\n        (local_34.lptr)->type = Node_var_array;\n        (local_34.lp)->init = (afunc_t)0x0;\n        (local_34.lp)->list = (afunc_t)0x0;\n        (local_34.li)->opcode = Op_illegal;\n        (local_34.lptr)->flags = 0;\n        (local_34.li)->nexti = (exp_instruction *)&null_array_func;\n        return;\n      }\n      pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n      (local_38->sub).nodep.name = pcVar7;\n      local_34.lptr = symbol_00.lptr;\n      if (pcVar7 == (char *)0x0) {\n        r_unref(local_38);\n      }\n    }\n    iVar13 = iVar14;\n    if (iVar14 < 1) goto LAB_00018fc5;\n  } while( true );\n}" { (declaration "char **ppcVar1;" primitive_type (pointer_declarator "**ppcVar1" * (pointer_declarator "*ppcVar1" * identifier)) ;) (declaration "NODE *pNVar2;" type_identifier (pointer_declarator "*pNVar2" * identifier) ;) (declaration "anon_union_4_4_7583dc62_for_l symbol_00;" type_identifier identifier ;) (declaration "afunc_t p_Var3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "_func_void_char_ptr_varargs *p_Var6;" type_identifier (pointer_declarator "*p_Var6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "exp_node **ppeVar9;" type_identifier (pointer_declarator "**ppeVar9" * (pointer_declarator "*ppeVar9" * identifier)) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "anon_union_4_4_7583dc62_for_l aVar11;" type_identifier identifier ;) (declaration "size_t sVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "NODE *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "anon_union_4_4_7583dc62_for_l local_34;" type_identifier identifier ;) (expression_statement "local_34.lptr = symbol;" (assignment_expression "local_34.lptr = symbol" (field_expression "local_34.lptr" identifier . field_identifier) = identifier) ;) (if_statement "if (nsubs == 0) {\n    adjust_fcall_stack(symbol,0);\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*((symbol->sub).nodep.l.lp)->clear)(symbol,(exp_node *)0x0);\n    return;\n  }" if (parenthesized_expression "(nsubs == 0)" ( (binary_expression "nsubs == 0" identifier == number_literal) )) (compound_statement "{\n    adjust_fcall_stack(symbol,0);\n                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*((symbol->sub).nodep.l.lp)->clear)(symbol,(exp_node *)0x0);\n    return;\n  }" { (expression_statement "adjust_fcall_stack(symbol,0);" (call_expression "adjust_fcall_stack(symbol,0)" identifier (argument_list "(symbol,0)" ( identifier , number_literal ))) ;) comment comment (expression_statement "(*((symbol->sub).nodep.l.lp)->clear)(symbol,(exp_node *)0x0);" (call_expression "(*((symbol->sub).nodep.l.lp)->clear)(symbol,(exp_node *)0x0)" (parenthesized_expression "(*((symbol->sub).nodep.l.lp)->clear)" ( (pointer_expression "*((symbol->sub).nodep.l.lp)->clear" * (field_expression "((symbol->sub).nodep.l.lp)->clear" (parenthesized_expression "((symbol->sub).nodep.l.lp)" ( (field_expression "(symbol->sub).nodep.l.lp" (field_expression "(symbol->sub).nodep.l" (field_expression "(symbol->sub).nodep" (parenthesized_expression "(symbol->sub)" ( (field_expression "symbol->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) )) -> field_identifier)) )) (argument_list "(symbol,(exp_node *)0x0)" ( identifier , (cast_expression "(exp_node *)0x0" ( (type_descriptor "exp_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar13 = nsubs;" (assignment_expression "iVar13 = nsubs" identifier = identifier) ;) (if_statement "if (nsubs < 1) {\n                    /* WARNING: Does not return */\n    pcVar5 = (code *)invalidInstructionException();\n    (*pcVar5)();\n  }" if (parenthesized_expression "(nsubs < 1)" ( (binary_expression "nsubs < 1" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Does not return */\n    pcVar5 = (code *)invalidInstructionException();\n    (*pcVar5)();\n  }" { comment (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (do_statement "do {\n    local_38 = stack_ptr[1 - iVar13].rptr;\n    if (local_38->type == Node_val) {\n      iVar14 = iVar13 + -1;\n    }\n    else {\n      iVar14 = iVar13 * -4 + 8;\n      while (iVar13 = iVar13 + -1, iVar13 != 0) {\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }\n      set_loc("array.c",0x238);\n      pcVar7 = array_vname(local_38);\n      iVar13 = 0;\n      pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar14 = -1;\n      r_fatal(pcVar8,pcVar7);\n    }\n    ppeVar9 = (**(code **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38);\n    if ((ppeVar9 == (exp_node **)0x0) || (symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0))\n    {\n      if (((byte)do_flags & 5) != 0) {\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }\n        set_loc("array.c",0x23f);\n        p_Var6 = lintfunc;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);\n      }\n      iVar14 = iVar13 * -4;\n      do {\n        iVar14 = iVar14 + 4;\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar13 = iVar13 + -1;\n      } while (0 < iVar13);\n      return;\n    }\n    if (1 < iVar13) {\n      if ((symbol_00.lptr)->type != Node_var_array) {\n        iVar14 = iVar13 * -4;\n        pcVar7 = CONVFMT;\n        sVar12 = CONVFMTidx;\n        do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }\n        set_loc("array.c",0x24d);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        local_34.lptr = symbol_00.lptr;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\nLAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }\n        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\n        if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }\n        (local_34.lptr)->type = Node_var_array;\n        (local_34.lp)->init = (afunc_t)0x0;\n        (local_34.lp)->list = (afunc_t)0x0;\n        (local_34.li)->opcode = Op_illegal;\n        (local_34.lptr)->flags = 0;\n        (local_34.li)->nexti = (exp_instruction *)&null_array_func;\n        return;\n      }\n      pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n      (local_38->sub).nodep.name = pcVar7;\n      local_34.lptr = symbol_00.lptr;\n      if (pcVar7 == (char *)0x0) {\n        r_unref(local_38);\n      }\n    }\n    iVar13 = iVar14;\n    if (iVar14 < 1) goto LAB_00018fc5;\n  } while( true );" do (compound_statement "{\n    local_38 = stack_ptr[1 - iVar13].rptr;\n    if (local_38->type == Node_val) {\n      iVar14 = iVar13 + -1;\n    }\n    else {\n      iVar14 = iVar13 * -4 + 8;\n      while (iVar13 = iVar13 + -1, iVar13 != 0) {\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }\n      set_loc("array.c",0x238);\n      pcVar7 = array_vname(local_38);\n      iVar13 = 0;\n      pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar14 = -1;\n      r_fatal(pcVar8,pcVar7);\n    }\n    ppeVar9 = (**(code **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38);\n    if ((ppeVar9 == (exp_node **)0x0) || (symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0))\n    {\n      if (((byte)do_flags & 5) != 0) {\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }\n        set_loc("array.c",0x23f);\n        p_Var6 = lintfunc;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);\n      }\n      iVar14 = iVar13 * -4;\n      do {\n        iVar14 = iVar14 + 4;\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar13 = iVar13 + -1;\n      } while (0 < iVar13);\n      return;\n    }\n    if (1 < iVar13) {\n      if ((symbol_00.lptr)->type != Node_var_array) {\n        iVar14 = iVar13 * -4;\n        pcVar7 = CONVFMT;\n        sVar12 = CONVFMTidx;\n        do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }\n        set_loc("array.c",0x24d);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        local_34.lptr = symbol_00.lptr;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\nLAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }\n        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\n        if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }\n        (local_34.lptr)->type = Node_var_array;\n        (local_34.lp)->init = (afunc_t)0x0;\n        (local_34.lp)->list = (afunc_t)0x0;\n        (local_34.li)->opcode = Op_illegal;\n        (local_34.lptr)->flags = 0;\n        (local_34.li)->nexti = (exp_instruction *)&null_array_func;\n        return;\n      }\n      pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n      (local_38->sub).nodep.name = pcVar7;\n      local_34.lptr = symbol_00.lptr;\n      if (pcVar7 == (char *)0x0) {\n        r_unref(local_38);\n      }\n    }\n    iVar13 = iVar14;\n    if (iVar14 < 1) goto LAB_00018fc5;\n  }" { (expression_statement "local_38 = stack_ptr[1 - iVar13].rptr;" (assignment_expression "local_38 = stack_ptr[1 - iVar13].rptr" identifier = (field_expression "stack_ptr[1 - iVar13].rptr" (subscript_expression "stack_ptr[1 - iVar13]" identifier [ (binary_expression "1 - iVar13" number_literal - identifier) ]) . field_identifier)) ;) (if_statement "if (local_38->type == Node_val) {\n      iVar14 = iVar13 + -1;\n    }\n    else {\n      iVar14 = iVar13 * -4 + 8;\n      while (iVar13 = iVar13 + -1, iVar13 != 0) {\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }\n      set_loc("array.c",0x238);\n      pcVar7 = array_vname(local_38);\n      iVar13 = 0;\n      pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar14 = -1;\n      r_fatal(pcVar8,pcVar7);\n    }" if (parenthesized_expression "(local_38->type == Node_val)" ( (binary_expression "local_38->type == Node_val" (field_expression "local_38->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      iVar14 = iVar13 + -1;\n    }" { (expression_statement "iVar14 = iVar13 + -1;" (assignment_expression "iVar14 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      iVar14 = iVar13 * -4 + 8;\n      while (iVar13 = iVar13 + -1, iVar13 != 0) {\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }\n      set_loc("array.c",0x238);\n      pcVar7 = array_vname(local_38);\n      iVar13 = 0;\n      pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar14 = -1;\n      r_fatal(pcVar8,pcVar7);\n    }" else (compound_statement "{\n      iVar14 = iVar13 * -4 + 8;\n      while (iVar13 = iVar13 + -1, iVar13 != 0) {\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }\n      set_loc("array.c",0x238);\n      pcVar7 = array_vname(local_38);\n      iVar13 = 0;\n      pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar14 = -1;\n      r_fatal(pcVar8,pcVar7);\n    }" { (expression_statement "iVar14 = iVar13 * -4 + 8;" (assignment_expression "iVar14 = iVar13 * -4 + 8" identifier = (binary_expression "iVar13 * -4 + 8" (binary_expression "iVar13 * -4" identifier * number_literal) + number_literal)) ;) (while_statement "while (iVar13 = iVar13 + -1, iVar13 != 0) {\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }" while (parenthesized_expression "(iVar13 = iVar13 + -1, iVar13 != 0)" ( (comma_expression "iVar13 = iVar13 + -1, iVar13 != 0" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) , (binary_expression "iVar13 != 0" identifier != number_literal)) )) (compound_statement "{\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar14 = iVar14 + 4;\n      }" { (expression_statement "pNVar2 = *(NODE **)((int)stack_ptr + iVar14);" (assignment_expression "pNVar2 = *(NODE **)((int)stack_ptr + iVar14)" identifier = (pointer_expression "*(NODE **)((int)stack_ptr + iVar14)" * (cast_expression "(NODE **)((int)stack_ptr + iVar14)" ( (type_descriptor "NODE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)stack_ptr + iVar14)" ( (binary_expression "(int)stack_ptr + iVar14" (cast_expression "(int)stack_ptr" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }" if (parenthesized_expression "(pNVar2->type == Node_val)" ( (binary_expression "pNVar2->type == Node_val" (field_expression "pNVar2->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }" { (if_statement "if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }" if (parenthesized_expression "(((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              )))" ( (binary_expression "((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))" (parenthesized_expression "((pNVar2->flags & 4) == 0)" ( (binary_expression "(pNVar2->flags & 4) == 0" (parenthesized_expression "(pNVar2->flags & 4)" ( (binary_expression "pNVar2->flags & 4" (field_expression "pNVar2->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))" ( (parenthesized_expression "(sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              )" ( (comma_expression "sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)" (assignment_expression "sVar12 = (pNVar2->sub).nodep.reserved" identifier = (field_expression "(pNVar2->sub).nodep.reserved" (field_expression "(pNVar2->sub).nodep" (parenthesized_expression "(pNVar2->sub)" ( (field_expression "pNVar2->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)" (binary_expression "CONVFMTidx != sVar12" identifier != identifier) && (parenthesized_expression "(sVar12 != 0xffffffff)" ( (binary_expression "sVar12 != 0xffffffff" identifier != number_literal) )))) )) ))) )) (compound_statement "{\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }" { (expression_statement "(*format_val)(CONVFMT,CONVFMTidx,pNVar2);" (call_expression "(*format_val)(CONVFMT,CONVFMTidx,pNVar2)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(CONVFMT,CONVFMTidx,pNVar2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "ppcVar1 = &(pNVar2->sub).nodep.name;" (assignment_expression "ppcVar1 = &(pNVar2->sub).nodep.name" identifier = (pointer_expression "&(pNVar2->sub).nodep.name" & (field_expression "(pNVar2->sub).nodep.name" (field_expression "(pNVar2->sub).nodep" (parenthesized_expression "(pNVar2->sub)" ( (field_expression "pNVar2->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + -1;" (assignment_expression "*ppcVar1 = *ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (if_statement "if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }" if (parenthesized_expression "(*ppcVar1 == (char *)0x0)" ( (binary_expression "*ppcVar1 == (char *)0x0" (pointer_expression "*ppcVar1" * identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            r_unref(pNVar2);\n          }" { (expression_statement "r_unref(pNVar2);" (call_expression "r_unref(pNVar2)" identifier (argument_list "(pNVar2)" ( identifier ))) ;) })) })) (expression_statement "iVar14 = iVar14 + 4;" (assignment_expression "iVar14 = iVar14 + 4" identifier = (binary_expression "iVar14 + 4" identifier + number_literal)) ;) })) (expression_statement "set_loc("array.c",0x238);" (call_expression "set_loc("array.c",0x238)" identifier (argument_list "("array.c",0x238)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar7 = array_vname(local_38);" (assignment_expression "pcVar7 = array_vname(local_38)" identifier = (call_expression "array_vname(local_38)" identifier (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "pcVar8 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "iVar14 = -1;" (assignment_expression "iVar14 = -1" identifier = number_literal) ;) (expression_statement "r_fatal(pcVar8,pcVar7);" (call_expression "r_fatal(pcVar8,pcVar7)" identifier (argument_list "(pcVar8,pcVar7)" ( identifier , identifier ))) ;) }))) (expression_statement "ppeVar9 = (**(code **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38);" (assignment_expression "ppeVar9 = (**(code **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38)" identifier = (call_expression "(**(code **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38)" (parenthesized_expression "(**(code **)&(local_34.li)->nexti->source_line)" ( (pointer_expression "**(code **)&(local_34.li)->nexti->source_line" * (pointer_expression "*(code **)&(local_34.li)->nexti->source_line" * (cast_expression "(code **)&(local_34.li)->nexti->source_line" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(local_34.li)->nexti->source_line" & (field_expression "(local_34.li)->nexti->source_line" (field_expression "(local_34.li)->nexti" (parenthesized_expression "(local_34.li)" ( (field_expression "local_34.li" identifier . field_identifier) )) -> field_identifier) -> field_identifier))))) )) (argument_list "(local_34.lptr,local_38)" ( (field_expression "local_34.lptr" identifier . field_identifier) , identifier )))) ;) (if_statement "if ((ppeVar9 == (exp_node **)0x0) || (symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0))\n    {\n      if (((byte)do_flags & 5) != 0) {\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }\n        set_loc("array.c",0x23f);\n        p_Var6 = lintfunc;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);\n      }\n      iVar14 = iVar13 * -4;\n      do {\n        iVar14 = iVar14 + 4;\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar13 = iVar13 + -1;\n      } while (0 < iVar13);\n      return;\n    }" if (parenthesized_expression "((ppeVar9 == (exp_node **)0x0) || (symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0))" ( (binary_expression "(ppeVar9 == (exp_node **)0x0) || (symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0)" (parenthesized_expression "(ppeVar9 == (exp_node **)0x0)" ( (binary_expression "ppeVar9 == (exp_node **)0x0" identifier == (cast_expression "(exp_node **)0x0" ( (type_descriptor "exp_node **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) || (parenthesized_expression "(symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0)" ( (comma_expression "symbol_00.lptr = *ppeVar9, symbol_00.lptr == (NODE *)0x0" (assignment_expression "symbol_00.lptr = *ppeVar9" (field_expression "symbol_00.lptr" identifier . field_identifier) = (pointer_expression "*ppeVar9" * identifier)) , (binary_expression "symbol_00.lptr == (NODE *)0x0" (field_expression "symbol_00.lptr" identifier . field_identifier) == (cast_expression "(NODE *)0x0" ( (type_descriptor "NODE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if (((byte)do_flags & 5) != 0) {\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }\n        set_loc("array.c",0x23f);\n        p_Var6 = lintfunc;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);\n      }\n      iVar14 = iVar13 * -4;\n      do {\n        iVar14 = iVar14 + 4;\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar13 = iVar13 + -1;\n      } while (0 < iVar13);\n      return;\n    }" { (if_statement "if (((byte)do_flags & 5) != 0) {\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }\n        set_loc("array.c",0x23f);\n        p_Var6 = lintfunc;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);\n      }" if (parenthesized_expression "(((byte)do_flags & 5) != 0)" ( (binary_expression "((byte)do_flags & 5) != 0" (parenthesized_expression "((byte)do_flags & 5)" ( (binary_expression "(byte)do_flags & 5" (cast_expression "(byte)do_flags" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }\n        set_loc("array.c",0x23f);\n        p_Var6 = lintfunc;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);\n      }" { (if_statement "if (((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))) {\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }" if (parenthesized_expression "(((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            )))" ( (binary_expression "((local_38->flags & 4) == 0) ||\n           ((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))" (parenthesized_expression "((local_38->flags & 4) == 0)" ( (binary_expression "(local_38->flags & 4) == 0" (parenthesized_expression "(local_38->flags & 4)" ( (binary_expression "local_38->flags & 4" (field_expression "local_38->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            ))" ( (parenthesized_expression "(sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)\n            )" ( (comma_expression "sVar12 = (local_38->sub).nodep.reserved, sVar12 != 0xffffffff && (CONVFMTidx != sVar12)" (assignment_expression "sVar12 = (local_38->sub).nodep.reserved" identifier = (field_expression "(local_38->sub).nodep.reserved" (field_expression "(local_38->sub).nodep" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "sVar12 != 0xffffffff && (CONVFMTidx != sVar12)" (binary_expression "sVar12 != 0xffffffff" identifier != number_literal) && (parenthesized_expression "(CONVFMTidx != sVar12)" ( (binary_expression "CONVFMTidx != sVar12" identifier != identifier) )))) )) ))) )) (compound_statement "{\n          local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);\n        }" { (expression_statement "local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38);" (assignment_expression "local_38 = (*format_val)(CONVFMT,CONVFMTidx,local_38)" identifier = (call_expression "(*format_val)(CONVFMT,CONVFMTidx,local_38)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(CONVFMT,CONVFMTidx,local_38)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "set_loc("array.c",0x23f);" (call_expression "set_loc("array.c",0x23f)" identifier (argument_list "("array.c",0x23f)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "p_Var6 = lintfunc;" (assignment_expression "p_Var6 = lintfunc" identifier = identifier) ;) (expression_statement "pcVar8 = array_vname(local_34.lptr);" (assignment_expression "pcVar8 = array_vname(local_34.lptr)" identifier = (call_expression "array_vname(local_34.lptr)" identifier (argument_list "(local_34.lptr)" ( (field_expression "local_34.lptr" identifier . field_identifier) )))) ;) (expression_statement "pcVar7 = (local_38->sub).val.sp;" (assignment_expression "pcVar7 = (local_38->sub).val.sp" identifier = (field_expression "(local_38->sub).val.sp" (field_expression "(local_38->sub).val" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "sVar12 = (local_38->sub).val.slen;" (assignment_expression "sVar12 = (local_38->sub).val.slen" identifier = (field_expression "(local_38->sub).val.slen" (field_expression "(local_38->sub).val" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);" (assignment_expression "pcVar10 = (char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5)" identifier = (cast_expression "(char *)dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5)" identifier (argument_list "(0,"delete: index `%.*s\' not in array `%s\'",5)" ( number_literal , (string_literal ""delete: index `%.*s\' not in array `%s\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "(*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8);" (call_expression "(*p_Var6)(pcVar10,sVar12,pcVar7,pcVar8)" (parenthesized_expression "(*p_Var6)" ( (pointer_expression "*p_Var6" * identifier) )) (argument_list "(pcVar10,sVar12,pcVar7,pcVar8)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "iVar14 = iVar13 * -4;" (assignment_expression "iVar14 = iVar13 * -4" identifier = (binary_expression "iVar13 * -4" identifier * number_literal)) ;) (do_statement "do {\n        iVar14 = iVar14 + 4;\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar13 = iVar13 + -1;\n      } while (0 < iVar13);" do (compound_statement "{\n        iVar14 = iVar14 + 4;\n        pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n        if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }\n        iVar13 = iVar13 + -1;\n      }" { (expression_statement "iVar14 = iVar14 + 4;" (assignment_expression "iVar14 = iVar14 + 4" identifier = (binary_expression "iVar14 + 4" identifier + number_literal)) ;) (expression_statement "pNVar2 = *(NODE **)((int)stack_ptr + iVar14);" (assignment_expression "pNVar2 = *(NODE **)((int)stack_ptr + iVar14)" identifier = (pointer_expression "*(NODE **)((int)stack_ptr + iVar14)" * (cast_expression "(NODE **)((int)stack_ptr + iVar14)" ( (type_descriptor "NODE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)stack_ptr + iVar14)" ( (binary_expression "(int)stack_ptr + iVar14" (cast_expression "(int)stack_ptr" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (pNVar2->type == Node_val) {\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }" if (parenthesized_expression "(pNVar2->type == Node_val)" ( (binary_expression "pNVar2->type == Node_val" (field_expression "pNVar2->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n          if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }\n          ppcVar1 = &(pNVar2->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }\n        }" { (if_statement "if (((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))) {\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }" if (parenthesized_expression "(((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              )))" ( (binary_expression "((pNVar2->flags & 4) == 0) ||\n             ((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))" (parenthesized_expression "((pNVar2->flags & 4) == 0)" ( (binary_expression "(pNVar2->flags & 4) == 0" (parenthesized_expression "(pNVar2->flags & 4)" ( (binary_expression "pNVar2->flags & 4" (field_expression "pNVar2->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              ))" ( (parenthesized_expression "(sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)\n              )" ( (comma_expression "sVar12 = (pNVar2->sub).nodep.reserved, CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)" (assignment_expression "sVar12 = (pNVar2->sub).nodep.reserved" identifier = (field_expression "(pNVar2->sub).nodep.reserved" (field_expression "(pNVar2->sub).nodep" (parenthesized_expression "(pNVar2->sub)" ( (field_expression "pNVar2->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "CONVFMTidx != sVar12 && (sVar12 != 0xffffffff)" (binary_expression "CONVFMTidx != sVar12" identifier != identifier) && (parenthesized_expression "(sVar12 != 0xffffffff)" ( (binary_expression "sVar12 != 0xffffffff" identifier != number_literal) )))) )) ))) )) (compound_statement "{\n            (*format_val)(CONVFMT,CONVFMTidx,pNVar2);\n          }" { (expression_statement "(*format_val)(CONVFMT,CONVFMTidx,pNVar2);" (call_expression "(*format_val)(CONVFMT,CONVFMTidx,pNVar2)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(CONVFMT,CONVFMTidx,pNVar2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "ppcVar1 = &(pNVar2->sub).nodep.name;" (assignment_expression "ppcVar1 = &(pNVar2->sub).nodep.name" identifier = (pointer_expression "&(pNVar2->sub).nodep.name" & (field_expression "(pNVar2->sub).nodep.name" (field_expression "(pNVar2->sub).nodep" (parenthesized_expression "(pNVar2->sub)" ( (field_expression "pNVar2->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + -1;" (assignment_expression "*ppcVar1 = *ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (if_statement "if (*ppcVar1 == (char *)0x0) {\n            r_unref(pNVar2);\n          }" if (parenthesized_expression "(*ppcVar1 == (char *)0x0)" ( (binary_expression "*ppcVar1 == (char *)0x0" (pointer_expression "*ppcVar1" * identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            r_unref(pNVar2);\n          }" { (expression_statement "r_unref(pNVar2);" (call_expression "r_unref(pNVar2)" identifier (argument_list "(pNVar2)" ( identifier ))) ;) })) })) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(0 < iVar13)" ( (binary_expression "0 < iVar13" number_literal < identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (1 < iVar13) {\n      if ((symbol_00.lptr)->type != Node_var_array) {\n        iVar14 = iVar13 * -4;\n        pcVar7 = CONVFMT;\n        sVar12 = CONVFMTidx;\n        do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }\n        set_loc("array.c",0x24d);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        local_34.lptr = symbol_00.lptr;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\nLAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }\n        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\n        if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }\n        (local_34.lptr)->type = Node_var_array;\n        (local_34.lp)->init = (afunc_t)0x0;\n        (local_34.lp)->list = (afunc_t)0x0;\n        (local_34.li)->opcode = Op_illegal;\n        (local_34.lptr)->flags = 0;\n        (local_34.li)->nexti = (exp_instruction *)&null_array_func;\n        return;\n      }\n      pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n      (local_38->sub).nodep.name = pcVar7;\n      local_34.lptr = symbol_00.lptr;\n      if (pcVar7 == (char *)0x0) {\n        r_unref(local_38);\n      }\n    }" if (parenthesized_expression "(1 < iVar13)" ( (binary_expression "1 < iVar13" number_literal < identifier) )) (compound_statement "{\n      if ((symbol_00.lptr)->type != Node_var_array) {\n        iVar14 = iVar13 * -4;\n        pcVar7 = CONVFMT;\n        sVar12 = CONVFMTidx;\n        do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }\n        set_loc("array.c",0x24d);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        local_34.lptr = symbol_00.lptr;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\nLAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }\n        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\n        if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }\n        (local_34.lptr)->type = Node_var_array;\n        (local_34.lp)->init = (afunc_t)0x0;\n        (local_34.lp)->list = (afunc_t)0x0;\n        (local_34.li)->opcode = Op_illegal;\n        (local_34.lptr)->flags = 0;\n        (local_34.li)->nexti = (exp_instruction *)&null_array_func;\n        return;\n      }\n      pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n      (local_38->sub).nodep.name = pcVar7;\n      local_34.lptr = symbol_00.lptr;\n      if (pcVar7 == (char *)0x0) {\n        r_unref(local_38);\n      }\n    }" { (if_statement "if ((symbol_00.lptr)->type != Node_var_array) {\n        iVar14 = iVar13 * -4;\n        pcVar7 = CONVFMT;\n        sVar12 = CONVFMTidx;\n        do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }\n        set_loc("array.c",0x24d);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        local_34.lptr = symbol_00.lptr;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\nLAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }\n        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\n        if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }\n        (local_34.lptr)->type = Node_var_array;\n        (local_34.lp)->init = (afunc_t)0x0;\n        (local_34.lp)->list = (afunc_t)0x0;\n        (local_34.li)->opcode = Op_illegal;\n        (local_34.lptr)->flags = 0;\n        (local_34.li)->nexti = (exp_instruction *)&null_array_func;\n        return;\n      }" if (parenthesized_expression "((symbol_00.lptr)->type != Node_var_array)" ( (binary_expression "(symbol_00.lptr)->type != Node_var_array" (field_expression "(symbol_00.lptr)->type" (parenthesized_expression "(symbol_00.lptr)" ( (field_expression "symbol_00.lptr" identifier . field_identifier) )) -> field_identifier) != identifier) )) (compound_statement "{\n        iVar14 = iVar13 * -4;\n        pcVar7 = CONVFMT;\n        sVar12 = CONVFMTidx;\n        do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);\n        if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }\n        set_loc("array.c",0x24d);\n        pcVar7 = (local_38->sub).val.sp;\n        sVar12 = (local_38->sub).val.slen;\n        pcVar8 = array_vname(local_34.lptr);\n        pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        r_fatal(pcVar10,pcVar8,sVar12,pcVar7);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        local_34.lptr = symbol_00.lptr;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\nLAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }\n        (*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);\n        pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');\n        (local_38->sub).nodep.name = pcVar7;\n        if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }\n        if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }\n        (local_34.lptr)->type = Node_var_array;\n        (local_34.lp)->init = (afunc_t)0x0;\n        (local_34.lp)->list = (afunc_t)0x0;\n        (local_34.li)->opcode = Op_illegal;\n        (local_34.lptr)->flags = 0;\n        (local_34.li)->nexti = (exp_instruction *)&null_array_func;\n        return;\n      }" { (expression_statement "iVar14 = iVar13 * -4;" (assignment_expression "iVar14 = iVar13 * -4" identifier = (binary_expression "iVar13 * -4" identifier * number_literal)) ;) (expression_statement "pcVar7 = CONVFMT;" (assignment_expression "pcVar7 = CONVFMT" identifier = identifier) ;) (expression_statement "sVar12 = CONVFMTidx;" (assignment_expression "sVar12 = CONVFMTidx" identifier = identifier) ;) (do_statement "do {\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        } while (iVar13 != 0);" do (compound_statement "{\n          iVar14 = iVar14 + 4;\n          pNVar2 = *(NODE **)((int)stack_ptr + iVar14);\n          if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }\n          iVar13 = iVar13 + -1;\n        }" { (expression_statement "iVar14 = iVar14 + 4;" (assignment_expression "iVar14 = iVar14 + 4" identifier = (binary_expression "iVar14 + 4" identifier + number_literal)) ;) (expression_statement "pNVar2 = *(NODE **)((int)stack_ptr + iVar14);" (assignment_expression "pNVar2 = *(NODE **)((int)stack_ptr + iVar14)" identifier = (pointer_expression "*(NODE **)((int)stack_ptr + iVar14)" * (cast_expression "(NODE **)((int)stack_ptr + iVar14)" ( (type_descriptor "NODE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)stack_ptr + iVar14)" ( (binary_expression "(int)stack_ptr + iVar14" (cast_expression "(int)stack_ptr" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (if_statement "if (pNVar2->type == Node_val) {\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }" if (parenthesized_expression "(pNVar2->type == Node_val)" ( (binary_expression "pNVar2->type == Node_val" (field_expression "pNVar2->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n            if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }\n            ppcVar1 = &(pNVar2->sub).nodep.name;\n            *ppcVar1 = *ppcVar1 + -1;\n            pcVar7 = CONVFMT;\n            sVar12 = CONVFMTidx;\n            if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }\n          }" { (if_statement "if (((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }" if (parenthesized_expression "(((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12))))" ( (binary_expression "((pNVar2->flags & 4) == 0) ||\n               ((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))" (parenthesized_expression "((pNVar2->flags & 4) == 0)" ( (binary_expression "(pNVar2->flags & 4) == 0" (parenthesized_expression "(pNVar2->flags & 4)" ( (binary_expression "pNVar2->flags & 4" (field_expression "pNVar2->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))" ( (parenthesized_expression "(sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12))" ( (comma_expression "sVar4 = (pNVar2->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)" (assignment_expression "sVar4 = (pNVar2->sub).nodep.reserved" identifier = (field_expression "(pNVar2->sub).nodep.reserved" (field_expression "(pNVar2->sub).nodep" (parenthesized_expression "(pNVar2->sub)" ( (field_expression "pNVar2->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "sVar4 != 0xffffffff && (sVar4 != sVar12)" (binary_expression "sVar4 != 0xffffffff" identifier != number_literal) && (parenthesized_expression "(sVar4 != sVar12)" ( (binary_expression "sVar4 != sVar12" identifier != identifier) )))) )) ))) )) (compound_statement "{\n              (*format_val)(pcVar7,sVar12,pNVar2);\n            }" { (expression_statement "(*format_val)(pcVar7,sVar12,pNVar2);" (call_expression "(*format_val)(pcVar7,sVar12,pNVar2)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(pcVar7,sVar12,pNVar2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "ppcVar1 = &(pNVar2->sub).nodep.name;" (assignment_expression "ppcVar1 = &(pNVar2->sub).nodep.name" identifier = (pointer_expression "&(pNVar2->sub).nodep.name" & (field_expression "(pNVar2->sub).nodep.name" (field_expression "(pNVar2->sub).nodep" (parenthesized_expression "(pNVar2->sub)" ( (field_expression "pNVar2->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + -1;" (assignment_expression "*ppcVar1 = *ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (expression_statement "pcVar7 = CONVFMT;" (assignment_expression "pcVar7 = CONVFMT" identifier = identifier) ;) (expression_statement "sVar12 = CONVFMTidx;" (assignment_expression "sVar12 = CONVFMTidx" identifier = identifier) ;) (if_statement "if (*ppcVar1 == (char *)0x0) {\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }" if (parenthesized_expression "(*ppcVar1 == (char *)0x0)" ( (binary_expression "*ppcVar1 == (char *)0x0" (pointer_expression "*ppcVar1" * identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              r_unref(pNVar2);\n              pcVar7 = CONVFMT;\n              sVar12 = CONVFMTidx;\n            }" { (expression_statement "r_unref(pNVar2);" (call_expression "r_unref(pNVar2)" identifier (argument_list "(pNVar2)" ( identifier ))) ;) (expression_statement "pcVar7 = CONVFMT;" (assignment_expression "pcVar7 = CONVFMT" identifier = identifier) ;) (expression_statement "sVar12 = CONVFMTidx;" (assignment_expression "sVar12 = CONVFMTidx" identifier = identifier) ;) })) })) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) ;) (if_statement "if (((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))) {\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }" if (parenthesized_expression "(((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12))))" ( (binary_expression "((local_38->flags & 4) == 0) ||\n           ((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))" (parenthesized_expression "((local_38->flags & 4) == 0)" ( (binary_expression "(local_38->flags & 4) == 0" (parenthesized_expression "(local_38->flags & 4)" ( (binary_expression "local_38->flags & 4" (field_expression "local_38->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)))" ( (parenthesized_expression "(sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12))" ( (comma_expression "sVar4 = (local_38->sub).nodep.reserved, sVar4 != 0xffffffff && (sVar4 != sVar12)" (assignment_expression "sVar4 = (local_38->sub).nodep.reserved" identifier = (field_expression "(local_38->sub).nodep.reserved" (field_expression "(local_38->sub).nodep" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "sVar4 != 0xffffffff && (sVar4 != sVar12)" (binary_expression "sVar4 != 0xffffffff" identifier != number_literal) && (parenthesized_expression "(sVar4 != sVar12)" ( (binary_expression "sVar4 != sVar12" identifier != identifier) )))) )) ))) )) (compound_statement "{\n          local_38 = (*format_val)(pcVar7,sVar12,local_38);\n        }" { (expression_statement "local_38 = (*format_val)(pcVar7,sVar12,local_38);" (assignment_expression "local_38 = (*format_val)(pcVar7,sVar12,local_38)" identifier = (call_expression "(*format_val)(pcVar7,sVar12,local_38)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(pcVar7,sVar12,local_38)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "set_loc("array.c",0x24d);" (call_expression "set_loc("array.c",0x24d)" identifier (argument_list "("array.c",0x24d)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar7 = (local_38->sub).val.sp;" (assignment_expression "pcVar7 = (local_38->sub).val.sp" identifier = (field_expression "(local_38->sub).val.sp" (field_expression "(local_38->sub).val" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "sVar12 = (local_38->sub).val.slen;" (assignment_expression "sVar12 = (local_38->sub).val.slen" identifier = (field_expression "(local_38->sub).val.slen" (field_expression "(local_38->sub).val" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pcVar8 = array_vname(local_34.lptr);" (assignment_expression "pcVar8 = array_vname(local_34.lptr)" identifier = (call_expression "array_vname(local_34.lptr)" identifier (argument_list "(local_34.lptr)" ( (field_expression "local_34.lptr" identifier . field_identifier) )))) ;) (expression_statement "pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);" (assignment_expression "pcVar10 = (char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" identifier (argument_list "(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" ( number_literal , (string_literal ""attempt to use scalar `%s[\"%.*s\"]\' as an array"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "r_fatal(pcVar10,pcVar8,sVar12,pcVar7);" (call_expression "r_fatal(pcVar10,pcVar8,sVar12,pcVar7)" identifier (argument_list "(pcVar10,pcVar8,sVar12,pcVar7)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');" (assignment_expression "pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff')" identifier = (cast_expression "(char *)((local_38->sub).val.sref + L'\xffffffff')" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_38->sub).val.sref + L'\xffffffff')" ( (binary_expression "(local_38->sub).val.sref + L'\xffffffff'" (field_expression "(local_38->sub).val.sref" (field_expression "(local_38->sub).val" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) )))) ;) (expression_statement "(local_38->sub).nodep.name = pcVar7;" (assignment_expression "(local_38->sub).nodep.name = pcVar7" (field_expression "(local_38->sub).nodep.name" (field_expression "(local_38->sub).nodep" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "local_34.lptr = symbol_00.lptr;" (assignment_expression "local_34.lptr = symbol_00.lptr" (field_expression "local_34.lptr" identifier . field_identifier) = (field_expression "symbol_00.lptr" identifier . field_identifier)) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          r_unref(local_38);\n        }" { (expression_statement "r_unref(local_38);" (call_expression "r_unref(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) (labeled_statement "LAB_00018fc5:\n        if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }" statement_identifier : (if_statement "if ((symbol_00.lptr)->type == Node_var_array) {\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }\n        else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }" if (parenthesized_expression "((symbol_00.lptr)->type == Node_var_array)" ( (binary_expression "(symbol_00.lptr)->type == Node_var_array" (field_expression "(symbol_00.lptr)->type" (parenthesized_expression "(symbol_00.lptr)" ( (field_expression "symbol_00.lptr" identifier . field_identifier) )) -> field_identifier) == identifier) )) (compound_statement "{\n          aVar11.lptr = symbol_00.lptr;\n          adjust_fcall_stack(symbol_00.lptr,nsubs);\n          (*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);\n          free((symbol_00.lp)->exists);\n          (((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;\n          nextfree.lptr = symbol_00.lptr;\n        }" { (expression_statement "aVar11.lptr = symbol_00.lptr;" (assignment_expression "aVar11.lptr = symbol_00.lptr" (field_expression "aVar11.lptr" identifier . field_identifier) = (field_expression "symbol_00.lptr" identifier . field_identifier)) ;) (expression_statement "adjust_fcall_stack(symbol_00.lptr,nsubs);" (call_expression "adjust_fcall_stack(symbol_00.lptr,nsubs)" identifier (argument_list "(symbol_00.lptr,nsubs)" ( (field_expression "symbol_00.lptr" identifier . field_identifier) , identifier ))) ;) (expression_statement "(*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0);" (call_expression "(*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)\n                    (symbol_00.lptr,(exp_node *)0x0)" (parenthesized_expression "(*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)" ( (pointer_expression "*((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear" * (field_expression "((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)->clear" (parenthesized_expression "((((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp)" ( (field_expression "(((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l.lp" (field_expression "(((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep).l" (parenthesized_expression "(((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep)" ( (field_expression "((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)->nodep" (parenthesized_expression "((anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti)" ( (cast_expression "(anon_union_40_2_1d41ba54_for_sub *)&(aVar11.li)->nexti" ( (type_descriptor "anon_union_40_2_1d41ba54_for_sub *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(aVar11.li)->nexti" & (field_expression "(aVar11.li)->nexti" (parenthesized_expression "(aVar11.li)" ( (field_expression "aVar11.li" identifier . field_identifier) )) -> field_identifier))) )) -> field_identifier) )) . field_identifier) . field_identifier) )) -> field_identifier)) )) (argument_list "(symbol_00.lptr,(exp_node *)0x0)" ( (field_expression "symbol_00.lptr" identifier . field_identifier) , (cast_expression "(exp_node *)0x0" ( (type_descriptor "exp_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "free((symbol_00.lp)->exists);" (call_expression "free((symbol_00.lp)->exists)" identifier (argument_list "((symbol_00.lp)->exists)" ( (field_expression "(symbol_00.lp)->exists" (parenthesized_expression "(symbol_00.lp)" ( (field_expression "symbol_00.lp" identifier . field_identifier) )) -> field_identifier) ))) ;) (expression_statement "(((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree;" (assignment_expression "(((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l = nextfree" (field_expression "(((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep).l" (parenthesized_expression "(((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep)" ( (field_expression "((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)->nodep" (parenthesized_expression "((anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti)" ( (cast_expression "(anon_union_40_2_1d41ba54_for_sub *)&(symbol_00.li)->nexti" ( (type_descriptor "anon_union_40_2_1d41ba54_for_sub *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(symbol_00.li)->nexti" & (field_expression "(symbol_00.li)->nexti" (parenthesized_expression "(symbol_00.li)" ( (field_expression "symbol_00.li" identifier . field_identifier) )) -> field_identifier))) )) -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "nextfree.lptr = symbol_00.lptr;" (assignment_expression "nextfree.lptr = symbol_00.lptr" (field_expression "nextfree.lptr" identifier . field_identifier) = (field_expression "symbol_00.lptr" identifier . field_identifier)) ;) }) (else_clause "else {\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }" else (compound_statement "{\n          p_Var3 = (symbol_00.lp)->exists;\n          (symbol_00.lp)->exists = p_Var3 + -1;\n          if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }\n        }" { (expression_statement "p_Var3 = (symbol_00.lp)->exists;" (assignment_expression "p_Var3 = (symbol_00.lp)->exists" identifier = (field_expression "(symbol_00.lp)->exists" (parenthesized_expression "(symbol_00.lp)" ( (field_expression "symbol_00.lp" identifier . field_identifier) )) -> field_identifier)) ;) (expression_statement "(symbol_00.lp)->exists = p_Var3 + -1;" (assignment_expression "(symbol_00.lp)->exists = p_Var3 + -1" (field_expression "(symbol_00.lp)->exists" (parenthesized_expression "(symbol_00.lp)" ( (field_expression "symbol_00.lp" identifier . field_identifier) )) -> field_identifier) = (binary_expression "p_Var3 + -1" identifier + number_literal)) ;) (if_statement "if ((int)(p_Var3 + -1) < 1) {\n            r_unref(symbol_00.lptr);\n          }" if (parenthesized_expression "((int)(p_Var3 + -1) < 1)" ( (binary_expression "(int)(p_Var3 + -1) < 1" (cast_expression "(int)(p_Var3 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(p_Var3 + -1)" ( (binary_expression "p_Var3 + -1" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n            r_unref(symbol_00.lptr);\n          }" { (expression_statement "r_unref(symbol_00.lptr);" (call_expression "r_unref(symbol_00.lptr)" identifier (argument_list "(symbol_00.lptr)" ( (field_expression "symbol_00.lptr" identifier . field_identifier) ))) ;) })) })))) (expression_statement "(*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);" (call_expression "(*(code *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38)" (parenthesized_expression "(*(code *)(local_34.li)->nexti[1].nexti)" ( (pointer_expression "*(code *)(local_34.li)->nexti[1].nexti" * (cast_expression "(code *)(local_34.li)->nexti[1].nexti" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(local_34.li)->nexti[1].nexti" (subscript_expression "(local_34.li)->nexti[1]" (field_expression "(local_34.li)->nexti" (parenthesized_expression "(local_34.li)" ( (field_expression "local_34.li" identifier . field_identifier) )) -> field_identifier) [ number_literal ]) . field_identifier))) )) (argument_list "(local_34.lptr,local_38)" ( (field_expression "local_34.lptr" identifier . field_identifier) , identifier ))) ;) (expression_statement "pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');" (assignment_expression "pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff')" identifier = (cast_expression "(char *)((local_38->sub).val.sref + L'\xffffffff')" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_38->sub).val.sref + L'\xffffffff')" ( (binary_expression "(local_38->sub).val.sref + L'\xffffffff'" (field_expression "(local_38->sub).val.sref" (field_expression "(local_38->sub).val" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) )))) ;) (expression_statement "(local_38->sub).nodep.name = pcVar7;" (assignment_expression "(local_38->sub).nodep.name = pcVar7" (field_expression "(local_38->sub).nodep.name" (field_expression "(local_38->sub).nodep" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n          r_unref(local_38);\n        }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          r_unref(local_38);\n        }" { (expression_statement "r_unref(local_38);" (call_expression "r_unref(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) (if_statement "if ((local_34.lp)->copy != (afunc_t)0x0) {\n          return;\n        }" if (parenthesized_expression "((local_34.lp)->copy != (afunc_t)0x0)" ( (binary_expression "(local_34.lp)->copy != (afunc_t)0x0" (field_expression "(local_34.lp)->copy" (parenthesized_expression "(local_34.lp)" ( (field_expression "local_34.lp" identifier . field_identifier) )) -> field_identifier) != (cast_expression "(afunc_t)0x0" ( (type_descriptor "afunc_t" type_identifier) ) number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "(local_34.lptr)->type = Node_var_array;" (assignment_expression "(local_34.lptr)->type = Node_var_array" (field_expression "(local_34.lptr)->type" (parenthesized_expression "(local_34.lptr)" ( (field_expression "local_34.lptr" identifier . field_identifier) )) -> field_identifier) = identifier) ;) (expression_statement "(local_34.lp)->init = (afunc_t)0x0;" (assignment_expression "(local_34.lp)->init = (afunc_t)0x0" (field_expression "(local_34.lp)->init" (parenthesized_expression "(local_34.lp)" ( (field_expression "local_34.lp" identifier . field_identifier) )) -> field_identifier) = (cast_expression "(afunc_t)0x0" ( (type_descriptor "afunc_t" type_identifier) ) number_literal)) ;) (expression_statement "(local_34.lp)->list = (afunc_t)0x0;" (assignment_expression "(local_34.lp)->list = (afunc_t)0x0" (field_expression "(local_34.lp)->list" (parenthesized_expression "(local_34.lp)" ( (field_expression "local_34.lp" identifier . field_identifier) )) -> field_identifier) = (cast_expression "(afunc_t)0x0" ( (type_descriptor "afunc_t" type_identifier) ) number_literal)) ;) (expression_statement "(local_34.li)->opcode = Op_illegal;" (assignment_expression "(local_34.li)->opcode = Op_illegal" (field_expression "(local_34.li)->opcode" (parenthesized_expression "(local_34.li)" ( (field_expression "local_34.li" identifier . field_identifier) )) -> field_identifier) = identifier) ;) (expression_statement "(local_34.lptr)->flags = 0;" (assignment_expression "(local_34.lptr)->flags = 0" (field_expression "(local_34.lptr)->flags" (parenthesized_expression "(local_34.lptr)" ( (field_expression "local_34.lptr" identifier . field_identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "(local_34.li)->nexti = (exp_instruction *)&null_array_func;" (assignment_expression "(local_34.li)->nexti = (exp_instruction *)&null_array_func" (field_expression "(local_34.li)->nexti" (parenthesized_expression "(local_34.li)" ( (field_expression "local_34.li" identifier . field_identifier) )) -> field_identifier) = (cast_expression "(exp_instruction *)&null_array_func" ( (type_descriptor "exp_instruction *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&null_array_func" & identifier))) ;) (return_statement "return;" return ;) })) (expression_statement "pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff');" (assignment_expression "pcVar7 = (char *)((local_38->sub).val.sref + L'\xffffffff')" identifier = (cast_expression "(char *)((local_38->sub).val.sref + L'\xffffffff')" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_38->sub).val.sref + L'\xffffffff')" ( (binary_expression "(local_38->sub).val.sref + L'\xffffffff'" (field_expression "(local_38->sub).val.sref" (field_expression "(local_38->sub).val" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) )))) ;) (expression_statement "(local_38->sub).nodep.name = pcVar7;" (assignment_expression "(local_38->sub).nodep.name = pcVar7" (field_expression "(local_38->sub).nodep.name" (field_expression "(local_38->sub).nodep" (parenthesized_expression "(local_38->sub)" ( (field_expression "local_38->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "local_34.lptr = symbol_00.lptr;" (assignment_expression "local_34.lptr = symbol_00.lptr" (field_expression "local_34.lptr" identifier . field_identifier) = (field_expression "symbol_00.lptr" identifier . field_identifier)) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n        r_unref(local_38);\n      }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        r_unref(local_38);\n      }" { (expression_statement "r_unref(local_38);" (call_expression "r_unref(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) })) (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" identifier = identifier) ;) (if_statement "if (iVar14 < 1) goto LAB_00018fc5;" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (goto_statement "goto LAB_00018fc5;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_00018d20(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int *piVar10;\n  int iVar11;\n  int iVar12;\n  int local_38;\n  int *local_34;\n  \n  local_34 = param_1;\n  if (param_2 == 0) {\n    FUN_000170e0();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }\n  do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );\n}\n\n" (function_definition "void FUN_00018d20(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int *piVar10;\n  int iVar11;\n  int iVar12;\n  int local_38;\n  int *local_34;\n  \n  local_34 = param_1;\n  if (param_2 == 0) {\n    FUN_000170e0();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }\n  do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00018d20(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int *piVar10;\n  int iVar11;\n  int iVar12;\n  int local_38;\n  int *local_34;\n  \n  local_34 = param_1;\n  if (param_2 == 0) {\n    FUN_000170e0();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }\n  do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (expression_statement "local_34 = param_1;" (assignment_expression "local_34 = param_1" identifier = identifier) ;) (if_statement "if (param_2 == 0) {\n    FUN_000170e0();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_000170e0();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }" { (expression_statement "FUN_000170e0();" (call_expression "FUN_000170e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(*param_1 + 0x14))();" (call_expression "(**(code **)(*param_1 + 0x14))()" (parenthesized_expression "(**(code **)(*param_1 + 0x14))" ( (pointer_expression "**(code **)(*param_1 + 0x14)" * (pointer_expression "*(code **)(*param_1 + 0x14)" * (cast_expression "(code **)(*param_1 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x14)" ( (binary_expression "*param_1 + 0x14" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_2 < 1) {\n                    \n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }" if (parenthesized_expression "(param_2 < 1)" ( (binary_expression "param_2 < 1" identifier < number_literal) )) (compound_statement "{\n                    \n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }" { (expression_statement "pcVar3 = (code *)invalidInstructionException();" (assignment_expression "pcVar3 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) })) (do_statement "do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );" do (compound_statement "{\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  }" { (expression_statement "local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);" (assignment_expression "local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4)" identifier = (pointer_expression "*(int *)(DAT_000c13c8 + 4 + param_2 * -4)" * (cast_expression "(int *)(DAT_000c13c8 + 4 + param_2 * -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c8 + 4 + param_2 * -4)" ( (binary_expression "DAT_000c13c8 + 4 + param_2 * -4" (binary_expression "DAT_000c13c8 + 4" identifier + number_literal) + (binary_expression "param_2 * -4" identifier * number_literal)) ))))) ;) (if_statement "if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }" if (parenthesized_expression "(*(int *)(local_38 + 0x28) == 1)" ( (binary_expression "*(int *)(local_38 + 0x28) == 1" (pointer_expression "*(int *)(local_38 + 0x28)" * (cast_expression "(int *)(local_38 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x28)" ( (binary_expression "local_38 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar12 = param_2 + -1;\n    }" { (expression_statement "iVar12 = param_2 + -1;" (assignment_expression "iVar12 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }" else (compound_statement "{\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }" { (expression_statement "iVar12 = param_2 * -4 + 8;" (assignment_expression "iVar12 = param_2 * -4 + 8" identifier = (binary_expression "param_2 * -4 + 8" (binary_expression "param_2 * -4" identifier * number_literal) + number_literal)) ;) (while_statement "while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }" while (parenthesized_expression "(param_2 = param_2 + -1, param_2 != 0)" ( (comma_expression "param_2 = param_2 + -1, param_2 != 0" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) , (binary_expression "param_2 != 0" identifier != number_literal)) )) (compound_statement "{\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }" { (expression_statement "iVar11 = *(int *)(DAT_000c13c8 + iVar12);" (assignment_expression "iVar11 = *(int *)(DAT_000c13c8 + iVar12)" identifier = (pointer_expression "*(int *)(DAT_000c13c8 + iVar12)" * (cast_expression "(int *)(DAT_000c13c8 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c8 + iVar12)" ( (binary_expression "DAT_000c13c8 + iVar12" identifier + identifier) ))))) ;) (if_statement "if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" if (parenthesized_expression "(*(int *)(iVar11 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar11 + 0x28) == 1" (pointer_expression "*(int *)(iVar11 + 0x28)" * (cast_expression "(int *)(iVar11 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x28)" ( (binary_expression "iVar11 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" { (if_statement "if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" if (parenthesized_expression "(((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))))" ( (binary_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" ( (parenthesized_expression "(DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))" ( (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)" (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14)" identifier != (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) ))))) && (parenthesized_expression "(*(int *)(iVar11 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar11 + 0x14) != -1" (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" { (expression_statement "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);" (call_expression "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "piVar1 = (int *)(iVar11 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar11 + 0x10)" identifier = (cast_expression "(int *)(iVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n            FUN_000668b0(iVar11);\n          }" { (expression_statement "FUN_000668b0(iVar11);" (call_expression "FUN_000668b0(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) })) })) (expression_statement "iVar12 = iVar12 + 4;" (assignment_expression "iVar12 = iVar12 + 4" identifier = (binary_expression "iVar12 + 4" identifier + number_literal)) ;) })) (expression_statement "FUN_000660d0("array.c",0x238);" (call_expression "FUN_000660d0("array.c",0x238)" identifier (argument_list "("array.c",0x238)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar4 = FUN_00018020(local_38);" (assignment_expression "uVar4 = FUN_00018020(local_38)" identifier = (call_expression "FUN_00018020(local_38)" identifier (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "iVar12 = -1;" (assignment_expression "iVar12 = -1" identifier = number_literal) ;) (expression_statement "FUN_00066470(uVar5,uVar4);" (call_expression "FUN_00066470(uVar5,uVar4)" identifier (argument_list "(uVar5,uVar4)" ( identifier , identifier ))) ;) }))) (expression_statement "puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);" (assignment_expression "puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38)" identifier = (cast_expression "(undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*local_34 + 0x10))(local_34,local_38)" (parenthesized_expression "(**(code **)(*local_34 + 0x10))" ( (pointer_expression "**(code **)(*local_34 + 0x10)" * (pointer_expression "*(code **)(*local_34 + 0x10)" * (cast_expression "(code **)(*local_34 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_34 + 0x10)" ( (binary_expression "*local_34 + 0x10" (pointer_expression "*local_34" * identifier) + number_literal) ))))) )) (argument_list "(local_34,local_38)" ( identifier , identifier ))))) ;) (if_statement "if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }" if (parenthesized_expression "((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0))" ( (binary_expression "(puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)" (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" ( (binary_expression "puVar6 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)" ( (comma_expression "piVar1 = (int *)*puVar6, piVar1 == (int *)0x0" (assignment_expression "piVar1 = (int *)*puVar6" identifier = (cast_expression "(int *)*puVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar6" * identifier))) , (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }" { (if_statement "if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }" if (parenthesized_expression "((DAT_000c3760 & 5) != 0)" ( (binary_expression "(DAT_000c3760 & 5) != 0" (parenthesized_expression "(DAT_000c3760 & 5)" ( (binary_expression "DAT_000c3760 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }" { (if_statement "if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }" if (parenthesized_expression "(((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14)))))" ( (binary_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))" (parenthesized_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(local_38 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(local_38 + 0x2c) & 4)" ( (binary_expression "*(byte *)(local_38 + 0x2c) & 4" (pointer_expression "*(byte *)(local_38 + 0x2c)" * (cast_expression "(byte *)(local_38 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x2c)" ( (binary_expression "local_38 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))" ( (parenthesized_expression "(*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14)))" ( (binary_expression "*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))" (binary_expression "*(int *)(local_38 + 0x14) != -1" (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(DAT_000c4994 != *(int *)(local_38 + 0x14))" ( (binary_expression "DAT_000c4994 != *(int *)(local_38 + 0x14)" identifier != (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }" { (expression_statement "local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);" (assignment_expression "local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000bf8f0,DAT_000c4994,local_38)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "FUN_000660d0("array.c",0x23f);" (call_expression "FUN_000660d0("array.c",0x23f)" identifier (argument_list "("array.c",0x23f)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "puVar7 = PTR_FUN_000bf8e8;" (assignment_expression "puVar7 = PTR_FUN_000bf8e8" identifier = identifier) ;) (expression_statement "uVar8 = FUN_00018020(local_34);" (assignment_expression "uVar8 = FUN_00018020(local_34)" identifier = (call_expression "FUN_00018020(local_34)" identifier (argument_list "(local_34)" ( identifier )))) ;) (expression_statement "uVar4 = *(undefined4 *)(local_38 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(local_38 + 8)" identifier = (pointer_expression "*(undefined4 *)(local_38 + 8)" * (cast_expression "(undefined4 *)(local_38 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 8)" ( (binary_expression "local_38 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(local_38 + 0xc);" (assignment_expression "uVar5 = *(undefined4 *)(local_38 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(local_38 + 0xc)" * (cast_expression "(undefined4 *)(local_38 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0xc)" ( (binary_expression "local_38 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);" (assignment_expression "uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5)" identifier = (call_expression "dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5)" identifier (argument_list "(0,"delete: index `%.*s\' not in array `%s\'",5)" ( number_literal , (string_literal ""delete: index `%.*s\' not in array `%s\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "(*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);" (call_expression "(*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8)" (parenthesized_expression "(*(code *)puVar7)" ( (pointer_expression "*(code *)puVar7" * (cast_expression "(code *)puVar7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,uVar5,uVar4,uVar8)" ( identifier , identifier , identifier , identifier ))) ;) })) (expression_statement "iVar12 = param_2 * -4;" (assignment_expression "iVar12 = param_2 * -4" identifier = (binary_expression "param_2 * -4" identifier * number_literal)) ;) (do_statement "do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);" do (compound_statement "{\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      }" { (expression_statement "iVar12 = iVar12 + 4;" (assignment_expression "iVar12 = iVar12 + 4" identifier = (binary_expression "iVar12 + 4" identifier + number_literal)) ;) (expression_statement "iVar11 = *(int *)(DAT_000c13c8 + iVar12);" (assignment_expression "iVar11 = *(int *)(DAT_000c13c8 + iVar12)" identifier = (pointer_expression "*(int *)(DAT_000c13c8 + iVar12)" * (cast_expression "(int *)(DAT_000c13c8 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c8 + iVar12)" ( (binary_expression "DAT_000c13c8 + iVar12" identifier + identifier) ))))) ;) (if_statement "if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" if (parenthesized_expression "(*(int *)(iVar11 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar11 + 0x28) == 1" (pointer_expression "*(int *)(iVar11 + 0x28)" * (cast_expression "(int *)(iVar11 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x28)" ( (binary_expression "iVar11 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" { (if_statement "if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" if (parenthesized_expression "(((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))))" ( (binary_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar11 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar11 + 0x2c)" * (cast_expression "(byte *)(iVar11 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x2c)" ( (binary_expression "iVar11 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" ( (parenthesized_expression "(DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))" ( (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)" (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14)" identifier != (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) ))))) && (parenthesized_expression "(*(int *)(iVar11 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar11 + 0x14) != -1" (pointer_expression "*(int *)(iVar11 + 0x14)" * (cast_expression "(int *)(iVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) )))) != number_literal) ))) )) ))) )) (compound_statement "{\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" { (expression_statement "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);" (call_expression "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "piVar1 = (int *)(iVar11 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar11 + 0x10)" identifier = (cast_expression "(int *)(iVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (if_statement "if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }" if (parenthesized_expression "(*piVar1 == 0)" ( (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" * identifier) == number_literal) )) (compound_statement "{\n            FUN_000668b0(iVar11);\n          }" { (expression_statement "FUN_000668b0(iVar11);" (call_expression "FUN_000668b0(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) })) })) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(0 < param_2)" ( (binary_expression "0 < param_2" number_literal < identifier) )) ;) (return_statement "return;" return ;) })) (if_statement "if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }" if (parenthesized_expression "(1 < param_2)" ( (binary_expression "1 < param_2" number_literal < identifier) )) (compound_statement "{\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }" { (if_statement "if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }" if (parenthesized_expression "(piVar1[10] != 5)" ( (binary_expression "piVar1[10] != 5" (subscript_expression "piVar1[10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }" { (expression_statement "iVar12 = param_2 * -4;" (assignment_expression "iVar12 = param_2 * -4" identifier = (binary_expression "param_2 * -4" identifier * number_literal)) ;) (expression_statement "puVar7 = PTR_DAT_000bf8f0;" (assignment_expression "puVar7 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar11 = DAT_000c4994;" (assignment_expression "iVar11 = DAT_000c4994" identifier = identifier) ;) (do_statement "do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);" do (compound_statement "{\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        }" { (expression_statement "iVar12 = iVar12 + 4;" (assignment_expression "iVar12 = iVar12 + 4" identifier = (binary_expression "iVar12 + 4" identifier + number_literal)) ;) (expression_statement "iVar2 = *(int *)(DAT_000c13c8 + iVar12);" (assignment_expression "iVar2 = *(int *)(DAT_000c13c8 + iVar12)" identifier = (pointer_expression "*(int *)(DAT_000c13c8 + iVar12)" * (cast_expression "(int *)(DAT_000c13c8 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c8 + iVar12)" ( (binary_expression "DAT_000c13c8 + iVar12" identifier + identifier) ))))) ;) (if_statement "if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }" if (parenthesized_expression "(*(int *)(iVar2 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar2 + 0x28) == 1" (pointer_expression "*(int *)(iVar2 + 0x28)" * (cast_expression "(int *)(iVar2 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x28)" ( (binary_expression "iVar2 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }" { (if_statement "if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }" if (parenthesized_expression "(((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11))))" ( (binary_expression "((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))" (parenthesized_expression "((*(byte *)(iVar2 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar2 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar2 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar2 + 0x2c)" * (cast_expression "(byte *)(iVar2 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x2c)" ( (binary_expression "iVar2 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))" ( (parenthesized_expression "(*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11))" ( (binary_expression "*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)" (binary_expression "*(int *)(iVar2 + 0x14) != -1" (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(iVar2 + 0x14) != iVar11)" ( (binary_expression "*(int *)(iVar2 + 0x14) != iVar11" (pointer_expression "*(int *)(iVar2 + 0x14)" * (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) != identifier) ))) )) ))) )) (compound_statement "{\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }" { (expression_statement "(*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);" (call_expression "(*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar7,iVar11,iVar2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "piVar10 = (int *)(iVar2 + 0x10);" (assignment_expression "piVar10 = (int *)(iVar2 + 0x10)" identifier = (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar10 = *piVar10 + -1;" (assignment_expression "*piVar10 = *piVar10 + -1" (pointer_expression "*piVar10" * identifier) = (binary_expression "*piVar10 + -1" (pointer_expression "*piVar10" * identifier) + number_literal)) ;) (expression_statement "puVar7 = PTR_DAT_000bf8f0;" (assignment_expression "puVar7 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar11 = DAT_000c4994;" (assignment_expression "iVar11 = DAT_000c4994" identifier = identifier) ;) (if_statement "if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }" if (parenthesized_expression "(*piVar10 == 0)" ( (binary_expression "*piVar10 == 0" (pointer_expression "*piVar10" * identifier) == number_literal) )) (compound_statement "{\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }" { (expression_statement "FUN_000668b0(iVar2);" (call_expression "FUN_000668b0(iVar2)" identifier (argument_list "(iVar2)" ( identifier ))) ;) (expression_statement "puVar7 = PTR_DAT_000bf8f0;" (assignment_expression "puVar7 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar11 = DAT_000c4994;" (assignment_expression "iVar11 = DAT_000c4994" identifier = identifier) ;) })) })) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" identifier = (binary_expression "param_2 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) ;) (if_statement "if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }" if (parenthesized_expression "(((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11))))" ( (binary_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))" (parenthesized_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(local_38 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(local_38 + 0x2c) & 4)" ( (binary_expression "*(byte *)(local_38 + 0x2c) & 4" (pointer_expression "*(byte *)(local_38 + 0x2c)" * (cast_expression "(byte *)(local_38 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x2c)" ( (binary_expression "local_38 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))" ( (parenthesized_expression "(*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11))" ( (binary_expression "*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)" (binary_expression "*(int *)(local_38 + 0x14) != -1" (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(local_38 + 0x14) != iVar11)" ( (binary_expression "*(int *)(local_38 + 0x14) != iVar11" (pointer_expression "*(int *)(local_38 + 0x14)" * (cast_expression "(int *)(local_38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x14)" ( (binary_expression "local_38 + 0x14" identifier + number_literal) )))) != identifier) ))) )) ))) )) (compound_statement "{\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }" { (expression_statement "local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);" (assignment_expression "local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar7,iVar11,local_38)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "FUN_000660d0("array.c",0x24d);" (call_expression "FUN_000660d0("array.c",0x24d)" identifier (argument_list "("array.c",0x24d)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar4 = *(undefined4 *)(local_38 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(local_38 + 8)" identifier = (pointer_expression "*(undefined4 *)(local_38 + 8)" * (cast_expression "(undefined4 *)(local_38 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 8)" ( (binary_expression "local_38 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = *(undefined4 *)(local_38 + 0xc);" (assignment_expression "uVar5 = *(undefined4 *)(local_38 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(local_38 + 0xc)" * (cast_expression "(undefined4 *)(local_38 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0xc)" ( (binary_expression "local_38 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = FUN_00018020(local_34);" (assignment_expression "uVar8 = FUN_00018020(local_34)" identifier = (call_expression "FUN_00018020(local_34)" identifier (argument_list "(local_34)" ( identifier )))) ;) (expression_statement "uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);" (assignment_expression "uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" identifier = (call_expression "dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" identifier (argument_list "(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" ( number_literal , (string_literal ""attempt to use scalar `%s[\"%.*s\"]\' as an array"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar9,uVar8,uVar5,uVar4);" (call_expression "FUN_00066470(uVar9,uVar8,uVar5,uVar4)" identifier (argument_list "(uVar9,uVar8,uVar5,uVar4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar12 = *(int *)(local_38 + 0x10) + -1;" (assignment_expression "iVar12 = *(int *)(local_38 + 0x10) + -1" identifier = (binary_expression "*(int *)(local_38 + 0x10) + -1" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(local_38 + 0x10) = iVar12;" (assignment_expression "*(int *)(local_38 + 0x10) = iVar12" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_34 = piVar1;" (assignment_expression "local_34 = piVar1" identifier = identifier) ;) (if_statement "if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_000668b0(local_38);\n        }" { (expression_statement "FUN_000668b0(local_38);" (call_expression "FUN_000668b0(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) (labeled_statement "LAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" statement_identifier : (if_statement "if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" if (parenthesized_expression "(piVar1[10] == 5)" ( (binary_expression "piVar1[10] == 5" (subscript_expression "piVar1[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }" { (expression_statement "piVar10 = (int *)FUN_000170e0();" (assignment_expression "piVar10 = (int *)FUN_000170e0()" identifier = (cast_expression "(int *)FUN_000170e0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000170e0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(**(code **)(*piVar10 + 0x14))(piVar1,0);" (call_expression "(**(code **)(*piVar10 + 0x14))(piVar1,0)" (parenthesized_expression "(**(code **)(*piVar10 + 0x14))" ( (pointer_expression "**(code **)(*piVar10 + 0x14)" * (pointer_expression "*(code **)(*piVar10 + 0x14)" * (cast_expression "(code **)(*piVar10 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 0x14)" ( (binary_expression "*piVar10 + 0x14" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) )) (argument_list "(piVar1,0)" ( identifier , number_literal ))) ;) (expression_statement "free((void *)piVar1[4]);" (call_expression "free((void *)piVar1[4])" identifier (argument_list "((void *)piVar1[4])" ( (cast_expression "(void *)piVar1[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar1[4]" identifier [ number_literal ])) ))) ;) (expression_statement "*piVar1 = (int)DAT_000bf900;" (assignment_expression "*piVar1 = (int)DAT_000bf900" (pointer_expression "*piVar1" * identifier) = (cast_expression "(int)DAT_000bf900" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "DAT_000bf900 = piVar1;" (assignment_expression "DAT_000bf900 = piVar1" identifier = identifier) ;) }) (else_clause "else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" else (compound_statement "{\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" { (expression_statement "iVar12 = piVar1[4];" (assignment_expression "iVar12 = piVar1[4]" identifier = (subscript_expression "piVar1[4]" identifier [ number_literal ])) ;) (expression_statement "piVar1[4] = iVar12 + -1;" (assignment_expression "piVar1[4] = iVar12 + -1" (subscript_expression "piVar1[4]" identifier [ number_literal ]) = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }" if (parenthesized_expression "(iVar12 + -1 < 1)" ( (binary_expression "iVar12 + -1 < 1" (binary_expression "iVar12 + -1" identifier + number_literal) < number_literal) )) (compound_statement "{\n            FUN_000668b0(piVar1);\n          }" { (expression_statement "FUN_000668b0(piVar1);" (call_expression "FUN_000668b0(piVar1)" identifier (argument_list "(piVar1)" ( identifier ))) ;) })) })))) (expression_statement "(**(code **)(*local_34 + 0x18))(local_34,local_38);" (call_expression "(**(code **)(*local_34 + 0x18))(local_34,local_38)" (parenthesized_expression "(**(code **)(*local_34 + 0x18))" ( (pointer_expression "**(code **)(*local_34 + 0x18)" * (pointer_expression "*(code **)(*local_34 + 0x18)" * (cast_expression "(code **)(*local_34 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_34 + 0x18)" ( (binary_expression "*local_34 + 0x18" (pointer_expression "*local_34" * identifier) + number_literal) ))))) )) (argument_list "(local_34,local_38)" ( identifier , identifier ))) ;) (expression_statement "iVar12 = *(int *)(local_38 + 0x10) + -1;" (assignment_expression "iVar12 = *(int *)(local_38 + 0x10) + -1" identifier = (binary_expression "*(int *)(local_38 + 0x10) + -1" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(local_38 + 0x10) = iVar12;" (assignment_expression "*(int *)(local_38 + 0x10) = iVar12" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_000668b0(local_38);\n        }" { (expression_statement "FUN_000668b0(local_38);" (call_expression "FUN_000668b0(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) (if_statement "if (local_34[8] != 0) {\n          return;\n        }" if (parenthesized_expression "(local_34[8] != 0)" ( (binary_expression "local_34[8] != 0" (subscript_expression "local_34[8]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "local_34[10] = 5;" (assignment_expression "local_34[10] = 5" (subscript_expression "local_34[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34[1] = 0;" (assignment_expression "local_34[1] = 0" (subscript_expression "local_34[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34[7] = 0;" (assignment_expression "local_34[7] = 0" (subscript_expression "local_34[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34[5] = 0;" (assignment_expression "local_34[5] = 0" (subscript_expression "local_34[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_34[0xb] = 0;" (assignment_expression "local_34[0xb] = 0" (subscript_expression "local_34[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*local_34 = (int)&DAT_000bd4e0;" (assignment_expression "*local_34 = (int)&DAT_000bd4e0" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)&DAT_000bd4e0" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&DAT_000bd4e0" & identifier))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar11 = *(int *)(local_38 + 0x10) + -1;" (assignment_expression "iVar11 = *(int *)(local_38 + 0x10) + -1" identifier = (binary_expression "*(int *)(local_38 + 0x10) + -1" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(local_38 + 0x10) = iVar11;" (assignment_expression "*(int *)(local_38 + 0x10) = iVar11" (pointer_expression "*(int *)(local_38 + 0x10)" * (cast_expression "(int *)(local_38 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x10)" ( (binary_expression "local_38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_34 = piVar1;" (assignment_expression "local_34 = piVar1" identifier = identifier) ;) (if_statement "if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        FUN_000668b0(local_38);\n      }" { (expression_statement "FUN_000668b0(local_38);" (call_expression "FUN_000668b0(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) })) })) (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" identifier = identifier) ;) (if_statement "if (iVar12 < 1) goto LAB_00018fc5;" if (parenthesized_expression "(iVar12 < 1)" ( (binary_expression "iVar12 < 1" identifier < number_literal) )) (goto_statement "goto LAB_00018fc5;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) ))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00018d20(int *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int *piVar10;\n  int iVar11;\n  int iVar12;\n  int local_38;\n  int *local_34;\n  \n  local_34 = param_1;\n  if (param_2 == 0) {\n    FUN_000170e0();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }\n  do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00018d20(int *param_1,int param_2)" (identifier "FUN_00018d20") (parameter_list "(int *param_1,int param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  code *pcVar3;\n  undefined4 uVar4;\n  undefined4 uVar5;\n  undefined4 *puVar6;\n  undefined *puVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  int *piVar10;\n  int iVar11;\n  int iVar12;\n  int local_38;\n  int *local_34;\n  \n  local_34 = param_1;\n  if (param_2 == 0) {\n    FUN_000170e0();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }\n  do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int *local_34;" (primitive_type "int") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (expression_statement "local_34 = param_1;" (assignment_expression "local_34 = param_1" (identifier "local_34") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (param_2 == 0) {\n    FUN_000170e0();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000170e0();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }" ({ "{") (expression_statement "FUN_000170e0();" (call_expression "FUN_000170e0()" (identifier "FUN_000170e0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(**(code **)(*param_1 + 0x14))();" (call_expression "(**(code **)(*param_1 + 0x14))()" (parenthesized_expression "(**(code **)(*param_1 + 0x14))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x14)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x14)" (* "*") (cast_expression "(code **)(*param_1 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x14)" (( "(") (binary_expression "*param_1 + 0x14" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_2 < 1) {\n                    \n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }" (if "if") (parenthesized_expression "(param_2 < 1)" (( "(") (binary_expression "param_2 < 1" (identifier "param_2") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                    \n    pcVar3 = (code *)invalidInstructionException();\n    (*pcVar3)();\n  }" ({ "{") (expression_statement "pcVar3 = (code *)invalidInstructionException();" (assignment_expression "pcVar3 = (code *)invalidInstructionException()" (identifier "pcVar3") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (do_statement "do {\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  } while( true );" (do "do") (compound_statement "{\n    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);\n    if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }\n    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);\n    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }\n    if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }\n    param_2 = iVar12;\n    if (iVar12 < 1) goto LAB_00018fc5;\n  }" ({ "{") (expression_statement "local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);" (assignment_expression "local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4)" (identifier "local_38") (= "=") (pointer_expression "*(int *)(DAT_000c13c8 + 4 + param_2 * -4)" (* "*") (cast_expression "(int *)(DAT_000c13c8 + 4 + param_2 * -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000c13c8 + 4 + param_2 * -4)" (( "(") (binary_expression "DAT_000c13c8 + 4 + param_2 * -4" (binary_expression "DAT_000c13c8 + 4" (identifier "DAT_000c13c8") (+ "+") (number_literal "4")) (+ "+") (binary_expression "param_2 * -4" (identifier "param_2") (* "*") (number_literal "-4"))) () ")"))))) (; ";")) (if_statement "if (*(int *)(local_38 + 0x28) == 1) {\n      iVar12 = param_2 + -1;\n    }\n    else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }" (if "if") (parenthesized_expression "(*(int *)(local_38 + 0x28) == 1)" (( "(") (binary_expression "*(int *)(local_38 + 0x28) == 1" (pointer_expression "*(int *)(local_38 + 0x28)" (* "*") (cast_expression "(int *)(local_38 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x28)" (( "(") (binary_expression "local_38 + 0x28" (identifier "local_38") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      iVar12 = param_2 + -1;\n    }" ({ "{") (expression_statement "iVar12 = param_2 + -1;" (assignment_expression "iVar12 = param_2 + -1" (identifier "iVar12") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }" (else "else") (compound_statement "{\n      iVar12 = param_2 * -4 + 8;\n      while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }\n      FUN_000660d0("array.c",0x238);\n      uVar4 = FUN_00018020(local_38);\n      param_2 = 0;\n      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      iVar12 = -1;\n      FUN_00066470(uVar5,uVar4);\n    }" ({ "{") (expression_statement "iVar12 = param_2 * -4 + 8;" (assignment_expression "iVar12 = param_2 * -4 + 8" (identifier "iVar12") (= "=") (binary_expression "param_2 * -4 + 8" (binary_expression "param_2 * -4" (identifier "param_2") (* "*") (number_literal "-4")) (+ "+") (number_literal "8"))) (; ";")) (while_statement "while (param_2 = param_2 + -1, param_2 != 0) {\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }" (while "while") (parenthesized_expression "(param_2 = param_2 + -1, param_2 != 0)" (( "(") (comma_expression "param_2 = param_2 + -1, param_2 != 0" (assignment_expression "param_2 = param_2 + -1" (identifier "param_2") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        iVar12 = iVar12 + 4;\n      }" ({ "{") (expression_statement "iVar11 = *(int *)(DAT_000c13c8 + iVar12);" (assignment_expression "iVar11 = *(int *)(DAT_000c13c8 + iVar12)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(DAT_000c13c8 + iVar12)" (* "*") (cast_expression "(int *)(DAT_000c13c8 + iVar12)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000c13c8 + iVar12)" (( "(") (binary_expression "DAT_000c13c8 + iVar12" (identifier "DAT_000c13c8") (+ "+") (identifier "iVar12")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar11 + 0x28) == 1)" (( "(") (binary_expression "*(int *)(iVar11 + 0x28) == 1" (pointer_expression "*(int *)(iVar11 + 0x28)" (* "*") (cast_expression "(int *)(iVar11 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x28)" (( "(") (binary_expression "iVar11 + 0x28" (identifier "iVar11") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" ({ "{") (if_statement "if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" (if "if") (parenthesized_expression "(((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))))" (( "(") (binary_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(iVar11 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(iVar11 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar11 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar11 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x2c)" (( "(") (binary_expression "iVar11 + 0x2c" (identifier "iVar11") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" (( "(") (parenthesized_expression "(DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))" (( "(") (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)" (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14)" (identifier "DAT_000c4994") (!= "!=") (pointer_expression "*(int *)(iVar11 + 0x14)" (* "*") (cast_expression "(int *)(iVar11 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x14)" (( "(") (binary_expression "iVar11 + 0x14" (identifier "iVar11") (+ "+") (number_literal "0x14")) () ")"))))) (&& "&&") (parenthesized_expression "(*(int *)(iVar11 + 0x14) != -1)" (( "(") (binary_expression "*(int *)(iVar11 + 0x14) != -1" (pointer_expression "*(int *)(iVar11 + 0x14)" (* "*") (cast_expression "(int *)(iVar11 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x14)" (( "(") (binary_expression "iVar11 + 0x14" (identifier "iVar11") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" ({ "{") (expression_statement "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);" (call_expression "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf944" (* "*") (cast_expression "(code *)PTR_FUN_000bf944" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf944"))) () ")")) (argument_list "(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" (( "(") (identifier "PTR_DAT_000bf8f0") (, ",") (identifier "DAT_000c4994") (, ",") (identifier "iVar11") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar1 = (int *)(iVar11 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar11 + 0x10)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar11 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x10)" (( "(") (binary_expression "iVar11 + 0x10" (identifier "iVar11") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }" (if "if") (parenthesized_expression "(*piVar1 == 0)" (( "(") (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_000668b0(iVar11);\n          }" ({ "{") (expression_statement "FUN_000668b0(iVar11);" (call_expression "FUN_000668b0(iVar11)" (identifier "FUN_000668b0") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar12 = iVar12 + 4;" (assignment_expression "iVar12 = iVar12 + 4" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 4" (identifier "iVar12") (+ "+") (number_literal "4"))) (; ";")) (} "}"))) (expression_statement "FUN_000660d0("array.c",0x238);" (call_expression "FUN_000660d0("array.c",0x238)" (identifier "FUN_000660d0") (argument_list "("array.c",0x238)" (( "(") (string_literal ""array.c"" (" """) (string_content "array.c") (" """)) (, ",") (number_literal "0x238") () ")"))) (; ";")) (expression_statement "uVar4 = FUN_00018020(local_38);" (assignment_expression "uVar4 = FUN_00018020(local_38)" (identifier "uVar4") (= "=") (call_expression "FUN_00018020(local_38)" (identifier "FUN_00018020") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")")))) (; ";")) (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" (identifier "param_2") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "uVar5") (= "=") (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "dcgettext") (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to use array `%s\' in a scalar context"" (" """) (string_content "attempt to use array `%s") (escape_sequence "\'") (string_content " in a scalar context") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "iVar12 = -1;" (assignment_expression "iVar12 = -1" (identifier "iVar12") (= "=") (number_literal "-1")) (; ";")) (expression_statement "FUN_00066470(uVar5,uVar4);" (call_expression "FUN_00066470(uVar5,uVar4)" (identifier "FUN_00066470") (argument_list "(uVar5,uVar4)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar4") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);" (assignment_expression "puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38)" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*local_34 + 0x10))(local_34,local_38)" (parenthesized_expression "(**(code **)(*local_34 + 0x10))" (( "(") (pointer_expression "**(code **)(*local_34 + 0x10)" (* "*") (pointer_expression "*(code **)(*local_34 + 0x10)" (* "*") (cast_expression "(code **)(*local_34 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_34 + 0x10)" (( "(") (binary_expression "*local_34 + 0x10" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(local_34,local_38)" (( "(") (identifier "local_34") (, ",") (identifier "local_38") () ")"))))) (; ";")) (if_statement "if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }" (if "if") (parenthesized_expression "((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0))" (( "(") (binary_expression "(puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)" (parenthesized_expression "(puVar6 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar6 == (undefined4 *)0x0" (identifier "puVar6") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)" (( "(") (comma_expression "piVar1 = (int *)*puVar6, piVar1 == (int *)0x0" (assignment_expression "piVar1 = (int *)*puVar6" (identifier "piVar1") (= "=") (cast_expression "(int *)*puVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")))) (, ",") (binary_expression "piVar1 == (int *)0x0" (identifier "piVar1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n      if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }\n      iVar12 = param_2 * -4;\n      do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);\n      return;\n    }" ({ "{") (if_statement "if ((DAT_000c3760 & 5) != 0) {\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }" (if "if") (parenthesized_expression "((DAT_000c3760 & 5) != 0)" (( "(") (binary_expression "(DAT_000c3760 & 5) != 0" (parenthesized_expression "(DAT_000c3760 & 5)" (( "(") (binary_expression "DAT_000c3760 & 5" (identifier "DAT_000c3760") (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }\n        FUN_000660d0("array.c",0x23f);\n        puVar7 = PTR_FUN_000bf8e8;\n        uVar8 = FUN_00018020(local_34);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);\n        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);\n      }" ({ "{") (if_statement "if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }" (if "if") (parenthesized_expression "(((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14)))))" (( "(") (binary_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))" (parenthesized_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(local_38 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(local_38 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(local_38 + 0x2c) & 4" (pointer_expression "*(byte *)(local_38 + 0x2c)" (* "*") (cast_expression "(byte *)(local_38 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x2c)" (( "(") (binary_expression "local_38 + 0x2c" (identifier "local_38") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))" (( "(") (parenthesized_expression "(*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14)))" (( "(") (binary_expression "*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))" (binary_expression "*(int *)(local_38 + 0x14) != -1" (pointer_expression "*(int *)(local_38 + 0x14)" (* "*") (cast_expression "(int *)(local_38 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x14)" (( "(") (binary_expression "local_38 + 0x14" (identifier "local_38") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) (&& "&&") (parenthesized_expression "(DAT_000c4994 != *(int *)(local_38 + 0x14))" (( "(") (binary_expression "DAT_000c4994 != *(int *)(local_38 + 0x14)" (identifier "DAT_000c4994") (!= "!=") (pointer_expression "*(int *)(local_38 + 0x14)" (* "*") (cast_expression "(int *)(local_38 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x14)" (( "(") (binary_expression "local_38 + 0x14" (identifier "local_38") (+ "+") (number_literal "0x14")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);\n        }" ({ "{") (expression_statement "local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);" (assignment_expression "local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38)" (identifier "local_38") (= "=") (call_expression "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf944" (* "*") (cast_expression "(code *)PTR_FUN_000bf944" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf944"))) () ")")) (argument_list "(PTR_DAT_000bf8f0,DAT_000c4994,local_38)" (( "(") (identifier "PTR_DAT_000bf8f0") (, ",") (identifier "DAT_000c4994") (, ",") (identifier "local_38") () ")")))) (; ";")) (} "}"))) (expression_statement "FUN_000660d0("array.c",0x23f);" (call_expression "FUN_000660d0("array.c",0x23f)" (identifier "FUN_000660d0") (argument_list "("array.c",0x23f)" (( "(") (string_literal ""array.c"" (" """) (string_content "array.c") (" """)) (, ",") (number_literal "0x23f") () ")"))) (; ";")) (expression_statement "puVar7 = PTR_FUN_000bf8e8;" (assignment_expression "puVar7 = PTR_FUN_000bf8e8" (identifier "puVar7") (= "=") (identifier "PTR_FUN_000bf8e8")) (; ";")) (expression_statement "uVar8 = FUN_00018020(local_34);" (assignment_expression "uVar8 = FUN_00018020(local_34)" (identifier "uVar8") (= "=") (call_expression "FUN_00018020(local_34)" (identifier "FUN_00018020") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")")))) (; ";")) (expression_statement "uVar4 = *(undefined4 *)(local_38 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(local_38 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(local_38 + 8)" (* "*") (cast_expression "(undefined4 *)(local_38 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 8)" (( "(") (binary_expression "local_38 + 8" (identifier "local_38") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(undefined4 *)(local_38 + 0xc);" (assignment_expression "uVar5 = *(undefined4 *)(local_38 + 0xc)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(local_38 + 0xc)" (* "*") (cast_expression "(undefined4 *)(local_38 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0xc)" (( "(") (binary_expression "local_38 + 0xc" (identifier "local_38") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);" (assignment_expression "uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5)" (identifier "uVar9") (= "=") (call_expression "dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5)" (identifier "dcgettext") (argument_list "(0,"delete: index `%.*s\' not in array `%s\'",5)" (( "(") (number_literal "0") (, ",") (string_literal ""delete: index `%.*s\' not in array `%s\'"" (" """) (string_content "delete: index `%.*s") (escape_sequence "\'") (string_content " not in array `%s") (escape_sequence "\'") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "(*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);" (call_expression "(*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8)" (parenthesized_expression "(*(code *)puVar7)" (( "(") (pointer_expression "*(code *)puVar7" (* "*") (cast_expression "(code *)puVar7" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar7"))) () ")")) (argument_list "(uVar9,uVar5,uVar4,uVar8)" (( "(") (identifier "uVar9") (, ",") (identifier "uVar5") (, ",") (identifier "uVar4") (, ",") (identifier "uVar8") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar12 = param_2 * -4;" (assignment_expression "iVar12 = param_2 * -4" (identifier "iVar12") (= "=") (binary_expression "param_2 * -4" (identifier "param_2") (* "*") (number_literal "-4"))) (; ";")) (do_statement "do {\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      } while (0 < param_2);" (do "do") (compound_statement "{\n        iVar12 = iVar12 + 4;\n        iVar11 = *(int *)(DAT_000c13c8 + iVar12);\n        if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }\n        param_2 = param_2 + -1;\n      }" ({ "{") (expression_statement "iVar12 = iVar12 + 4;" (assignment_expression "iVar12 = iVar12 + 4" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 4" (identifier "iVar12") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "iVar11 = *(int *)(DAT_000c13c8 + iVar12);" (assignment_expression "iVar11 = *(int *)(DAT_000c13c8 + iVar12)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(DAT_000c13c8 + iVar12)" (* "*") (cast_expression "(int *)(DAT_000c13c8 + iVar12)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000c13c8 + iVar12)" (( "(") (binary_expression "DAT_000c13c8 + iVar12" (identifier "DAT_000c13c8") (+ "+") (identifier "iVar12")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar11 + 0x28) == 1) {\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(iVar11 + 0x28) == 1)" (( "(") (binary_expression "*(int *)(iVar11 + 0x28) == 1" (pointer_expression "*(int *)(iVar11 + 0x28)" (* "*") (cast_expression "(int *)(iVar11 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x28)" (( "(") (binary_expression "iVar11 + 0x28" (identifier "iVar11") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }\n          piVar1 = (int *)(iVar11 + 0x10);\n          *piVar1 = *piVar1 + -1;\n          if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }\n        }" ({ "{") (if_statement "if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" (if "if") (parenthesized_expression "(((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))))" (( "(") (binary_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||\n             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" (parenthesized_expression "((*(byte *)(iVar11 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(iVar11 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(iVar11 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar11 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar11 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x2c)" (( "(") (binary_expression "iVar11 + 0x2c" (identifier "iVar11") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))" (( "(") (parenthesized_expression "(DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1))" (( "(") (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)" (binary_expression "DAT_000c4994 != *(int *)(iVar11 + 0x14)" (identifier "DAT_000c4994") (!= "!=") (pointer_expression "*(int *)(iVar11 + 0x14)" (* "*") (cast_expression "(int *)(iVar11 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x14)" (( "(") (binary_expression "iVar11 + 0x14" (identifier "iVar11") (+ "+") (number_literal "0x14")) () ")"))))) (&& "&&") (parenthesized_expression "(*(int *)(iVar11 + 0x14) != -1)" (( "(") (binary_expression "*(int *)(iVar11 + 0x14) != -1" (pointer_expression "*(int *)(iVar11 + 0x14)" (* "*") (cast_expression "(int *)(iVar11 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x14)" (( "(") (binary_expression "iVar11 + 0x14" (identifier "iVar11") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);\n          }" ({ "{") (expression_statement "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);" (call_expression "(*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf944" (* "*") (cast_expression "(code *)PTR_FUN_000bf944" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf944"))) () ")")) (argument_list "(PTR_DAT_000bf8f0,DAT_000c4994,iVar11)" (( "(") (identifier "PTR_DAT_000bf8f0") (, ",") (identifier "DAT_000c4994") (, ",") (identifier "iVar11") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar1 = (int *)(iVar11 + 0x10);" (assignment_expression "piVar1 = (int *)(iVar11 + 0x10)" (identifier "piVar1") (= "=") (cast_expression "(int *)(iVar11 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x10)" (( "(") (binary_expression "iVar11 + 0x10" (identifier "iVar11") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + -1;" (assignment_expression "*piVar1 = *piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + -1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar1 == 0) {\n            FUN_000668b0(iVar11);\n          }" (if "if") (parenthesized_expression "(*piVar1 == 0)" (( "(") (binary_expression "*piVar1 == 0" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_000668b0(iVar11);\n          }" ({ "{") (expression_statement "FUN_000668b0(iVar11);" (call_expression "FUN_000668b0(iVar11)" (identifier "FUN_000668b0") (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" (identifier "param_2") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < param_2)" (( "(") (binary_expression "0 < param_2" (number_literal "0") (< "<") (identifier "param_2")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (1 < param_2) {\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }" (if "if") (parenthesized_expression "(1 < param_2)" (( "(") (binary_expression "1 < param_2" (number_literal "1") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n      if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }\n      iVar11 = *(int *)(local_38 + 0x10) + -1;\n      *(int *)(local_38 + 0x10) = iVar11;\n      local_34 = piVar1;\n      if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }\n    }" ({ "{") (if_statement "if (piVar1[10] != 5) {\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }" (if "if") (parenthesized_expression "(piVar1[10] != 5)" (( "(") (binary_expression "piVar1[10] != 5" (subscript_expression "piVar1[10]" (identifier "piVar1") ([ "[") (number_literal "10") (] "]")) (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n        iVar12 = param_2 * -4;\n        puVar7 = PTR_DAT_000bf8f0;\n        iVar11 = DAT_000c4994;\n        do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);\n        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }\n        FUN_000660d0("array.c",0x24d);\n        uVar4 = *(undefined4 *)(local_38 + 8);\n        uVar5 = *(undefined4 *)(local_38 + 0xc);\n        uVar8 = FUN_00018020(local_34);\n        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);\n        FUN_00066470(uVar9,uVar8,uVar5,uVar4);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        local_34 = piVar1;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\nLAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }\n        (**(code **)(*local_34 + 0x18))(local_34,local_38);\n        iVar12 = *(int *)(local_38 + 0x10) + -1;\n        *(int *)(local_38 + 0x10) = iVar12;\n        if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }\n        if (local_34[8] != 0) {\n          return;\n        }\n        local_34[10] = 5;\n        local_34[1] = 0;\n        local_34[7] = 0;\n        local_34[5] = 0;\n        local_34[0xb] = 0;\n        *local_34 = (int)&DAT_000bd4e0;\n        return;\n      }" ({ "{") (expression_statement "iVar12 = param_2 * -4;" (assignment_expression "iVar12 = param_2 * -4" (identifier "iVar12") (= "=") (binary_expression "param_2 * -4" (identifier "param_2") (* "*") (number_literal "-4"))) (; ";")) (expression_statement "puVar7 = PTR_DAT_000bf8f0;" (assignment_expression "puVar7 = PTR_DAT_000bf8f0" (identifier "puVar7") (= "=") (identifier "PTR_DAT_000bf8f0")) (; ";")) (expression_statement "iVar11 = DAT_000c4994;" (assignment_expression "iVar11 = DAT_000c4994" (identifier "iVar11") (= "=") (identifier "DAT_000c4994")) (; ";")) (do_statement "do {\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        } while (param_2 != 0);" (do "do") (compound_statement "{\n          iVar12 = iVar12 + 4;\n          iVar2 = *(int *)(DAT_000c13c8 + iVar12);\n          if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }\n          param_2 = param_2 + -1;\n        }" ({ "{") (expression_statement "iVar12 = iVar12 + 4;" (assignment_expression "iVar12 = iVar12 + 4" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 4" (identifier "iVar12") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "iVar2 = *(int *)(DAT_000c13c8 + iVar12);" (assignment_expression "iVar2 = *(int *)(DAT_000c13c8 + iVar12)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(DAT_000c13c8 + iVar12)" (* "*") (cast_expression "(int *)(DAT_000c13c8 + iVar12)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000c13c8 + iVar12)" (( "(") (binary_expression "DAT_000c13c8 + iVar12" (identifier "DAT_000c13c8") (+ "+") (identifier "iVar12")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar2 + 0x28) == 1) {\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 0x28) == 1)" (( "(") (binary_expression "*(int *)(iVar2 + 0x28) == 1" (pointer_expression "*(int *)(iVar2 + 0x28)" (* "*") (cast_expression "(int *)(iVar2 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x28)" (( "(") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }\n            piVar10 = (int *)(iVar2 + 0x10);\n            *piVar10 = *piVar10 + -1;\n            puVar7 = PTR_DAT_000bf8f0;\n            iVar11 = DAT_000c4994;\n            if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }\n          }" ({ "{") (if_statement "if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }" (if "if") (parenthesized_expression "(((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11))))" (( "(") (binary_expression "((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||\n               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))" (parenthesized_expression "((*(byte *)(iVar2 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(iVar2 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar2 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(iVar2 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar2 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar2 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x2c)" (( "(") (binary_expression "iVar2 + 0x2c" (identifier "iVar2") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))" (( "(") (parenthesized_expression "(*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11))" (( "(") (binary_expression "*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)" (binary_expression "*(int *)(iVar2 + 0x14) != -1" (pointer_expression "*(int *)(iVar2 + 0x14)" (* "*") (cast_expression "(int *)(iVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) (&& "&&") (parenthesized_expression "(*(int *)(iVar2 + 0x14) != iVar11)" (( "(") (binary_expression "*(int *)(iVar2 + 0x14) != iVar11" (pointer_expression "*(int *)(iVar2 + 0x14)" (* "*") (cast_expression "(int *)(iVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (identifier "iVar11")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);\n            }" ({ "{") (expression_statement "(*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);" (call_expression "(*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf944" (* "*") (cast_expression "(code *)PTR_FUN_000bf944" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf944"))) () ")")) (argument_list "(puVar7,iVar11,iVar2)" (( "(") (identifier "puVar7") (, ",") (identifier "iVar11") (, ",") (identifier "iVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar10 = (int *)(iVar2 + 0x10);" (assignment_expression "piVar10 = (int *)(iVar2 + 0x10)" (identifier "piVar10") (= "=") (cast_expression "(int *)(iVar2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*piVar10 = *piVar10 + -1;" (assignment_expression "*piVar10 = *piVar10 + -1" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (= "=") (binary_expression "*piVar10 + -1" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar7 = PTR_DAT_000bf8f0;" (assignment_expression "puVar7 = PTR_DAT_000bf8f0" (identifier "puVar7") (= "=") (identifier "PTR_DAT_000bf8f0")) (; ";")) (expression_statement "iVar11 = DAT_000c4994;" (assignment_expression "iVar11 = DAT_000c4994" (identifier "iVar11") (= "=") (identifier "DAT_000c4994")) (; ";")) (if_statement "if (*piVar10 == 0) {\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }" (if "if") (parenthesized_expression "(*piVar10 == 0)" (( "(") (binary_expression "*piVar10 == 0" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_000668b0(iVar2);\n              puVar7 = PTR_DAT_000bf8f0;\n              iVar11 = DAT_000c4994;\n            }" ({ "{") (expression_statement "FUN_000668b0(iVar2);" (call_expression "FUN_000668b0(iVar2)" (identifier "FUN_000668b0") (argument_list "(iVar2)" (( "(") (identifier "iVar2") () ")"))) (; ";")) (expression_statement "puVar7 = PTR_DAT_000bf8f0;" (assignment_expression "puVar7 = PTR_DAT_000bf8f0" (identifier "puVar7") (= "=") (identifier "PTR_DAT_000bf8f0")) (; ";")) (expression_statement "iVar11 = DAT_000c4994;" (assignment_expression "iVar11 = DAT_000c4994" (identifier "iVar11") (= "=") (identifier "DAT_000c4994")) (; ";")) (} "}"))) (} "}"))) (expression_statement "param_2 = param_2 + -1;" (assignment_expression "param_2 = param_2 + -1" (identifier "param_2") (= "=") (binary_expression "param_2 + -1" (identifier "param_2") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }" (if "if") (parenthesized_expression "(((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11))))" (( "(") (binary_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0) ||\n           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))" (parenthesized_expression "((*(byte *)(local_38 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(local_38 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(local_38 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(local_38 + 0x2c) & 4" (pointer_expression "*(byte *)(local_38 + 0x2c)" (* "*") (cast_expression "(byte *)(local_38 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x2c)" (( "(") (binary_expression "local_38 + 0x2c" (identifier "local_38") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))" (( "(") (parenthesized_expression "(*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11))" (( "(") (binary_expression "*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)" (binary_expression "*(int *)(local_38 + 0x14) != -1" (pointer_expression "*(int *)(local_38 + 0x14)" (* "*") (cast_expression "(int *)(local_38 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x14)" (( "(") (binary_expression "local_38 + 0x14" (identifier "local_38") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) (&& "&&") (parenthesized_expression "(*(int *)(local_38 + 0x14) != iVar11)" (( "(") (binary_expression "*(int *)(local_38 + 0x14) != iVar11" (pointer_expression "*(int *)(local_38 + 0x14)" (* "*") (cast_expression "(int *)(local_38 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x14)" (( "(") (binary_expression "local_38 + 0x14" (identifier "local_38") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (identifier "iVar11")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);\n        }" ({ "{") (expression_statement "local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);" (assignment_expression "local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38)" (identifier "local_38") (= "=") (call_expression "(*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf944" (* "*") (cast_expression "(code *)PTR_FUN_000bf944" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf944"))) () ")")) (argument_list "(puVar7,iVar11,local_38)" (( "(") (identifier "puVar7") (, ",") (identifier "iVar11") (, ",") (identifier "local_38") () ")")))) (; ";")) (} "}"))) (expression_statement "FUN_000660d0("array.c",0x24d);" (call_expression "FUN_000660d0("array.c",0x24d)" (identifier "FUN_000660d0") (argument_list "("array.c",0x24d)" (( "(") (string_literal ""array.c"" (" """) (string_content "array.c") (" """)) (, ",") (number_literal "0x24d") () ")"))) (; ";")) (expression_statement "uVar4 = *(undefined4 *)(local_38 + 8);" (assignment_expression "uVar4 = *(undefined4 *)(local_38 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined4 *)(local_38 + 8)" (* "*") (cast_expression "(undefined4 *)(local_38 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 8)" (( "(") (binary_expression "local_38 + 8" (identifier "local_38") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar5 = *(undefined4 *)(local_38 + 0xc);" (assignment_expression "uVar5 = *(undefined4 *)(local_38 + 0xc)" (identifier "uVar5") (= "=") (pointer_expression "*(undefined4 *)(local_38 + 0xc)" (* "*") (cast_expression "(undefined4 *)(local_38 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0xc)" (( "(") (binary_expression "local_38 + 0xc" (identifier "local_38") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar8 = FUN_00018020(local_34);" (assignment_expression "uVar8 = FUN_00018020(local_34)" (identifier "uVar8") (= "=") (call_expression "FUN_00018020(local_34)" (identifier "FUN_00018020") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")")))) (; ";")) (expression_statement "uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);" (assignment_expression "uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" (identifier "uVar9") (= "=") (call_expression "dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" (identifier "dcgettext") (argument_list "(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to use scalar `%s[\"%.*s\"]\' as an array"" (" """) (string_content "attempt to use scalar `%s[") (escape_sequence "\"") (string_content "%.*s") (escape_sequence "\"") (string_content "]") (escape_sequence "\'") (string_content " as an array") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00066470(uVar9,uVar8,uVar5,uVar4);" (call_expression "FUN_00066470(uVar9,uVar8,uVar5,uVar4)" (identifier "FUN_00066470") (argument_list "(uVar9,uVar8,uVar5,uVar4)" (( "(") (identifier "uVar9") (, ",") (identifier "uVar8") (, ",") (identifier "uVar5") (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "iVar12 = *(int *)(local_38 + 0x10) + -1;" (assignment_expression "iVar12 = *(int *)(local_38 + 0x10) + -1" (identifier "iVar12") (= "=") (binary_expression "*(int *)(local_38 + 0x10) + -1" (pointer_expression "*(int *)(local_38 + 0x10)" (* "*") (cast_expression "(int *)(local_38 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x10)" (( "(") (binary_expression "local_38 + 0x10" (identifier "local_38") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(local_38 + 0x10) = iVar12;" (assignment_expression "*(int *)(local_38 + 0x10) = iVar12" (pointer_expression "*(int *)(local_38 + 0x10)" (* "*") (cast_expression "(int *)(local_38 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x10)" (( "(") (binary_expression "local_38 + 0x10" (identifier "local_38") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "local_34 = piVar1;" (assignment_expression "local_34 = piVar1" (identifier "local_34") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_000668b0(local_38);\n        }" ({ "{") (expression_statement "FUN_000668b0(local_38);" (call_expression "FUN_000668b0(local_38)" (identifier "FUN_000668b0") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00018fc5:\n        if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" (statement_identifier "LAB_00018fc5") (: ":") (if_statement "if (piVar1[10] == 5) {\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }\n        else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" (if "if") (parenthesized_expression "(piVar1[10] == 5)" (( "(") (binary_expression "piVar1[10] == 5" (subscript_expression "piVar1[10]" (identifier "piVar1") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n          piVar10 = (int *)FUN_000170e0();\n          (**(code **)(*piVar10 + 0x14))(piVar1,0);\n          free((void *)piVar1[4]);\n          *piVar1 = (int)DAT_000bf900;\n          DAT_000bf900 = piVar1;\n        }" ({ "{") (expression_statement "piVar10 = (int *)FUN_000170e0();" (assignment_expression "piVar10 = (int *)FUN_000170e0()" (identifier "piVar10") (= "=") (cast_expression "(int *)FUN_000170e0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000170e0()" (identifier "FUN_000170e0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "(**(code **)(*piVar10 + 0x14))(piVar1,0);" (call_expression "(**(code **)(*piVar10 + 0x14))(piVar1,0)" (parenthesized_expression "(**(code **)(*piVar10 + 0x14))" (( "(") (pointer_expression "**(code **)(*piVar10 + 0x14)" (* "*") (pointer_expression "*(code **)(*piVar10 + 0x14)" (* "*") (cast_expression "(code **)(*piVar10 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar10 + 0x14)" (( "(") (binary_expression "*piVar10 + 0x14" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(piVar1,0)" (( "(") (identifier "piVar1") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "free((void *)piVar1[4]);" (call_expression "free((void *)piVar1[4])" (identifier "free") (argument_list "((void *)piVar1[4])" (( "(") (cast_expression "(void *)piVar1[4]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]"))) () ")"))) (; ";")) (expression_statement "*piVar1 = (int)DAT_000bf900;" (assignment_expression "*piVar1 = (int)DAT_000bf900" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (cast_expression "(int)DAT_000bf900" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_000bf900"))) (; ";")) (expression_statement "DAT_000bf900 = piVar1;" (assignment_expression "DAT_000bf900 = piVar1" (identifier "DAT_000bf900") (= "=") (identifier "piVar1")) (; ";")) (} "}")) (else_clause "else {\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" (else "else") (compound_statement "{\n          iVar12 = piVar1[4];\n          piVar1[4] = iVar12 + -1;\n          if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }\n        }" ({ "{") (expression_statement "iVar12 = piVar1[4];" (assignment_expression "iVar12 = piVar1[4]" (identifier "iVar12") (= "=") (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "piVar1[4] = iVar12 + -1;" (assignment_expression "piVar1[4] = iVar12 + -1" (subscript_expression "piVar1[4]" (identifier "piVar1") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar12 + -1 < 1) {\n            FUN_000668b0(piVar1);\n          }" (if "if") (parenthesized_expression "(iVar12 + -1 < 1)" (( "(") (binary_expression "iVar12 + -1 < 1" (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            FUN_000668b0(piVar1);\n          }" ({ "{") (expression_statement "FUN_000668b0(piVar1);" (call_expression "FUN_000668b0(piVar1)" (identifier "FUN_000668b0") (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")"))) (; ";")) (} "}"))) (} "}"))))) (expression_statement "(**(code **)(*local_34 + 0x18))(local_34,local_38);" (call_expression "(**(code **)(*local_34 + 0x18))(local_34,local_38)" (parenthesized_expression "(**(code **)(*local_34 + 0x18))" (( "(") (pointer_expression "**(code **)(*local_34 + 0x18)" (* "*") (pointer_expression "*(code **)(*local_34 + 0x18)" (* "*") (cast_expression "(code **)(*local_34 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_34 + 0x18)" (( "(") (binary_expression "*local_34 + 0x18" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(local_34,local_38)" (( "(") (identifier "local_34") (, ",") (identifier "local_38") () ")"))) (; ";")) (expression_statement "iVar12 = *(int *)(local_38 + 0x10) + -1;" (assignment_expression "iVar12 = *(int *)(local_38 + 0x10) + -1" (identifier "iVar12") (= "=") (binary_expression "*(int *)(local_38 + 0x10) + -1" (pointer_expression "*(int *)(local_38 + 0x10)" (* "*") (cast_expression "(int *)(local_38 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x10)" (( "(") (binary_expression "local_38 + 0x10" (identifier "local_38") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(local_38 + 0x10) = iVar12;" (assignment_expression "*(int *)(local_38 + 0x10) = iVar12" (pointer_expression "*(int *)(local_38 + 0x10)" (* "*") (cast_expression "(int *)(local_38 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x10)" (( "(") (binary_expression "local_38 + 0x10" (identifier "local_38") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar12")) (; ";")) (if_statement "if (iVar12 == 0) {\n          FUN_000668b0(local_38);\n        }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_000668b0(local_38);\n        }" ({ "{") (expression_statement "FUN_000668b0(local_38);" (call_expression "FUN_000668b0(local_38)" (identifier "FUN_000668b0") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_34[8] != 0) {\n          return;\n        }" (if "if") (parenthesized_expression "(local_34[8] != 0)" (( "(") (binary_expression "local_34[8] != 0" (subscript_expression "local_34[8]" (identifier "local_34") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_34[10] = 5;" (assignment_expression "local_34[10] = 5" (subscript_expression "local_34[10]" (identifier "local_34") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "5")) (; ";")) (expression_statement "local_34[1] = 0;" (assignment_expression "local_34[1] = 0" (subscript_expression "local_34[1]" (identifier "local_34") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34[7] = 0;" (assignment_expression "local_34[7] = 0" (subscript_expression "local_34[7]" (identifier "local_34") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34[5] = 0;" (assignment_expression "local_34[5] = 0" (subscript_expression "local_34[5]" (identifier "local_34") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_34[0xb] = 0;" (assignment_expression "local_34[0xb] = 0" (subscript_expression "local_34[0xb]" (identifier "local_34") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*local_34 = (int)&DAT_000bd4e0;" (assignment_expression "*local_34 = (int)&DAT_000bd4e0" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (= "=") (cast_expression "(int)&DAT_000bd4e0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&DAT_000bd4e0" (& "&") (identifier "DAT_000bd4e0")))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar11 = *(int *)(local_38 + 0x10) + -1;" (assignment_expression "iVar11 = *(int *)(local_38 + 0x10) + -1" (identifier "iVar11") (= "=") (binary_expression "*(int *)(local_38 + 0x10) + -1" (pointer_expression "*(int *)(local_38 + 0x10)" (* "*") (cast_expression "(int *)(local_38 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x10)" (( "(") (binary_expression "local_38 + 0x10" (identifier "local_38") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(local_38 + 0x10) = iVar11;" (assignment_expression "*(int *)(local_38 + 0x10) = iVar11" (pointer_expression "*(int *)(local_38 + 0x10)" (* "*") (cast_expression "(int *)(local_38 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x10)" (( "(") (binary_expression "local_38 + 0x10" (identifier "local_38") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "local_34 = piVar1;" (assignment_expression "local_34 = piVar1" (identifier "local_34") (= "=") (identifier "piVar1")) (; ";")) (if_statement "if (iVar11 == 0) {\n        FUN_000668b0(local_38);\n      }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_000668b0(local_38);\n      }" ({ "{") (expression_statement "FUN_000668b0(local_38);" (call_expression "FUN_000668b0(local_38)" (identifier "FUN_000668b0") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "param_2 = iVar12;" (assignment_expression "param_2 = iVar12" (identifier "param_2") (= "=") (identifier "iVar12")) (; ";")) (if_statement "if (iVar12 < 1) goto LAB_00018fc5;" (if "if") (parenthesized_expression "(iVar12 < 1)" (( "(") (binary_expression "iVar12 < 1" (identifier "iVar12") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00018fc5;" (goto "goto") (statement_identifier "LAB_00018fc5") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void function_1(type_1 *symbol,int var_1)

{
  char **ppcVar1;
  type_1 *pNVar2;
  type_2 symbol_00;
  type_3 var_19;
  size_t var_16;
  type_4 *pcVar5;
  type_5 *p_Var6;
  char *var_17;
  char *pcVar8;
  type_6 **var_14;
  char *pcVar10;
  type_2 aVar11;
  size_t var_8;
  int var_4;
  int var_6;
  type_1 *local_38;
  type_2 local_34;
  
  local_34.lptr = symbol;
  if (var_1 == 0) {
    var_2(symbol,0);
                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*((symbol->sub).nodep.l.lp)->clear)(symbol,(type_6 *)0x0);
    return;
  }
  var_4 = var_1;
  if (var_1 < 1) {
                    /* WARNING: Does not return */
    pcVar5 = (type_4 *)var_3();
    (*pcVar5)();
  }
  do {
    local_38 = stack_ptr[1 - var_4].rptr;
    if (local_38->type == var_5) {
      var_6 = var_4 + -1;
    }
    else {
      var_6 = var_4 * -4 + 8;
      while (var_4 = var_4 + -1, var_4 != 0) {
        pNVar2 = *(type_1 **)((int)stack_ptr + var_6);
        if (pNVar2->type == var_5) {
          if (((pNVar2->flags & 4) == 0) ||
             ((var_8 = (pNVar2->sub).nodep.reserved, var_7 != var_8 && (var_8 != 0xffffffff)
              ))) {
            (*format_val)(CONVFMT,var_7,pNVar2);
          }
          ppcVar1 = &(pNVar2->sub).nodep.name;
          *ppcVar1 = *ppcVar1 + -1;
          if (*ppcVar1 == (char *)0x0) {
            var_9(pNVar2);
          }
        }
        var_6 = var_6 + 4;
      }
      var_10("array.c",0x238);
      var_17 = var_11(local_38);
      var_4 = 0;
      pcVar8 = (char *)var_12(0,"attempt to use array `%s\' in a scalar context",5);
      var_6 = -1;
      var_13(pcVar8,var_17);
    }
    var_14 = (**(type_4 **)&(local_34.li)->nexti->source_line)(local_34.lptr,local_38);
    if ((var_14 == (type_6 **)0x0) || (symbol_00.lptr = *var_14, symbol_00.lptr == (type_1 *)0x0))
    {
      if (((type_7)do_flags & 5) != 0) {
        if (((local_38->flags & 4) == 0) ||
           ((var_8 = (local_38->sub).nodep.reserved, var_8 != 0xffffffff && (var_7 != var_8)
            ))) {
          local_38 = (*format_val)(CONVFMT,var_7,local_38);
        }
        var_10("array.c",0x23f);
        p_Var6 = lintfunc;
        pcVar8 = var_11(local_34.lptr);
        var_17 = (local_38->sub).val.sp;
        var_8 = (local_38->sub).val.slen;
        pcVar10 = (char *)var_12(0,"delete: index `%.*s\' not in array `%s\'",5);
        (*p_Var6)(pcVar10,var_8,var_17,pcVar8);
      }
      var_6 = var_4 * -4;
      do {
        var_6 = var_6 + 4;
        pNVar2 = *(type_1 **)((int)stack_ptr + var_6);
        if (pNVar2->type == var_5) {
          if (((pNVar2->flags & 4) == 0) ||
             ((var_8 = (pNVar2->sub).nodep.reserved, var_7 != var_8 && (var_8 != 0xffffffff)
              ))) {
            (*format_val)(CONVFMT,var_7,pNVar2);
          }
          ppcVar1 = &(pNVar2->sub).nodep.name;
          *ppcVar1 = *ppcVar1 + -1;
          if (*ppcVar1 == (char *)0x0) {
            var_9(pNVar2);
          }
        }
        var_4 = var_4 + -1;
      } while (0 < var_4);
      return;
    }
    if (1 < var_4) {
      if ((symbol_00.lptr)->type != var_15) {
        var_6 = var_4 * -4;
        var_17 = CONVFMT;
        var_8 = var_7;
        do {
          var_6 = var_6 + 4;
          pNVar2 = *(type_1 **)((int)stack_ptr + var_6);
          if (pNVar2->type == var_5) {
            if (((pNVar2->flags & 4) == 0) ||
               ((var_16 = (pNVar2->sub).nodep.reserved, var_16 != 0xffffffff && (var_16 != var_8)))) {
              (*format_val)(var_17,var_8,pNVar2);
            }
            ppcVar1 = &(pNVar2->sub).nodep.name;
            *ppcVar1 = *ppcVar1 + -1;
            var_17 = CONVFMT;
            var_8 = var_7;
            if (*ppcVar1 == (char *)0x0) {
              var_9(pNVar2);
              var_17 = CONVFMT;
              var_8 = var_7;
            }
          }
          var_4 = var_4 + -1;
        } while (var_4 != 0);
        if (((local_38->flags & 4) == 0) ||
           ((var_16 = (local_38->sub).nodep.reserved, var_16 != 0xffffffff && (var_16 != var_8)))) {
          local_38 = (*format_val)(var_17,var_8,local_38);
        }
        var_10("array.c",0x24d);
        var_17 = (local_38->sub).val.sp;
        var_8 = (local_38->sub).val.slen;
        pcVar8 = var_11(local_34.lptr);
        pcVar10 = (char *)var_12(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);
        var_13(pcVar10,pcVar8,var_8,var_17);
        var_17 = (char *)((local_38->sub).val.sref + L'\xffffffff');
        (local_38->sub).nodep.name = var_17;
        local_34.lptr = symbol_00.lptr;
        if (var_17 == (char *)0x0) {
          var_9(local_38);
        }
LAB_00018fc5:
        if ((symbol_00.lptr)->type == var_15) {
          aVar11.lptr = symbol_00.lptr;
          var_2(symbol_00.lptr,var_1);
          (*((((type_8 *)&(aVar11.li)->nexti)->nodep).l.lp)->clear)
                    (symbol_00.lptr,(type_6 *)0x0);
          var_18((symbol_00.lp)->exists);
          (((type_8 *)&(symbol_00.li)->nexti)->nodep).l = nextfree;
          nextfree.lptr = symbol_00.lptr;
        }
        else {
          var_19 = (symbol_00.lp)->exists;
          (symbol_00.lp)->exists = var_19 + -1;
          if ((int)(var_19 + -1) < 1) {
            var_9(symbol_00.lptr);
          }
        }
        (*(type_4 *)(local_34.li)->nexti[1].nexti)(local_34.lptr,local_38);
        var_17 = (char *)((local_38->sub).val.sref + L'\xffffffff');
        (local_38->sub).nodep.name = var_17;
        if (var_17 == (char *)0x0) {
          var_9(local_38);
        }
        if ((local_34.lp)->copy != (type_3)0x0) {
          return;
        }
        (local_34.lptr)->type = var_15;
        (local_34.lp)->init = (type_3)0x0;
        (local_34.lp)->list = (type_3)0x0;
        (local_34.li)->opcode = Op_illegal;
        (local_34.lptr)->flags = 0;
        (local_34.li)->nexti = (type_9 *)&null_array_func;
        return;
      }
      var_17 = (char *)((local_38->sub).val.sref + L'\xffffffff');
      (local_38->sub).nodep.name = var_17;
      local_34.lptr = symbol_00.lptr;
      if (var_17 == (char *)0x0) {
        var_9(local_38);
      }
    }
    var_4 = var_6;
    if (var_6 < 1) goto LAB_00018fc5;
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (true))))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(int *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  code *pcVar3;
  undefined4 uVar4;
  undefined4 uVar5;
  undefined4 *puVar6;
  undefined *puVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  int *piVar10;
  int iVar11;
  int iVar12;
  int local_38;
  int *local_34;
  
  local_34 = param_1;
  if (param_2 == 0) {
    FUN_000170e0();
                    /* WARNING: Could not recover jumptable at 0x0001926d. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_1 + 0x14))();
    return;
  }
  if (param_2 < 1) {
                    /* WARNING: Does not return */
    pcVar3 = (code *)invalidInstructionException();
    (*pcVar3)();
  }
  do {
    local_38 = *(int *)(DAT_000c13c8 + 4 + param_2 * -4);
    if (*(int *)(local_38 + 0x28) == 1) {
      iVar12 = param_2 + -1;
    }
    else {
      iVar12 = param_2 * -4 + 8;
      while (param_2 = param_2 + -1, param_2 != 0) {
        iVar11 = *(int *)(DAT_000c13c8 + iVar12);
        if (*(int *)(iVar11 + 0x28) == 1) {
          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||
             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {
            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);
          }
          piVar1 = (int *)(iVar11 + 0x10);
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            FUN_000668b0(iVar11);
          }
        }
        iVar12 = iVar12 + 4;
      }
      FUN_000660d0("array.c",0x238);
      uVar4 = FUN_00018020(local_38);
      param_2 = 0;
      uVar5 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
      iVar12 = -1;
      FUN_00066470(uVar5,uVar4);
    }
    puVar6 = (undefined4 *)(**(code **)(*local_34 + 0x10))(local_34,local_38);
    if ((puVar6 == (undefined4 *)0x0) || (piVar1 = (int *)*puVar6, piVar1 == (int *)0x0)) {
      if ((DAT_000c3760 & 5) != 0) {
        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||
           ((*(int *)(local_38 + 0x14) != -1 && (DAT_000c4994 != *(int *)(local_38 + 0x14))))) {
          local_38 = (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,local_38);
        }
        FUN_000660d0("array.c",0x23f);
        puVar7 = PTR_FUN_000bf8e8;
        uVar8 = FUN_00018020(local_34);
        uVar4 = *(undefined4 *)(local_38 + 8);
        uVar5 = *(undefined4 *)(local_38 + 0xc);
        uVar9 = dcgettext(0,"delete: index `%.*s\' not in array `%s\'",5);
        (*(code *)puVar7)(uVar9,uVar5,uVar4,uVar8);
      }
      iVar12 = param_2 * -4;
      do {
        iVar12 = iVar12 + 4;
        iVar11 = *(int *)(DAT_000c13c8 + iVar12);
        if (*(int *)(iVar11 + 0x28) == 1) {
          if (((*(byte *)(iVar11 + 0x2c) & 4) == 0) ||
             ((DAT_000c4994 != *(int *)(iVar11 + 0x14) && (*(int *)(iVar11 + 0x14) != -1)))) {
            (*(code *)PTR_FUN_000bf944)(PTR_DAT_000bf8f0,DAT_000c4994,iVar11);
          }
          piVar1 = (int *)(iVar11 + 0x10);
          *piVar1 = *piVar1 + -1;
          if (*piVar1 == 0) {
            FUN_000668b0(iVar11);
          }
        }
        param_2 = param_2 + -1;
      } while (0 < param_2);
      return;
    }
    if (1 < param_2) {
      if (piVar1[10] != 5) {
        iVar12 = param_2 * -4;
        puVar7 = PTR_DAT_000bf8f0;
        iVar11 = DAT_000c4994;
        do {
          iVar12 = iVar12 + 4;
          iVar2 = *(int *)(DAT_000c13c8 + iVar12);
          if (*(int *)(iVar2 + 0x28) == 1) {
            if (((*(byte *)(iVar2 + 0x2c) & 4) == 0) ||
               ((*(int *)(iVar2 + 0x14) != -1 && (*(int *)(iVar2 + 0x14) != iVar11)))) {
              (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,iVar2);
            }
            piVar10 = (int *)(iVar2 + 0x10);
            *piVar10 = *piVar10 + -1;
            puVar7 = PTR_DAT_000bf8f0;
            iVar11 = DAT_000c4994;
            if (*piVar10 == 0) {
              FUN_000668b0(iVar2);
              puVar7 = PTR_DAT_000bf8f0;
              iVar11 = DAT_000c4994;
            }
          }
          param_2 = param_2 + -1;
        } while (param_2 != 0);
        if (((*(byte *)(local_38 + 0x2c) & 4) == 0) ||
           ((*(int *)(local_38 + 0x14) != -1 && (*(int *)(local_38 + 0x14) != iVar11)))) {
          local_38 = (*(code *)PTR_FUN_000bf944)(puVar7,iVar11,local_38);
        }
        FUN_000660d0("array.c",0x24d);
        uVar4 = *(undefined4 *)(local_38 + 8);
        uVar5 = *(undefined4 *)(local_38 + 0xc);
        uVar8 = FUN_00018020(local_34);
        uVar9 = dcgettext(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5);
        FUN_00066470(uVar9,uVar8,uVar5,uVar4);
        iVar12 = *(int *)(local_38 + 0x10) + -1;
        *(int *)(local_38 + 0x10) = iVar12;
        local_34 = piVar1;
        if (iVar12 == 0) {
          FUN_000668b0(local_38);
        }
LAB_00018fc5:
        if (piVar1[10] == 5) {
          piVar10 = (int *)FUN_000170e0();
          (**(code **)(*piVar10 + 0x14))(piVar1,0);
          free((void *)piVar1[4]);
          *piVar1 = (int)DAT_000bf900;
          DAT_000bf900 = piVar1;
        }
        else {
          iVar12 = piVar1[4];
          piVar1[4] = iVar12 + -1;
          if (iVar12 + -1 < 1) {
            FUN_000668b0(piVar1);
          }
        }
        (**(code **)(*local_34 + 0x18))(local_34,local_38);
        iVar12 = *(int *)(local_38 + 0x10) + -1;
        *(int *)(local_38 + 0x10) = iVar12;
        if (iVar12 == 0) {
          FUN_000668b0(local_38);
        }
        if (local_34[8] != 0) {
          return;
        }
        local_34[10] = 5;
        local_34[1] = 0;
        local_34[7] = 0;
        local_34[5] = 0;
        local_34[0xb] = 0;
        *local_34 = (int)&DAT_000bd4e0;
        return;
      }
      iVar11 = *(int *)(local_38 + 0x10) + -1;
      *(int *)(local_38 + 0x10) = iVar11;
      local_34 = piVar1;
      if (iVar11 == 0) {
        FUN_000668b0(local_38);
      }
    }
    param_2 = iVar12;
    if (iVar12 < 1) goto LAB_00018fc5;
  } while( true );
}

