
/* WARNING: Unknown calling convention */

void do_delete(NODE *symbol,int nsubs)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  undefined4 uVar6;
  char *pcVar7;
  exp_node **ppeVar8;
  int iVar9;
  array_funcs_t *paVar10;
  ulong uVar11;
  size_t sVar12;
  int iVar13;
  NODE *pNVar14;
  size_t sVar15;
  NODE *symbol_00;
  char *pcVar16;
  int iVar17;
  code *pcVar18;
  int iVar19;
  NODE *symbol_01;
  
  puVar5 = PTR_stack_ptr_004b1cd8;
  puVar2 = PTR_CONVFMT_004b1c40;
  if (nsubs == 0) {
    adjust_fcall_stack(symbol,0);
                    /* WARNING: Could not recover jumptable at 0x0040b278. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*((symbol->sub).nodep.l.lp)->clear)(symbol,(exp_node *)0x0);
    return;
  }
  if (nsubs < 1) {
                    /* WARNING: Does not return */
    pcVar18 = (code *)trap(0);
    (*pcVar18)();
  }
  iVar13 = nsubs * -4;
  symbol_00 = *(NODE **)(*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4);
  iVar17 = nsubs;
  if (symbol_00->type == Node_val) goto LAB_0040b088;
LAB_0040ad4c:
  puVar4 = PTR_format_val_004b1c48;
  puVar3 = PTR_CONVFMTidx_004b1c44;
  iVar13 = iVar13 + 8;
  while (iVar17 = iVar17 + -1, iVar17 != 0) {
    iVar19 = *(int *)(*(int *)puVar5 + iVar13);
    if (*(int *)(iVar19 + 0x28) == 1) {
      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {
LAB_0040b014:
        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);
LAB_0040b024:
        iVar9 = *(int *)(iVar19 + 0x10);
      }
      else {
        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;
        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;
        iVar9 = *(int *)(iVar19 + 0x10);
      }
      *(int *)(iVar19 + 0x10) = iVar9 + -1;
      if (iVar9 + -1 == 0) {
        (*(code *)PTR_r_unref_004b1b90)(iVar19);
      }
    }
    iVar13 = iVar13 + 4;
  }
  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);
  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);
  pcVar7 = array_vname(symbol_00);
  (*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7);
  ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);
  iVar19 = -1;
  iVar13 = 0;
  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;
  do {
    iVar17 = iVar19;
    puVar4 = PTR_format_val_004b1c48;
    puVar3 = PTR_CONVFMTidx_004b1c44;
    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;
    if (ppeVar8 == (exp_node **)0x0) {
LAB_0040b0ac:
      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {
        if (((symbol_00->flags & 4) == 0) ||
           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&
            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {
          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)
                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);
        }
        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);
        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;
        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);
        sVar15 = (symbol_00->sub).val.slen;
        pcVar16 = (symbol_00->sub).val.sp;
        pcVar7 = array_vname(symbol);
        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);
      }
      puVar4 = PTR_format_val_004b1c48;
      puVar3 = PTR_CONVFMTidx_004b1c44;
      puVar2 = PTR_CONVFMT_004b1c40;
      iVar17 = iVar13 * -4;
      break;
    }
    symbol_01 = *ppeVar8;
    if (symbol_01 == (NODE *)0x0) goto LAB_0040b0ac;
    if (1 < iVar13) {
      if (symbol_01->type != Node_var_array) {
        iVar17 = iVar13 * -4;
        uVar6 = *puVar1;
        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;
        goto LAB_0040ae4c;
      }
      pcVar7 = (char *)((symbol_00->sub).val.sref + -1);
      (symbol_00->sub).nodep.name = pcVar7;
      symbol = symbol_01;
      if (pcVar7 == (char *)0x0) {
        (*(code *)PTR_r_unref_004b1b90)(symbol_00);
      }
    }
    if (iVar17 < 1) goto LAB_0040af5c;
    iVar13 = iVar17 * -4;
    symbol_00 = *(NODE **)(*(int *)puVar5 + iVar13 + 4);
    if (symbol_00->type != Node_val) goto LAB_0040ad4c;
LAB_0040b088:
    ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);
    iVar19 = iVar17 + -1;
    iVar13 = iVar17;
    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;
  } while( true );
LAB_0040b188:
  iVar17 = iVar17 + 4;
  iVar19 = *(int *)(*(int *)puVar5 + iVar17);
  if (*(int *)(iVar19 + 0x28) == 1) {
    if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {
LAB_0040b1b4:
      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);
LAB_0040b1c4:
      iVar9 = *(int *)(iVar19 + 0x10);
    }
    else {
      if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;
      if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;
      iVar9 = *(int *)(iVar19 + 0x10);
    }
    *(int *)(iVar19 + 0x10) = iVar9 + -1;
    if (iVar9 + -1 == 0) {
      (*(code *)PTR_r_unref_004b1b90)(iVar19);
    }
  }
  iVar13 = iVar13 + -1;
  if (iVar13 < 1) {
    return;
  }
  goto LAB_0040b188;
LAB_0040ae4c:
  do {
    iVar17 = iVar17 + 4;
    iVar19 = *(int *)(*(int *)puVar5 + iVar17);
    if (*(int *)(iVar19 + 0x28) == 1) {
      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {
LAB_0040ae74:
        (**(code **)puVar4)(uVar6,sVar15,iVar19);
LAB_0040ae8c:
        iVar9 = *(int *)(iVar19 + 0x10);
      }
      else {
        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;
        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;
        iVar9 = *(int *)(iVar19 + 0x10);
      }
      *(int *)(iVar19 + 0x10) = iVar9 + -1;
      if (iVar9 + -1 == 0) {
        (*(code *)PTR_r_unref_004b1b90)(iVar19);
      }
      sVar15 = *(size_t *)puVar3;
      uVar6 = *puVar1;
    }
    iVar13 = iVar13 + -1;
  } while (iVar13 != 0);
  if (((symbol_00->flags & 4) == 0) ||
     ((sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15)))) {
    symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00);
  }
  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);
  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)
  ;
  pcVar7 = array_vname(symbol);
  (*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7,(symbol_00->sub).val.slen,(symbol_00->sub).val.sp);
  pcVar7 = (char *)((symbol_00->sub).val.sref + -1);
  (symbol_00->sub).nodep.name = pcVar7;
  symbol = symbol_01;
  if (pcVar7 == (char *)0x0) {
    (*(code *)PTR_r_unref_004b1b90)(symbol_00);
  }
LAB_0040af5c:
  if (symbol_01->type == Node_var_array) {
    pNVar14 = symbol_01;
    adjust_fcall_stack(symbol_01,nsubs);
    (*((symbol_01->sub).nodep.l.lp)->clear)(pNVar14,(exp_node *)0x0);
    (*(code *)PTR_free_004b239c)((symbol_01->sub).nodep.name);
    puVar2 = PTR_nextfree_004b1bf0;
    (symbol_01->sub).nodep.l = *(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0;
    *(NODE **)puVar2 = symbol_01;
  }
  else {
    iVar17 = (symbol_01->sub).val.sref + -1;
    (symbol_01->sub).val.sref = iVar17;
    if (iVar17 < 1) {
      (*(code *)PTR_r_unref_004b1b90)(symbol_01);
      paVar10 = (symbol->sub).nodep.l.lp;
      goto LAB_0040af80;
    }
  }
  paVar10 = (symbol->sub).nodep.l.lp;
LAB_0040af80:
  (*paVar10->remove)(symbol,symbol_00);
  pcVar7 = (char *)((symbol_00->sub).val.sref + -1);
  (symbol_00->sub).nodep.name = pcVar7;
  if (pcVar7 == (char *)0x0) {
    (*(code *)PTR_r_unref_004b1b90)(symbol_00);
    uVar11 = (symbol->sub).nodep.reflags;
  }
  else {
    uVar11 = (symbol->sub).nodep.reflags;
  }
  if (uVar11 == 0) {
    *(undefined4 *)((int)&symbol->sub + 4) = 0;
    (symbol->sub).nodep.cnt = 0;
    symbol->type = Node_var_array;
    (symbol->sub).nodep.reserved = 0;
    symbol->flags = 0;
    (symbol->sub).nodep.l.lp = &null_array_func;
  }
  return;
}



void do_delete(int *param_1,int param_2)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 *puVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  code *pcVar15;
  int iVar16;
  int *piVar17;
  
  puVar5 = PTR_stack_ptr_004b1cd8;
  puVar2 = PTR_CONVFMT_004b1c40;
  if (param_2 == 0) {
    FUN_00408a60();
                    /* WARNING: Could not recover jumptable at 0x0040b278. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_1 + 0x14))();
    return;
  }
  if (param_2 < 1) {
                    /* WARNING: Does not return */
    pcVar15 = (code *)trap(0);
    (*pcVar15)();
  }
  iVar9 = param_2 * -4;
  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);
  iVar11 = param_2;
  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;
LAB_0040ad4c:
  puVar4 = PTR_format_val_004b1c48;
  puVar3 = PTR_CONVFMTidx_004b1c44;
  iVar9 = iVar9 + 8;
  while (iVar11 = iVar11 + -1, iVar11 != 0) {
    iVar16 = *(int *)(*(int *)puVar5 + iVar9);
    if (*(int *)(iVar16 + 0x28) == 1) {
      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {
LAB_0040b014:
        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);
LAB_0040b024:
        iVar10 = *(int *)(iVar16 + 0x10);
      }
      else {
        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;
        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;
        iVar10 = *(int *)(iVar16 + 0x10);
      }
      *(int *)(iVar16 + 0x10) = iVar10 + -1;
      if (iVar10 + -1 == 0) {
        (*(code *)PTR_r_unref_004b1b90)(iVar16);
      }
    }
    iVar9 = iVar9 + 4;
  }
  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);
  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);
  uVar7 = array_vname(iVar12);
  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);
  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);
  iVar16 = -1;
  iVar9 = 0;
  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;
  do {
    iVar11 = iVar16;
    puVar4 = PTR_format_val_004b1c48;
    puVar3 = PTR_CONVFMTidx_004b1c44;
    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;
    if (puVar8 == (undefined4 *)0x0) {
LAB_0040b0ac:
      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {
        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||
           ((*(int *)(iVar12 + 0x14) != -1 &&
            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {
          iVar12 = (**(code **)PTR_format_val_004b1c48)
                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);
        }
        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);
        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;
        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);
        uVar14 = *(undefined4 *)(iVar12 + 0xc);
        uVar13 = *(undefined4 *)(iVar12 + 8);
        uVar7 = array_vname(param_1);
        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);
      }
      puVar4 = PTR_format_val_004b1c48;
      puVar3 = PTR_CONVFMTidx_004b1c44;
      puVar2 = PTR_CONVFMT_004b1c40;
      iVar11 = iVar9 * -4;
      break;
    }
    piVar17 = (int *)*puVar8;
    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;
    if (1 < iVar9) {
      if (piVar17[10] != 5) {
        iVar16 = iVar9 * -4;
        uVar6 = *puVar1;
        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;
        goto LAB_0040ae4c;
      }
      iVar9 = *(int *)(iVar12 + 0x10) + -1;
      *(int *)(iVar12 + 0x10) = iVar9;
      param_1 = piVar17;
      if (iVar9 == 0) {
        (*(code *)PTR_r_unref_004b1b90)(iVar12);
      }
    }
    if (iVar11 < 1) goto LAB_0040af5c;
    iVar9 = iVar11 * -4;
    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);
    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;
LAB_0040b088:
    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);
    iVar16 = iVar11 + -1;
    iVar9 = iVar11;
    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;
  } while( true );
LAB_0040b188:
  iVar11 = iVar11 + 4;
  iVar12 = *(int *)(*(int *)puVar5 + iVar11);
  if (*(int *)(iVar12 + 0x28) == 1) {
    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {
LAB_0040b1b4:
      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);
LAB_0040b1c4:
      iVar16 = *(int *)(iVar12 + 0x10);
    }
    else {
      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;
      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;
      iVar16 = *(int *)(iVar12 + 0x10);
    }
    *(int *)(iVar12 + 0x10) = iVar16 + -1;
    if (iVar16 + -1 == 0) {
      (*(code *)PTR_r_unref_004b1b90)(iVar12);
    }
  }
  iVar9 = iVar9 + -1;
  if (iVar9 < 1) {
    return;
  }
  goto LAB_0040b188;
LAB_0040ae4c:
  do {
    iVar16 = iVar16 + 4;
    iVar10 = *(int *)(*(int *)puVar5 + iVar16);
    if (*(int *)(iVar10 + 0x28) == 1) {
      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {
LAB_0040ae74:
        (**(code **)puVar4)(uVar6,iVar11,iVar10);
LAB_0040ae8c:
        iVar11 = *(int *)(iVar10 + 0x10);
      }
      else {
        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;
        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;
        iVar11 = *(int *)(iVar10 + 0x10);
      }
      *(int *)(iVar10 + 0x10) = iVar11 + -1;
      if (iVar11 + -1 == 0) {
        (*(code *)PTR_r_unref_004b1b90)(iVar10);
      }
      iVar11 = *(int *)puVar3;
      uVar6 = *puVar1;
    }
    iVar9 = iVar9 + -1;
  } while (iVar9 != 0);
  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||
     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {
    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);
  }
  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);
  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)
  ;
  uVar7 = array_vname(param_1);
  (*(code *)PTR_r_fatal_004b1b70)
            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));
  iVar11 = *(int *)(iVar12 + 0x10) + -1;
  *(int *)(iVar12 + 0x10) = iVar11;
  param_1 = piVar17;
  if (iVar11 == 0) {
    (*(code *)PTR_r_unref_004b1b90)(iVar12);
  }
LAB_0040af5c:
  if (piVar17[10] == 5) {
    FUN_00408a60(piVar17,param_2);
    (**(code **)(*piVar17 + 0x14))();
    (*(code *)PTR_free_004b239c)(piVar17[4]);
    puVar2 = PTR_nextfree_004b1bf0;
    *piVar17 = *(int *)PTR_nextfree_004b1bf0;
    *(int **)puVar2 = piVar17;
  }
  else {
    iVar11 = piVar17[4];
    piVar17[4] = iVar11 + -1;
    if (iVar11 + -1 < 1) {
      (*(code *)PTR_r_unref_004b1b90)(piVar17);
      iVar11 = *param_1;
      goto LAB_0040af80;
    }
  }
  iVar11 = *param_1;
LAB_0040af80:
  (**(code **)(iVar11 + 0x18))(param_1,iVar12);
  iVar11 = *(int *)(iVar12 + 0x10) + -1;
  *(int *)(iVar12 + 0x10) = iVar11;
  if (iVar11 == 0) {
    (*(code *)PTR_r_unref_004b1b90)(iVar12);
    iVar11 = param_1[8];
  }
  else {
    iVar11 = param_1[8];
  }
  if (iVar11 == 0) {
    param_1[1] = 0;
    param_1[7] = 0;
    param_1[10] = 5;
    param_1[5] = 0;
    param_1[0xb] = 0;
    *param_1 = (int)&PTR_DAT_004af9bc;
  }
  return;
}


lui gp,0x4c
addiu sp,sp,-0x50
addiu gp,gp,-0x64e0
sw s1,0x2c(sp)
or s1,a0,zero
sw ra,0x4c(sp)
sw s8,0x48(sp)
sw s7,0x44(sp)
sw s6,0x40(sp)
sw s5,0x3c(sp)
sw s4,0x38(sp)
sw s3,0x34(sp)
sw s2,0x30(sp)
sw s0,0x28(sp)
sw gp,0x10(sp)
beq a1,zero,0x0040b238
_sw a1,0x24(sp)
blez a1,0x0040b280
_lw v0,-0x7ee0(gp)
lui s6,0x4a
lw s5,-0x7e48(gp)
li a0,0x1
lw s7,0x24(sp)
sw v0,0x18(sp)
addiu v0,s6,-0x1950
sw v0,0x1c(sp)
lui v0,0x49
subu v1,zero,s7
addiu v0,v0,-0x148
sll v1,v1,0x2
sw v0,0x20(sp)
lw v0,0x0(s5)
addu v0,v0,v1
lw s0,0x4(v0)
lw v0,0x28(s0)
beq v0,a0,0x0040b088
_nop
addiu s7,s7,-0x1
lw s2,-0x7edc(gp)
addiu s8,v1,0x8
lw s3,-0x7ed8(gp)
beq s7,zero,0x0040ad8c
_li s6,0x1
lw v0,0x0(s5)
addu v0,v0,s8
lw s4,0x0(v0)
lw v0,0x28(s4)
beq v0,s6,0x0040b000
_lw v1,0x18(sp)
addiu s8,s8,0x4
addiu s7,s7,-0x1
bne s7,zero,0x0040ad64
_nop
lw t9,-0x7fb4(gp)
li a1,0x238
lw a0,0x1c(sp)
jalr t9
_li s7,-0x1
li a2,0x5
lw gp,0x10(sp)
or a0,zero,zero
lw t9,-0x77c4(gp)
jalr t9
_lw a1,0x20(sp)
or a0,s0,zero
jal 0x00409cd8
_or s2,v0,zero
lw gp,0x10(sp)
or a1,v0,zero
or a0,s2,zero
lw t9,-0x7fb0(gp)
jalr t9
_or s2,zero,zero
or a1,s0,zero
lw v0,0x0(s1)
lw t9,0x10(v0)
jalr t9
_or a0,s1,zero
beq v0,zero,0x0040b0ac
_lw gp,0x10(sp)
lw s8,0x0(v0)
beq s8,zero,0x0040b0ac
_slti v0,s2,0x2
bne v0,zero,0x0040b060
_li v0,0x5
lw v1,0x28(s8)
beq v1,v0,0x0040b04c
_lw v0,-0x7ee0(gp)
subu s3,zero,s2
lw s4,-0x7edc(gp)
li s7,0x1
sll s3,s3,0x2
lw s6,-0x7ed8(gp)
sw v0,0x1c(sp)
lw a0,0x0(v0)
addiu s3,s3,0x4
b 0x0040ae4c
_lw a1,0x0(s4)
addiu s2,s2,-0x1
beq s2,zero,0x0040aeb4
_addiu s3,s3,0x4
lw v0,0x0(s5)
addu v0,v0,s3
lw v1,0x0(v0)
lw v0,0x28(v1)
bne v0,s7,0x0040ae40
_nop
lw v0,0x2c(v1)
andi v0,v0,0x4
bne v0,zero,0x0040b21c
_li a2,-0x1
lw t9,0x0(s6)
or a2,v1,zero
jalr t9
_sw v1,0x18(sp)
lw gp,0x10(sp)
lw v1,0x18(sp)
lw v0,0x10(v1)
addiu v0,v0,-0x1
beq v0,zero,0x0040b1e8
_sw v0,0x10(v1)
lw v0,0x1c(sp)
addiu s2,s2,-0x1
lw a1,0x0(s4)
addiu s3,s3,0x4
bne s2,zero,0x0040ae4c
_lw a0,0x0(v0)
lw v0,0x2c(s0)
andi v0,v0,0x4
bne v0,zero,0x0040b2d0
_li v1,-0x1
lw v0,-0x7ed8(gp)
lw t9,0x0(v0)
jalr t9
_or a2,s0,zero
lw gp,0x10(sp)
or s0,v0,zero
lui a0,0x4a
lw t9,-0x7fb4(gp)
li a1,0x24d
jalr t9
_addiu a0,a0,-0x1950
lui a1,0x49
lw gp,0x10(sp)
li a2,0x5
addiu a1,a1,-0x60
lw t9,-0x77c4(gp)
jalr t9
_or a0,zero,zero
or a0,s1,zero
jal 0x00409cd8
_or s1,v0,zero
lw gp,0x10(sp)
or a1,v0,zero
lw a3,0x8(s0)
or a0,s1,zero
lw t9,-0x7fb0(gp)
jalr t9
_lw a2,0xc(s0)
lw v0,0x10(s0)
lw gp,0x10(sp)
addiu v0,v0,-0x1
bne v0,zero,0x0040b288
_sw v0,0x10(s0)
lw t9,-0x7f90(gp)
or a0,s0,zero
jalr t9
_or s1,s8,zero
lw gp,0x10(sp)
lw v1,0x28(s8)
li v0,0x5
beq v1,v0,0x0040b290
_lw a1,0x24(sp)
lw v0,0x10(s8)
addiu v0,v0,-0x1
blez v0,0x0040b33c
_sw v0,0x10(s8)
lw v0,0x0(s1)
or a1,s0,zero
lw t9,0x18(v0)
jalr t9
_or a0,s1,zero
lw v0,0x10(s0)
lw gp,0x10(sp)
addiu v0,v0,-0x1
beq v0,zero,0x0040b308
_sw v0,0x10(s0)
lw v0,0x20(s1)
bne v0,zero,0x0040afd0
_li v0,0x5
sw zero,0x4(s1)
sw zero,0x1c(s1)
sw v0,0x28(s1)
lui v0,0x4b
sw zero,0x14(s1)
addiu v0,v0,-0x644
sw zero,0x2c(s1)
sw v0,0x0(s1)
lw ra,0x4c(sp)
lw s8,0x48(sp)
lw s7,0x44(sp)
lw s6,0x40(sp)
lw s5,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x50
lw v0,0x2c(s4)
lw a1,0x0(s2)
andi v0,v0,0x4
bne v0,zero,0x0040b1fc
_lw a0,0x0(v1)
lw t9,0x0(s3)
jalr t9
_or a2,s4,zero
lw gp,0x10(sp)
lw v0,0x10(s4)
addiu v0,v0,-0x1
bne v0,zero,0x0040ad7c
_sw v0,0x10(s4)
lw t9,-0x7f90(gp)
or a0,s4,zero
jalr t9
_addiu s8,s8,0x4
b 0x0040ad80
_lw gp,0x10(sp)
lw v0,0x10(s0)
or s1,s8,zero
addiu v0,v0,-0x1
beq v0,zero,0x0040b350
_sw v0,0x10(s0)
blez s7,0x0040af5c
_subu v1,zero,s7
lw v0,0x0(s5)
li a0,0x1
sll v1,v1,0x2
addu v0,v0,v1
lw s0,0x4(v0)
lw v0,0x28(s0)
bne v0,a0,0x0040ad4c
_nop
lw v0,0x0(s1)
or a1,s0,zero
or a0,s1,zero
or s2,s7,zero
lw t9,0x10(v0)
jalr t9
_addiu s7,s7,-0x1
bne v0,zero,0x0040adf8
_lw gp,0x10(sp)
lw v0,-0x7fc4(gp)
lw v0,0x0(v0)
andi v0,v0,0x5
beq v0,zero,0x0040b158
_lw v1,-0x7ee0(gp)
lw v0,0x2c(s0)
lw a0,0x0(v1)
andi v0,v0,0x4
lw v1,-0x7edc(gp)
bne v0,zero,0x0040b31c
_lw a1,0x0(v1)
lw v0,-0x7ed8(gp)
lw t9,0x0(v0)
jalr t9
_or a2,s0,zero
lw gp,0x10(sp)
or s0,v0,zero
lui a0,0x4a
lw t9,-0x7fb4(gp)
li a1,0x23f
jalr t9
_addiu a0,a0,-0x1950
lui a1,0x49
lw gp,0x10(sp)
li a2,0x5
addiu a1,a1,-0x88
or a0,zero,zero
lw v0,-0x7fa4(gp)
lw t9,-0x77c4(gp)
jalr t9
_lw s3,0x0(v0)
or a0,s1,zero
lw s1,0xc(s0)
or s4,v0,zero
jal 0x00409cd8
_lw s0,0x8(s0)
or a0,s4,zero
or a3,v0,zero
or a2,s0,zero
or t9,s3,zero
jalr t9
_or a1,s1,zero
lw gp,0x10(sp)
subu s0,zero,s2
lw s3,-0x7ee0(gp)
lw s1,-0x7edc(gp)
li s7,0x1
sll s0,s0,0x2
lw s4,-0x7ed8(gp)
li s8,-0x1
b 0x0040b188
_addiu s0,s0,0x4
addiu s2,s2,-0x1
blez s2,0x0040afd0
_addiu s0,s0,0x4
lw v0,0x0(s5)
addu v0,v0,s0
lw s6,0x0(v0)
lw v0,0x28(s6)
bne v0,s7,0x0040b17c
_nop
lw v0,0x2c(s6)
lw a0,0x0(s3)
andi v0,v0,0x4
bne v0,zero,0x0040b2ec
_lw a1,0x0(s1)
lw t9,0x0(s4)
jalr t9
_or a2,s6,zero
lw gp,0x10(sp)
lw v0,0x10(s6)
addiu v0,v0,-0x1
bne v0,zero,0x0040b17c
_sw v0,0x10(s6)
lw t9,-0x7f90(gp)
jalr t9
_or a0,s6,zero
b 0x0040b17c
_lw gp,0x10(sp)
lw t9,-0x7f90(gp)
jalr t9
_or a0,v1,zero
b 0x0040ae9c
_lw gp,0x10(sp)
lw v0,0x14(s4)
li v1,-0x1
beq v0,v1,0x0040b024
_nop
bne a1,v0,0x0040b014
_nop
b 0x0040b028
_lw v0,0x10(s4)
lw v0,0x14(v1)
beq v0,a2,0x0040ae8c
_nop
bne v0,a1,0x0040ae74
_nop
b 0x0040ae90
_lw v0,0x10(v1)
jal 0x00408a60
_nop
or a1,zero,zero
lw v0,0x0(a0)
lw gp,0x10(sp)
lw ra,0x4c(sp)
lw s8,0x48(sp)
lw s7,0x44(sp)
lw s6,0x40(sp)
lw s5,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
lw t9,0x14(v0)
jr t9
_addiu sp,sp,0x50
lw v0,0x28(zero)
teq zero,zero
b 0x0040af5c
_or s1,s8,zero
jal 0x00408a60
_or a0,s8,zero
lw v0,0x0(s8)
lw t9,0x14(v0)
jalr t9
_or a1,zero,zero
lw gp,0x10(sp)
lw t9,-0x7784(gp)
jalr t9
_lw a0,0x10(s8)
lw gp,0x10(sp)
lw v0,-0x7f30(gp)
lw v1,0x0(v0)
sw v1,0x0(s8)
b 0x0040af7c
_sw s8,0x0(v0)
lw v0,0x14(s0)
beq v0,v1,0x0040aedc
_nop
bne v0,a1,0x0040aec8
_lw v0,-0x7ed8(gp)
b 0x0040aee0
_lui a0,0x4a
lw v0,0x14(s6)
beq v0,s8,0x0040b1c4
_nop
bne a1,v0,0x0040b1b4
_nop
b 0x0040b1c8
_lw v0,0x10(s6)
lw t9,-0x7f90(gp)
jalr t9
_or a0,s0,zero
b 0x0040afa8
_lw v0,0x20(s1)
lw v0,0x14(s0)
li v1,-0x1
beq v0,v1,0x0040b0f0
_nop
bne a1,v0,0x0040b0dc
_lw v0,-0x7ed8(gp)
b 0x0040b0f4
_lui a0,0x4a
lw t9,-0x7f90(gp)
jalr t9
_or a0,s8,zero
b 0x0040af80
_lw v0,0x0(s1)
lw t9,-0x7f90(gp)
jalr t9
_or a0,s0,zero
b 0x0040b060
_lw gp,0x10(sp)
(translation_unit "void do_delete(int *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  undefined4 uVar13;\n  undefined4 uVar14;\n  code *pcVar15;\n  int iVar16;\n  int *piVar17;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (param_2 == 0) {\n    FUN_00408a60();\n                    /* WARNING: Could not recover jumptable at 0x0040b278. 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    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }\n  iVar9 = param_2 * -4;\n  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);\n  iVar11 = param_2;\n  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar9 = iVar9 + 8;\n  while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  uVar7 = array_vname(iVar12);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);\n  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n  iVar16 = -1;\n  iVar9 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar11 = iVar11 + 4;\n  iVar12 = *(int *)(*(int *)puVar5 + iVar11);\n  if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }\n  iVar9 = iVar9 + -1;\n  if (iVar9 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);\n  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  uVar7 = array_vname(param_1);\n  (*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  param_1 = piVar17;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }\nLAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }\n  iVar11 = *param_1;\nLAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }\n  if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }\n  return;\n}\n\n" (function_definition "void do_delete(int *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  undefined4 uVar13;\n  undefined4 uVar14;\n  code *pcVar15;\n  int iVar16;\n  int *piVar17;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (param_2 == 0) {\n    FUN_00408a60();\n                    /* WARNING: Could not recover jumptable at 0x0040b278. 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    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }\n  iVar9 = param_2 * -4;\n  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);\n  iVar11 = param_2;\n  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar9 = iVar9 + 8;\n  while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  uVar7 = array_vname(iVar12);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);\n  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n  iVar16 = -1;\n  iVar9 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar11 = iVar11 + 4;\n  iVar12 = *(int *)(*(int *)puVar5 + iVar11);\n  if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }\n  iVar9 = iVar9 + -1;\n  if (iVar9 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);\n  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  uVar7 = array_vname(param_1);\n  (*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  param_1 = piVar17;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }\nLAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }\n  iVar11 = *param_1;\nLAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }\n  if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }\n  return;\n}" primitive_type (function_declarator "do_delete(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  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  undefined4 uVar13;\n  undefined4 uVar14;\n  code *pcVar15;\n  int iVar16;\n  int *piVar17;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (param_2 == 0) {\n    FUN_00408a60();\n                    /* WARNING: Could not recover jumptable at 0x0040b278. 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    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }\n  iVar9 = param_2 * -4;\n  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);\n  iVar11 = param_2;\n  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar9 = iVar9 + 8;\n  while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  uVar7 = array_vname(iVar12);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);\n  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n  iVar16 = -1;\n  iVar9 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar11 = iVar11 + 4;\n  iVar12 = *(int *)(*(int *)puVar5 + iVar11);\n  if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }\n  iVar9 = iVar9 + -1;\n  if (iVar9 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);\n  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  uVar7 = array_vname(param_1);\n  (*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  param_1 = piVar17;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }\nLAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }\n  iVar11 = *param_1;\nLAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }\n  if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "undefined4 uVar14;" type_identifier identifier ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (expression_statement "puVar5 = PTR_stack_ptr_004b1cd8;" (assignment_expression "puVar5 = PTR_stack_ptr_004b1cd8" identifier = identifier) ;) (expression_statement "puVar2 = PTR_CONVFMT_004b1c40;" (assignment_expression "puVar2 = PTR_CONVFMT_004b1c40" identifier = identifier) ;) (if_statement "if (param_2 == 0) {\n    FUN_00408a60();\n                    /* WARNING: Could not recover jumptable at 0x0040b278. 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_00408a60();\n                    /* WARNING: Could not recover jumptable at 0x0040b278. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }" { (expression_statement "FUN_00408a60();" (call_expression "FUN_00408a60()" 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    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }" if (parenthesized_expression "(param_2 < 1)" ( (binary_expression "param_2 < 1" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Does not return */\n    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }" { comment (expression_statement "pcVar15 = (code *)trap(0);" (assignment_expression "pcVar15 = (code *)trap(0)" identifier = (cast_expression "(code *)trap(0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "trap(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar9 = param_2 * -4;" (assignment_expression "iVar9 = param_2 * -4" identifier = (binary_expression "param_2 * -4" identifier * number_literal)) ;) (expression_statement "iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);" (assignment_expression "iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" identifier = (pointer_expression "*(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" * (cast_expression "(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" ( (binary_expression "*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4" (binary_expression "*(int *)PTR_stack_ptr_004b1cd8 + iVar9" (pointer_expression "*(int *)PTR_stack_ptr_004b1cd8" * (cast_expression "(int *)PTR_stack_ptr_004b1cd8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "iVar11 = param_2;" (assignment_expression "iVar11 = param_2" identifier = identifier) ;) (if_statement "if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;" if (parenthesized_expression "(*(int *)(iVar12 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar12 + 0x28) == 1" (pointer_expression "*(int *)(iVar12 + 0x28)" * (cast_expression "(int *)(iVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040b088;" goto statement_identifier ;)) (labeled_statement "LAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;" statement_identifier : (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" identifier = identifier) ;)) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" identifier = identifier) ;) (expression_statement "iVar9 = iVar9 + 8;" (assignment_expression "iVar9 = iVar9 + 8" identifier = (binary_expression "iVar9 + 8" identifier + number_literal)) ;) (while_statement "while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }" while (parenthesized_expression "(iVar11 = iVar11 + -1, iVar11 != 0)" ( (comma_expression "iVar11 = iVar11 + -1, iVar11 != 0" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) , (binary_expression "iVar11 != 0" identifier != number_literal)) )) (compound_statement "{\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }" { (expression_statement "iVar16 = *(int *)(*(int *)puVar5 + iVar9);" (assignment_expression "iVar16 = *(int *)(*(int *)puVar5 + iVar9)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar9)" * (cast_expression "(int *)(*(int *)puVar5 + iVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar9)" ( (binary_expression "*(int *)puVar5 + iVar9" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) ;) (if_statement "if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }" if (parenthesized_expression "(*(int *)(iVar16 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar16 + 0x28) == 1" (pointer_expression "*(int *)(iVar16 + 0x28)" * (cast_expression "(int *)(iVar16 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x28)" ( (binary_expression "iVar16 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }" { (if_statement "if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" if (parenthesized_expression "((*(uint *)(iVar16 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar16 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar16 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar16 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar16 + 0x2c)" * (cast_expression "(uint *)(iVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2c)" ( (binary_expression "iVar16 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" { (labeled_statement "LAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);" statement_identifier : (expression_statement "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);" (call_expression "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16)" (parenthesized_expression "(**(code **)puVar4)" ( (pointer_expression "**(code **)puVar4" * (pointer_expression "*(code **)puVar4" * (cast_expression "(code **)puVar4" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)puVar2,*(int *)puVar3,iVar16)" ( (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;)) (labeled_statement "LAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);" statement_identifier : (expression_statement "iVar10 = *(int *)(iVar16 + 0x10);" (assignment_expression "iVar10 = *(int *)(iVar16 + 0x10)" identifier = (pointer_expression "*(int *)(iVar16 + 0x10)" * (cast_expression "(int *)(iVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x10)" ( (binary_expression "iVar16 + 0x10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" else (compound_statement "{\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" { (if_statement "if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;" if (parenthesized_expression "(*(int *)(iVar16 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar16 + 0x14) == -1" (pointer_expression "*(int *)(iVar16 + 0x14)" * (cast_expression "(int *)(iVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x14)" ( (binary_expression "iVar16 + 0x14" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040b024;" goto statement_identifier ;)) (if_statement "if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;" if (parenthesized_expression "(*(int *)puVar3 != *(int *)(iVar16 + 0x14))" ( (binary_expression "*(int *)puVar3 != *(int *)(iVar16 + 0x14)" (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(int *)(iVar16 + 0x14)" * (cast_expression "(int *)(iVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x14)" ( (binary_expression "iVar16 + 0x14" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0040b014;" goto statement_identifier ;)) (expression_statement "iVar10 = *(int *)(iVar16 + 0x10);" (assignment_expression "iVar10 = *(int *)(iVar16 + 0x10)" identifier = (pointer_expression "*(int *)(iVar16 + 0x10)" * (cast_expression "(int *)(iVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x10)" ( (binary_expression "iVar16 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar16 + 0x10) = iVar10 + -1;" (assignment_expression "*(int *)(iVar16 + 0x10) = iVar10 + -1" (pointer_expression "*(int *)(iVar16 + 0x10)" * (cast_expression "(int *)(iVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x10)" ( (binary_expression "iVar16 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }" if (parenthesized_expression "(iVar10 + -1 == 0)" ( (binary_expression "iVar10 + -1 == 0" (binary_expression "iVar10 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar16);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar16)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16)" ( identifier ))) ;) })) })) (expression_statement "iVar9 = iVar9 + 4;" (assignment_expression "iVar9 = iVar9 + 4" identifier = (binary_expression "iVar9 + 4" identifier + number_literal)) ;) })) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x238)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" ( (pointer_expression "*(code *)PTR_set_loc_004b1b6c" * (cast_expression "(code *)PTR_set_loc_004b1b6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "("array.c",0x238)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" ( (pointer_expression "*(code *)PTR_dcgettext_004b235c" * (cast_expression "(code *)PTR_dcgettext_004b235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "uVar7 = array_vname(iVar12);" (assignment_expression "uVar7 = array_vname(iVar12)" identifier = (call_expression "array_vname(iVar12)" identifier (argument_list "(iVar12)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);" (call_expression "(*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7)" (parenthesized_expression "(*(code *)PTR_r_fatal_004b1b70)" ( (pointer_expression "*(code *)PTR_r_fatal_004b1b70" * (cast_expression "(code *)PTR_r_fatal_004b1b70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar6,uVar7)" ( identifier , identifier ))) ;) (expression_statement "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" identifier = (cast_expression "(undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" ( (pointer_expression "**(code **)(*param_1 + 0x10)" * (pointer_expression "*(code **)(*param_1 + 0x10)" * (cast_expression "(code **)(*param_1 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,iVar12)" ( identifier , identifier ))))) ;) (expression_statement "iVar16 = -1;" (assignment_expression "iVar16 = -1" identifier = number_literal) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;" (assignment_expression "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40" identifier = (cast_expression "(undefined4 *)PTR_CONVFMT_004b1c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );" do (compound_statement "{\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  }" { (expression_statement "iVar11 = iVar16;" (assignment_expression "iVar11 = iVar16" identifier = identifier) ;) (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" identifier = identifier) ;) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" identifier = identifier) ;) (expression_statement "PTR_CONVFMT_004b1c40 = (undefined *)puVar1;" (assignment_expression "PTR_CONVFMT_004b1c40 = (undefined *)puVar1" identifier = (cast_expression "(undefined *)puVar1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }" if (parenthesized_expression "(puVar8 == (undefined4 *)0x0)" ( (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }" { (labeled_statement "LAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }" statement_identifier : (if_statement "if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }" if (parenthesized_expression "((*(uint *)PTR_do_flags_004b1b5c & 5) != 0)" ( (binary_expression "(*(uint *)PTR_do_flags_004b1b5c & 5) != 0" (parenthesized_expression "(*(uint *)PTR_do_flags_004b1b5c & 5)" ( (binary_expression "*(uint *)PTR_do_flags_004b1b5c & 5" (pointer_expression "*(uint *)PTR_do_flags_004b1b5c" * (cast_expression "(uint *)PTR_do_flags_004b1b5c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }" { (if_statement "if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }" if (parenthesized_expression "(((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14)))))" ( (binary_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))" (parenthesized_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar12 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar12 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar12 + 0x2c)" * (cast_expression "(uint *)(iVar12 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))" ( (parenthesized_expression "(*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14)))" ( (binary_expression "*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))" (binary_expression "*(int *)(iVar12 + 0x14) != -1" (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))" ( (binary_expression "*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14)" (pointer_expression "*(int *)PTR_CONVFMTidx_004b1c44" * (cast_expression "(int *)PTR_CONVFMTidx_004b1c44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }" { (expression_statement "iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);" (assignment_expression "iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12)" identifier = (call_expression "(**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12)" (parenthesized_expression "(**(code **)PTR_format_val_004b1c48)" ( (pointer_expression "**(code **)PTR_format_val_004b1c48" * (pointer_expression "*(code **)PTR_format_val_004b1c48" * (cast_expression "(code **)PTR_format_val_004b1c48" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12)" ( (pointer_expression "*puVar1" * identifier) , (pointer_expression "*(int *)PTR_CONVFMTidx_004b1c44" * (cast_expression "(int *)PTR_CONVFMTidx_004b1c44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , identifier )))) ;) })) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" ( (pointer_expression "*(code *)PTR_set_loc_004b1b6c" * (cast_expression "(code *)PTR_set_loc_004b1b6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "("array.c",0x23f)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar15 = *(code **)PTR_lintfunc_004b1b7c;" (assignment_expression "pcVar15 = *(code **)PTR_lintfunc_004b1b7c" identifier = (pointer_expression "*(code **)PTR_lintfunc_004b1b7c" * (cast_expression "(code **)PTR_lintfunc_004b1b7c" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5)" identifier = (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" ( (pointer_expression "*(code *)PTR_dcgettext_004b235c" * (cast_expression "(code *)PTR_dcgettext_004b235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "uVar14 = *(undefined4 *)(iVar12 + 0xc);" (assignment_expression "uVar14 = *(undefined4 *)(iVar12 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar12 + 0xc)" * (cast_expression "(undefined4 *)(iVar12 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(undefined4 *)(iVar12 + 8);" (assignment_expression "uVar13 = *(undefined4 *)(iVar12 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar12 + 8)" * (cast_expression "(undefined4 *)(iVar12 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 8)" ( (binary_expression "iVar12 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = array_vname(param_1);" (assignment_expression "uVar7 = array_vname(param_1)" identifier = (call_expression "array_vname(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(*pcVar15)(uVar6,uVar14,uVar13,uVar7);" (call_expression "(*pcVar15)(uVar6,uVar14,uVar13,uVar7)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(uVar6,uVar14,uVar13,uVar7)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" identifier = identifier) ;) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" identifier = identifier) ;) (expression_statement "puVar2 = PTR_CONVFMT_004b1c40;" (assignment_expression "puVar2 = PTR_CONVFMT_004b1c40" identifier = identifier) ;) (expression_statement "iVar11 = iVar9 * -4;" (assignment_expression "iVar11 = iVar9 * -4" identifier = (binary_expression "iVar9 * -4" identifier * number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "piVar17 = (int *)*puVar8;" (assignment_expression "piVar17 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if (piVar17 == (int *)0x0) goto LAB_0040b0ac;" if (parenthesized_expression "(piVar17 == (int *)0x0)" ( (binary_expression "piVar17 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0040b0ac;" goto statement_identifier ;)) (if_statement "if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }" if (parenthesized_expression "(1 < iVar9)" ( (binary_expression "1 < iVar9" number_literal < identifier) )) (compound_statement "{\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }" { (if_statement "if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }" if (parenthesized_expression "(piVar17[10] != 5)" ( (binary_expression "piVar17[10] != 5" (subscript_expression "piVar17[10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }" { (expression_statement "iVar16 = iVar9 * -4;" (assignment_expression "iVar16 = iVar9 * -4" identifier = (binary_expression "iVar9 * -4" identifier * number_literal)) ;) (expression_statement "uVar6 = *puVar1;" (assignment_expression "uVar6 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;" (assignment_expression "iVar11 = *(int *)PTR_CONVFMTidx_004b1c44" identifier = (pointer_expression "*(int *)PTR_CONVFMTidx_004b1c44" * (cast_expression "(int *)PTR_CONVFMTidx_004b1c44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (goto_statement "goto LAB_0040ae4c;" goto statement_identifier ;) })) (expression_statement "iVar9 = *(int *)(iVar12 + 0x10) + -1;" (assignment_expression "iVar9 = *(int *)(iVar12 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar12 + 0x10) + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 0x10) = iVar9;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar9" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1 = piVar17;" (assignment_expression "param_1 = piVar17" identifier = identifier) ;) (if_statement "if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar12)" ( identifier ))) ;) })) })) (if_statement "if (iVar11 < 1) goto LAB_0040af5c;" if (parenthesized_expression "(iVar11 < 1)" ( (binary_expression "iVar11 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0040af5c;" goto statement_identifier ;)) (expression_statement "iVar9 = iVar11 * -4;" (assignment_expression "iVar9 = iVar11 * -4" identifier = (binary_expression "iVar11 * -4" identifier * number_literal)) ;) (expression_statement "iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);" (assignment_expression "iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar9 + 4)" * (cast_expression "(int *)(*(int *)puVar5 + iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar9 + 4)" ( (binary_expression "*(int *)puVar5 + iVar9 + 4" (binary_expression "*(int *)puVar5 + iVar9" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;" if (parenthesized_expression "(*(int *)(iVar12 + 0x28) != 1)" ( (binary_expression "*(int *)(iVar12 + 0x28) != 1" (pointer_expression "*(int *)(iVar12 + 0x28)" * (cast_expression "(int *)(iVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0040ad4c;" goto statement_identifier ;)) (labeled_statement "LAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);" statement_identifier : (expression_statement "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" identifier = (cast_expression "(undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" ( (pointer_expression "**(code **)(*param_1 + 0x10)" * (pointer_expression "*(code **)(*param_1 + 0x10)" * (cast_expression "(code **)(*param_1 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,iVar12)" ( identifier , identifier ))))) ;)) (expression_statement "iVar16 = iVar11 + -1;" (assignment_expression "iVar16 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar11;" (assignment_expression "iVar9 = iVar11" identifier = identifier) ;) (expression_statement "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;" (assignment_expression "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40" identifier = (cast_expression "(undefined4 *)PTR_CONVFMT_004b1c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "LAB_0040b188:\n  iVar11 = iVar11 + 4;" statement_identifier : (expression_statement "iVar11 = iVar11 + 4;" (assignment_expression "iVar11 = iVar11 + 4" identifier = (binary_expression "iVar11 + 4" identifier + number_literal)) ;)) (expression_statement "iVar12 = *(int *)(*(int *)puVar5 + iVar11);" (assignment_expression "iVar12 = *(int *)(*(int *)puVar5 + iVar11)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar11)" * (cast_expression "(int *)(*(int *)puVar5 + iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar11)" ( (binary_expression "*(int *)puVar5 + iVar11" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) ;) (if_statement "if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }" if (parenthesized_expression "(*(int *)(iVar12 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar12 + 0x28) == 1" (pointer_expression "*(int *)(iVar12 + 0x28)" * (cast_expression "(int *)(iVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }" { (if_statement "if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" if (parenthesized_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar12 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar12 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar12 + 0x2c)" * (cast_expression "(uint *)(iVar12 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" { (labeled_statement "LAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);" statement_identifier : (expression_statement "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);" (call_expression "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12)" (parenthesized_expression "(**(code **)puVar4)" ( (pointer_expression "**(code **)puVar4" * (pointer_expression "*(code **)puVar4" * (cast_expression "(code **)puVar4" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)puVar2,*(int *)puVar3,iVar12)" ( (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;)) (labeled_statement "LAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);" statement_identifier : (expression_statement "iVar16 = *(int *)(iVar12 + 0x10);" (assignment_expression "iVar16 = *(int *)(iVar12 + 0x10)" identifier = (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" else (compound_statement "{\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" { (if_statement "if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;" if (parenthesized_expression "(*(int *)(iVar12 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar12 + 0x14) == -1" (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040b1c4;" goto statement_identifier ;)) (if_statement "if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;" if (parenthesized_expression "(*(int *)puVar3 != *(int *)(iVar12 + 0x14))" ( (binary_expression "*(int *)puVar3 != *(int *)(iVar12 + 0x14)" (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0040b1b4;" goto statement_identifier ;)) (expression_statement "iVar16 = *(int *)(iVar12 + 0x10);" (assignment_expression "iVar16 = *(int *)(iVar12 + 0x10)" identifier = (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar12 + 0x10) = iVar16 + -1;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar16 + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (if_statement "if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }" if (parenthesized_expression "(iVar16 + -1 == 0)" ( (binary_expression "iVar16 + -1 == 0" (binary_expression "iVar16 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar12)" ( identifier ))) ;) })) })) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 < 1) {\n    return;\n  }" if (parenthesized_expression "(iVar9 < 1)" ( (binary_expression "iVar9 < 1" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (goto_statement "goto LAB_0040b188;" goto statement_identifier ;) (labeled_statement "LAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);" statement_identifier : (do_statement "do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);" do (compound_statement "{\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  }" { (expression_statement "iVar16 = iVar16 + 4;" (assignment_expression "iVar16 = iVar16 + 4" identifier = (binary_expression "iVar16 + 4" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(*(int *)puVar5 + iVar16);" (assignment_expression "iVar10 = *(int *)(*(int *)puVar5 + iVar16)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar16)" * (cast_expression "(int *)(*(int *)puVar5 + iVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar16)" ( (binary_expression "*(int *)puVar5 + iVar16" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) ;) (if_statement "if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }" if (parenthesized_expression "(*(int *)(iVar10 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar10 + 0x28) == 1" (pointer_expression "*(int *)(iVar10 + 0x28)" * (cast_expression "(int *)(iVar10 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }" { (if_statement "if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" if (parenthesized_expression "((*(uint *)(iVar10 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar10 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar10 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar10 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar10 + 0x2c)" * (cast_expression "(uint *)(iVar10 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x2c)" ( (binary_expression "iVar10 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" { (labeled_statement "LAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);" statement_identifier : (expression_statement "(**(code **)puVar4)(uVar6,iVar11,iVar10);" (call_expression "(**(code **)puVar4)(uVar6,iVar11,iVar10)" (parenthesized_expression "(**(code **)puVar4)" ( (pointer_expression "**(code **)puVar4" * (pointer_expression "*(code **)puVar4" * (cast_expression "(code **)puVar4" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(uVar6,iVar11,iVar10)" ( identifier , identifier , identifier ))) ;)) (labeled_statement "LAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);" statement_identifier : (expression_statement "iVar11 = *(int *)(iVar10 + 0x10);" (assignment_expression "iVar11 = *(int *)(iVar10 + 0x10)" identifier = (pointer_expression "*(int *)(iVar10 + 0x10)" * (cast_expression "(int *)(iVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" else (compound_statement "{\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" { (if_statement "if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;" if (parenthesized_expression "(*(int *)(iVar10 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar10 + 0x14) == -1" (pointer_expression "*(int *)(iVar10 + 0x14)" * (cast_expression "(int *)(iVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x14)" ( (binary_expression "iVar10 + 0x14" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040ae8c;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;" if (parenthesized_expression "(*(int *)(iVar10 + 0x14) != iVar11)" ( (binary_expression "*(int *)(iVar10 + 0x14) != iVar11" (pointer_expression "*(int *)(iVar10 + 0x14)" * (cast_expression "(int *)(iVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x14)" ( (binary_expression "iVar10 + 0x14" identifier + number_literal) )))) != identifier) )) (goto_statement "goto LAB_0040ae74;" goto statement_identifier ;)) (expression_statement "iVar11 = *(int *)(iVar10 + 0x10);" (assignment_expression "iVar11 = *(int *)(iVar10 + 0x10)" identifier = (pointer_expression "*(int *)(iVar10 + 0x10)" * (cast_expression "(int *)(iVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar10 + 0x10) = iVar11 + -1;" (assignment_expression "*(int *)(iVar10 + 0x10) = iVar11 + -1" (pointer_expression "*(int *)(iVar10 + 0x10)" * (cast_expression "(int *)(iVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (if_statement "if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }" if (parenthesized_expression "(iVar11 + -1 == 0)" ( (binary_expression "iVar11 + -1 == 0" (binary_expression "iVar11 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar10);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar10)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10)" ( identifier ))) ;) })) (expression_statement "iVar11 = *(int *)puVar3;" (assignment_expression "iVar11 = *(int *)puVar3" identifier = (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar6 = *puVar1;" (assignment_expression "uVar6 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) })) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;)) (if_statement "if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }" if (parenthesized_expression "(((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11))))" ( (binary_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))" (parenthesized_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar12 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar12 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar12 + 0x2c)" * (cast_expression "(uint *)(iVar12 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))" ( (parenthesized_expression "(*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11))" ( (binary_expression "*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)" (binary_expression "*(int *)(iVar12 + 0x14) != -1" (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(iVar12 + 0x14) != iVar11)" ( (binary_expression "*(int *)(iVar12 + 0x14) != iVar11" (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) )))) != identifier) ))) )) ))) )) (compound_statement "{\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }" { (expression_statement "iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);" (assignment_expression "iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12)" identifier = (call_expression "(**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12)" (parenthesized_expression "(**(code **)PTR_format_val_004b1c48)" ( (pointer_expression "**(code **)PTR_format_val_004b1c48" * (pointer_expression "*(code **)PTR_format_val_004b1c48" * (cast_expression "(code **)PTR_format_val_004b1c48" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(uVar6,iVar11,iVar12)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" ( (pointer_expression "*(code *)PTR_set_loc_004b1b6c" * (cast_expression "(code *)PTR_set_loc_004b1b6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "("array.c",0x24d)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" identifier = (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" ( (pointer_expression "*(code *)PTR_dcgettext_004b235c" * (cast_expression "(code *)PTR_dcgettext_004b235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "uVar7 = array_vname(param_1);" (assignment_expression "uVar7 = array_vname(param_1)" identifier = (call_expression "array_vname(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));" (call_expression "(*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8))" (parenthesized_expression "(*(code *)PTR_r_fatal_004b1b70)" ( (pointer_expression "*(code *)PTR_r_fatal_004b1b70" * (cast_expression "(code *)PTR_r_fatal_004b1b70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(iVar12 + 0xc)" * (cast_expression "(undefined4 *)(iVar12 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar12 + 8)" * (cast_expression "(undefined4 *)(iVar12 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 8)" ( (binary_expression "iVar12 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "iVar11 = *(int *)(iVar12 + 0x10) + -1;" (assignment_expression "iVar11 = *(int *)(iVar12 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar12 + 0x10) + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 0x10) = iVar11;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar11" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1 = piVar17;" (assignment_expression "param_1 = piVar17" identifier = identifier) ;) (if_statement "if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar12)" ( identifier ))) ;) })) (labeled_statement "LAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" statement_identifier : (if_statement "if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" if (parenthesized_expression "(piVar17[10] == 5)" ( (binary_expression "piVar17[10] == 5" (subscript_expression "piVar17[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }" { (expression_statement "FUN_00408a60(piVar17,param_2);" (call_expression "FUN_00408a60(piVar17,param_2)" identifier (argument_list "(piVar17,param_2)" ( identifier , identifier ))) ;) (expression_statement "(**(code **)(*piVar17 + 0x14))();" (call_expression "(**(code **)(*piVar17 + 0x14))()" (parenthesized_expression "(**(code **)(*piVar17 + 0x14))" ( (pointer_expression "**(code **)(*piVar17 + 0x14)" * (pointer_expression "*(code **)(*piVar17 + 0x14)" * (cast_expression "(code **)(*piVar17 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar17 + 0x14)" ( (binary_expression "*piVar17 + 0x14" (pointer_expression "*piVar17" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "(*(code *)PTR_free_004b239c)(piVar17[4]);" (call_expression "(*(code *)PTR_free_004b239c)(piVar17[4])" (parenthesized_expression "(*(code *)PTR_free_004b239c)" ( (pointer_expression "*(code *)PTR_free_004b239c" * (cast_expression "(code *)PTR_free_004b239c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar17[4])" ( (subscript_expression "piVar17[4]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar2 = PTR_nextfree_004b1bf0;" (assignment_expression "puVar2 = PTR_nextfree_004b1bf0" identifier = identifier) ;) (expression_statement "*piVar17 = *(int *)PTR_nextfree_004b1bf0;" (assignment_expression "*piVar17 = *(int *)PTR_nextfree_004b1bf0" (pointer_expression "*piVar17" * identifier) = (pointer_expression "*(int *)PTR_nextfree_004b1bf0" * (cast_expression "(int *)PTR_nextfree_004b1bf0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int **)puVar2 = piVar17;" (assignment_expression "*(int **)puVar2 = piVar17" (pointer_expression "*(int **)puVar2" * (cast_expression "(int **)puVar2" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) }) (else_clause "else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" else (compound_statement "{\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" { (expression_statement "iVar11 = piVar17[4];" (assignment_expression "iVar11 = piVar17[4]" identifier = (subscript_expression "piVar17[4]" identifier [ number_literal ])) ;) (expression_statement "piVar17[4] = iVar11 + -1;" (assignment_expression "piVar17[4] = iVar11 + -1" (subscript_expression "piVar17[4]" identifier [ number_literal ]) = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (if_statement "if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }" if (parenthesized_expression "(iVar11 + -1 < 1)" ( (binary_expression "iVar11 + -1 < 1" (binary_expression "iVar11 + -1" identifier + number_literal) < number_literal) )) (compound_statement "{\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(piVar17);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(piVar17)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar17)" ( identifier ))) ;) (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_0040af80;" goto statement_identifier ;) })) })))) (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (labeled_statement "LAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);" statement_identifier : (expression_statement "(**(code **)(iVar11 + 0x18))(param_1,iVar12);" (call_expression "(**(code **)(iVar11 + 0x18))(param_1,iVar12)" (parenthesized_expression "(**(code **)(iVar11 + 0x18))" ( (pointer_expression "**(code **)(iVar11 + 0x18)" * (pointer_expression "*(code **)(iVar11 + 0x18)" * (cast_expression "(code **)(iVar11 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 0x18)" ( (binary_expression "iVar11 + 0x18" identifier + number_literal) ))))) )) (argument_list "(param_1,iVar12)" ( identifier , identifier ))) ;)) (expression_statement "iVar11 = *(int *)(iVar12 + 0x10) + -1;" (assignment_expression "iVar11 = *(int *)(iVar12 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar12 + 0x10) + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 0x10) = iVar11;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar11" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "iVar11 = param_1[8];" (assignment_expression "iVar11 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    iVar11 = param_1[8];\n  }" else (compound_statement "{\n    iVar11 = param_1[8];\n  }" { (expression_statement "iVar11 = param_1[8];" (assignment_expression "iVar11 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) }))) (if_statement "if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[10] = 5;" (assignment_expression "param_1[10] = 5" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = (int)&PTR_DAT_004af9bc;" (assignment_expression "*param_1 = (int)&PTR_DAT_004af9bc" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)&PTR_DAT_004af9bc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&PTR_DAT_004af9bc" & identifier))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nvoid do_delete(NODE *symbol,int nsubs)\n\n{\n  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  char *pcVar7;\n  exp_node **ppeVar8;\n  int iVar9;\n  array_funcs_t *paVar10;\n  ulong uVar11;\n  size_t sVar12;\n  int iVar13;\n  NODE *pNVar14;\n  size_t sVar15;\n  NODE *symbol_00;\n  char *pcVar16;\n  int iVar17;\n  code *pcVar18;\n  int iVar19;\n  NODE *symbol_01;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (nsubs == 0) {\n    adjust_fcall_stack(symbol,0);\n                    /* WARNING: Could not recover jumptable at 0x0040b278. 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  if (nsubs < 1) {\n                    /* WARNING: Does not return */\n    pcVar18 = (code *)trap(0);\n    (*pcVar18)();\n  }\n  iVar13 = nsubs * -4;\n  symbol_00 = *(NODE **)(*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4);\n  iVar17 = nsubs;\n  if (symbol_00->type == Node_val) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar13 = iVar13 + 8;\n  while (iVar17 = iVar17 + -1, iVar17 != 0) {\n    iVar19 = *(int *)(*(int *)puVar5 + iVar13);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n    }\n    iVar13 = iVar13 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  pcVar7 = array_vname(symbol_00);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7);\n  ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);\n  iVar19 = -1;\n  iVar13 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar17 = iVar19;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (ppeVar8 == (exp_node **)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar17 = iVar13 * -4;\n      break;\n    }\n    symbol_01 = *ppeVar8;\n    if (symbol_01 == (NODE *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar13) {\n      if (symbol_01->type != Node_var_array) {\n        iVar17 = iVar13 * -4;\n        uVar6 = *puVar1;\n        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n      (symbol_00->sub).nodep.name = pcVar7;\n      symbol = symbol_01;\n      if (pcVar7 == (char *)0x0) {\n        (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n      }\n    }\n    if (iVar17 < 1) goto LAB_0040af5c;\n    iVar13 = iVar17 * -4;\n    symbol_00 = *(NODE **)(*(int *)puVar5 + iVar13 + 4);\n    if (symbol_00->type != Node_val) goto LAB_0040ad4c;\nLAB_0040b088:\n    ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);\n    iVar19 = iVar17 + -1;\n    iVar13 = iVar17;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar17 = iVar17 + 4;\n  iVar19 = *(int *)(*(int *)puVar5 + iVar17);\n  if (*(int *)(iVar19 + 0x28) == 1) {\n    if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b1c4:\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    *(int *)(iVar19 + 0x10) = iVar9 + -1;\n    if (iVar9 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar19);\n    }\n  }\n  iVar13 = iVar13 + -1;\n  if (iVar13 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar17 = iVar17 + 4;\n    iVar19 = *(int *)(*(int *)puVar5 + iVar17);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n      sVar15 = *(size_t *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar13 = iVar13 + -1;\n  } while (iVar13 != 0);\n  if (((symbol_00->flags & 4) == 0) ||\n     ((sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15)))) {\n    symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  pcVar7 = array_vname(symbol);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7,(symbol_00->sub).val.slen,(symbol_00->sub).val.sp);\n  pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n  (symbol_00->sub).nodep.name = pcVar7;\n  symbol = symbol_01;\n  if (pcVar7 == (char *)0x0) {\n    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n  }\nLAB_0040af5c:\n  if (symbol_01->type == Node_var_array) {\n    pNVar14 = symbol_01;\n    adjust_fcall_stack(symbol_01,nsubs);\n    (*((symbol_01->sub).nodep.l.lp)->clear)(pNVar14,(exp_node *)0x0);\n    (*(code *)PTR_free_004b239c)((symbol_01->sub).nodep.name);\n    puVar2 = PTR_nextfree_004b1bf0;\n    (symbol_01->sub).nodep.l = *(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0;\n    *(NODE **)puVar2 = symbol_01;\n  }\n  else {\n    iVar17 = (symbol_01->sub).val.sref + -1;\n    (symbol_01->sub).val.sref = iVar17;\n    if (iVar17 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(symbol_01);\n      paVar10 = (symbol->sub).nodep.l.lp;\n      goto LAB_0040af80;\n    }\n  }\n  paVar10 = (symbol->sub).nodep.l.lp;\nLAB_0040af80:\n  (*paVar10->remove)(symbol,symbol_00);\n  pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n  (symbol_00->sub).nodep.name = pcVar7;\n  if (pcVar7 == (char *)0x0) {\n    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n    uVar11 = (symbol->sub).nodep.reflags;\n  }\n  else {\n    uVar11 = (symbol->sub).nodep.reflags;\n  }\n  if (uVar11 == 0) {\n    *(undefined4 *)((int)&symbol->sub + 4) = 0;\n    (symbol->sub).nodep.cnt = 0;\n    symbol->type = Node_var_array;\n    (symbol->sub).nodep.reserved = 0;\n    symbol->flags = 0;\n    (symbol->sub).nodep.l.lp = &null_array_func;\n  }\n  return;\n}\n\n" comment (function_definition "void do_delete(NODE *symbol,int nsubs)\n\n{\n  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  char *pcVar7;\n  exp_node **ppeVar8;\n  int iVar9;\n  array_funcs_t *paVar10;\n  ulong uVar11;\n  size_t sVar12;\n  int iVar13;\n  NODE *pNVar14;\n  size_t sVar15;\n  NODE *symbol_00;\n  char *pcVar16;\n  int iVar17;\n  code *pcVar18;\n  int iVar19;\n  NODE *symbol_01;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (nsubs == 0) {\n    adjust_fcall_stack(symbol,0);\n                    /* WARNING: Could not recover jumptable at 0x0040b278. 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  if (nsubs < 1) {\n                    /* WARNING: Does not return */\n    pcVar18 = (code *)trap(0);\n    (*pcVar18)();\n  }\n  iVar13 = nsubs * -4;\n  symbol_00 = *(NODE **)(*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4);\n  iVar17 = nsubs;\n  if (symbol_00->type == Node_val) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar13 = iVar13 + 8;\n  while (iVar17 = iVar17 + -1, iVar17 != 0) {\n    iVar19 = *(int *)(*(int *)puVar5 + iVar13);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n    }\n    iVar13 = iVar13 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  pcVar7 = array_vname(symbol_00);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7);\n  ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);\n  iVar19 = -1;\n  iVar13 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar17 = iVar19;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (ppeVar8 == (exp_node **)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar17 = iVar13 * -4;\n      break;\n    }\n    symbol_01 = *ppeVar8;\n    if (symbol_01 == (NODE *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar13) {\n      if (symbol_01->type != Node_var_array) {\n        iVar17 = iVar13 * -4;\n        uVar6 = *puVar1;\n        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n      (symbol_00->sub).nodep.name = pcVar7;\n      symbol = symbol_01;\n      if (pcVar7 == (char *)0x0) {\n        (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n      }\n    }\n    if (iVar17 < 1) goto LAB_0040af5c;\n    iVar13 = iVar17 * -4;\n    symbol_00 = *(NODE **)(*(int *)puVar5 + iVar13 + 4);\n    if (symbol_00->type != Node_val) goto LAB_0040ad4c;\nLAB_0040b088:\n    ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);\n    iVar19 = iVar17 + -1;\n    iVar13 = iVar17;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar17 = iVar17 + 4;\n  iVar19 = *(int *)(*(int *)puVar5 + iVar17);\n  if (*(int *)(iVar19 + 0x28) == 1) {\n    if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b1c4:\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    *(int *)(iVar19 + 0x10) = iVar9 + -1;\n    if (iVar9 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar19);\n    }\n  }\n  iVar13 = iVar13 + -1;\n  if (iVar13 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar17 = iVar17 + 4;\n    iVar19 = *(int *)(*(int *)puVar5 + iVar17);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n      sVar15 = *(size_t *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar13 = iVar13 + -1;\n  } while (iVar13 != 0);\n  if (((symbol_00->flags & 4) == 0) ||\n     ((sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15)))) {\n    symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  pcVar7 = array_vname(symbol);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7,(symbol_00->sub).val.slen,(symbol_00->sub).val.sp);\n  pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n  (symbol_00->sub).nodep.name = pcVar7;\n  symbol = symbol_01;\n  if (pcVar7 == (char *)0x0) {\n    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n  }\nLAB_0040af5c:\n  if (symbol_01->type == Node_var_array) {\n    pNVar14 = symbol_01;\n    adjust_fcall_stack(symbol_01,nsubs);\n    (*((symbol_01->sub).nodep.l.lp)->clear)(pNVar14,(exp_node *)0x0);\n    (*(code *)PTR_free_004b239c)((symbol_01->sub).nodep.name);\n    puVar2 = PTR_nextfree_004b1bf0;\n    (symbol_01->sub).nodep.l = *(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0;\n    *(NODE **)puVar2 = symbol_01;\n  }\n  else {\n    iVar17 = (symbol_01->sub).val.sref + -1;\n    (symbol_01->sub).val.sref = iVar17;\n    if (iVar17 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(symbol_01);\n      paVar10 = (symbol->sub).nodep.l.lp;\n      goto LAB_0040af80;\n    }\n  }\n  paVar10 = (symbol->sub).nodep.l.lp;\nLAB_0040af80:\n  (*paVar10->remove)(symbol,symbol_00);\n  pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n  (symbol_00->sub).nodep.name = pcVar7;\n  if (pcVar7 == (char *)0x0) {\n    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n    uVar11 = (symbol->sub).nodep.reflags;\n  }\n  else {\n    uVar11 = (symbol->sub).nodep.reflags;\n  }\n  if (uVar11 == 0) {\n    *(undefined4 *)((int)&symbol->sub + 4) = 0;\n    (symbol->sub).nodep.cnt = 0;\n    symbol->type = Node_var_array;\n    (symbol->sub).nodep.reserved = 0;\n    symbol->flags = 0;\n    (symbol->sub).nodep.l.lp = &null_array_func;\n  }\n  return;\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  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  char *pcVar7;\n  exp_node **ppeVar8;\n  int iVar9;\n  array_funcs_t *paVar10;\n  ulong uVar11;\n  size_t sVar12;\n  int iVar13;\n  NODE *pNVar14;\n  size_t sVar15;\n  NODE *symbol_00;\n  char *pcVar16;\n  int iVar17;\n  code *pcVar18;\n  int iVar19;\n  NODE *symbol_01;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (nsubs == 0) {\n    adjust_fcall_stack(symbol,0);\n                    /* WARNING: Could not recover jumptable at 0x0040b278. 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  if (nsubs < 1) {\n                    /* WARNING: Does not return */\n    pcVar18 = (code *)trap(0);\n    (*pcVar18)();\n  }\n  iVar13 = nsubs * -4;\n  symbol_00 = *(NODE **)(*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4);\n  iVar17 = nsubs;\n  if (symbol_00->type == Node_val) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar13 = iVar13 + 8;\n  while (iVar17 = iVar17 + -1, iVar17 != 0) {\n    iVar19 = *(int *)(*(int *)puVar5 + iVar13);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n    }\n    iVar13 = iVar13 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  pcVar7 = array_vname(symbol_00);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7);\n  ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);\n  iVar19 = -1;\n  iVar13 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar17 = iVar19;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (ppeVar8 == (exp_node **)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar17 = iVar13 * -4;\n      break;\n    }\n    symbol_01 = *ppeVar8;\n    if (symbol_01 == (NODE *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar13) {\n      if (symbol_01->type != Node_var_array) {\n        iVar17 = iVar13 * -4;\n        uVar6 = *puVar1;\n        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n      (symbol_00->sub).nodep.name = pcVar7;\n      symbol = symbol_01;\n      if (pcVar7 == (char *)0x0) {\n        (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n      }\n    }\n    if (iVar17 < 1) goto LAB_0040af5c;\n    iVar13 = iVar17 * -4;\n    symbol_00 = *(NODE **)(*(int *)puVar5 + iVar13 + 4);\n    if (symbol_00->type != Node_val) goto LAB_0040ad4c;\nLAB_0040b088:\n    ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);\n    iVar19 = iVar17 + -1;\n    iVar13 = iVar17;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar17 = iVar17 + 4;\n  iVar19 = *(int *)(*(int *)puVar5 + iVar17);\n  if (*(int *)(iVar19 + 0x28) == 1) {\n    if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b1c4:\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    *(int *)(iVar19 + 0x10) = iVar9 + -1;\n    if (iVar9 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar19);\n    }\n  }\n  iVar13 = iVar13 + -1;\n  if (iVar13 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar17 = iVar17 + 4;\n    iVar19 = *(int *)(*(int *)puVar5 + iVar17);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n      sVar15 = *(size_t *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar13 = iVar13 + -1;\n  } while (iVar13 != 0);\n  if (((symbol_00->flags & 4) == 0) ||\n     ((sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15)))) {\n    symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  pcVar7 = array_vname(symbol);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7,(symbol_00->sub).val.slen,(symbol_00->sub).val.sp);\n  pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n  (symbol_00->sub).nodep.name = pcVar7;\n  symbol = symbol_01;\n  if (pcVar7 == (char *)0x0) {\n    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n  }\nLAB_0040af5c:\n  if (symbol_01->type == Node_var_array) {\n    pNVar14 = symbol_01;\n    adjust_fcall_stack(symbol_01,nsubs);\n    (*((symbol_01->sub).nodep.l.lp)->clear)(pNVar14,(exp_node *)0x0);\n    (*(code *)PTR_free_004b239c)((symbol_01->sub).nodep.name);\n    puVar2 = PTR_nextfree_004b1bf0;\n    (symbol_01->sub).nodep.l = *(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0;\n    *(NODE **)puVar2 = symbol_01;\n  }\n  else {\n    iVar17 = (symbol_01->sub).val.sref + -1;\n    (symbol_01->sub).val.sref = iVar17;\n    if (iVar17 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(symbol_01);\n      paVar10 = (symbol->sub).nodep.l.lp;\n      goto LAB_0040af80;\n    }\n  }\n  paVar10 = (symbol->sub).nodep.l.lp;\nLAB_0040af80:\n  (*paVar10->remove)(symbol,symbol_00);\n  pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n  (symbol_00->sub).nodep.name = pcVar7;\n  if (pcVar7 == (char *)0x0) {\n    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n    uVar11 = (symbol->sub).nodep.reflags;\n  }\n  else {\n    uVar11 = (symbol->sub).nodep.reflags;\n  }\n  if (uVar11 == 0) {\n    *(undefined4 *)((int)&symbol->sub + 4) = 0;\n    (symbol->sub).nodep.cnt = 0;\n    symbol->type = Node_var_array;\n    (symbol->sub).nodep.reserved = 0;\n    symbol->flags = 0;\n    (symbol->sub).nodep.l.lp = &null_array_func;\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "exp_node **ppeVar8;" type_identifier (pointer_declarator "**ppeVar8" * (pointer_declarator "*ppeVar8" * identifier)) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "array_funcs_t *paVar10;" type_identifier (pointer_declarator "*paVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "size_t sVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "NODE *pNVar14;" type_identifier (pointer_declarator "*pNVar14" * identifier) ;) (declaration "size_t sVar15;" primitive_type identifier ;) (declaration "NODE *symbol_00;" type_identifier (pointer_declarator "*symbol_00" * identifier) ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "code *pcVar18;" type_identifier (pointer_declarator "*pcVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "NODE *symbol_01;" type_identifier (pointer_declarator "*symbol_01" * identifier) ;) (expression_statement "puVar5 = PTR_stack_ptr_004b1cd8;" (assignment_expression "puVar5 = PTR_stack_ptr_004b1cd8" identifier = identifier) ;) (expression_statement "puVar2 = PTR_CONVFMT_004b1c40;" (assignment_expression "puVar2 = PTR_CONVFMT_004b1c40" identifier = identifier) ;) (if_statement "if (nsubs == 0) {\n    adjust_fcall_stack(symbol,0);\n                    /* WARNING: Could not recover jumptable at 0x0040b278. 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 0x0040b278. 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 ;) })) (if_statement "if (nsubs < 1) {\n                    /* WARNING: Does not return */\n    pcVar18 = (code *)trap(0);\n    (*pcVar18)();\n  }" if (parenthesized_expression "(nsubs < 1)" ( (binary_expression "nsubs < 1" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Does not return */\n    pcVar18 = (code *)trap(0);\n    (*pcVar18)();\n  }" { comment (expression_statement "pcVar18 = (code *)trap(0);" (assignment_expression "pcVar18 = (code *)trap(0)" identifier = (cast_expression "(code *)trap(0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "trap(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (expression_statement "(*pcVar18)();" (call_expression "(*pcVar18)()" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar13 = nsubs * -4;" (assignment_expression "iVar13 = nsubs * -4" identifier = (binary_expression "nsubs * -4" identifier * number_literal)) ;) (expression_statement "symbol_00 = *(NODE **)(*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4);" (assignment_expression "symbol_00 = *(NODE **)(*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4)" identifier = (pointer_expression "*(NODE **)(*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4)" * (cast_expression "(NODE **)(*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4)" ( (type_descriptor "NODE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4)" ( (binary_expression "*(int *)PTR_stack_ptr_004b1cd8 + iVar13 + 4" (binary_expression "*(int *)PTR_stack_ptr_004b1cd8 + iVar13" (pointer_expression "*(int *)PTR_stack_ptr_004b1cd8" * (cast_expression "(int *)PTR_stack_ptr_004b1cd8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "iVar17 = nsubs;" (assignment_expression "iVar17 = nsubs" identifier = identifier) ;) (if_statement "if (symbol_00->type == Node_val) goto LAB_0040b088;" if (parenthesized_expression "(symbol_00->type == Node_val)" ( (binary_expression "symbol_00->type == Node_val" (field_expression "symbol_00->type" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_0040b088;" goto statement_identifier ;)) (labeled_statement "LAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;" statement_identifier : (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" identifier = identifier) ;)) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" identifier = identifier) ;) (expression_statement "iVar13 = iVar13 + 8;" (assignment_expression "iVar13 = iVar13 + 8" identifier = (binary_expression "iVar13 + 8" identifier + number_literal)) ;) (while_statement "while (iVar17 = iVar17 + -1, iVar17 != 0) {\n    iVar19 = *(int *)(*(int *)puVar5 + iVar13);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n    }\n    iVar13 = iVar13 + 4;\n  }" while (parenthesized_expression "(iVar17 = iVar17 + -1, iVar17 != 0)" ( (comma_expression "iVar17 = iVar17 + -1, iVar17 != 0" (assignment_expression "iVar17 = iVar17 + -1" identifier = (binary_expression "iVar17 + -1" identifier + number_literal)) , (binary_expression "iVar17 != 0" identifier != number_literal)) )) (compound_statement "{\n    iVar19 = *(int *)(*(int *)puVar5 + iVar13);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n    }\n    iVar13 = iVar13 + 4;\n  }" { (expression_statement "iVar19 = *(int *)(*(int *)puVar5 + iVar13);" (assignment_expression "iVar19 = *(int *)(*(int *)puVar5 + iVar13)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar13)" * (cast_expression "(int *)(*(int *)puVar5 + iVar13)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar13)" ( (binary_expression "*(int *)puVar5 + iVar13" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) ;) (if_statement "if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n    }" if (parenthesized_expression "(*(int *)(iVar19 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar19 + 0x28) == 1" (pointer_expression "*(int *)(iVar19 + 0x28)" * (cast_expression "(int *)(iVar19 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x28)" ( (binary_expression "iVar19 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n    }" { (if_statement "if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }" if (parenthesized_expression "((*(uint *)(iVar19 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar19 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar19 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar19 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar19 + 0x2c)" * (cast_expression "(uint *)(iVar19 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x2c)" ( (binary_expression "iVar19 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }" { (labeled_statement "LAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);" statement_identifier : (expression_statement "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);" (call_expression "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19)" (parenthesized_expression "(**(code **)puVar4)" ( (pointer_expression "**(code **)puVar4" * (pointer_expression "*(code **)puVar4" * (cast_expression "(code **)puVar4" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)puVar2,*(int *)puVar3,iVar19)" ( (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;)) (labeled_statement "LAB_0040b024:\n        iVar9 = *(int *)(iVar19 + 0x10);" statement_identifier : (expression_statement "iVar9 = *(int *)(iVar19 + 0x10);" (assignment_expression "iVar9 = *(int *)(iVar19 + 0x10)" identifier = (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }" else (compound_statement "{\n        if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }" { (if_statement "if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b024;" if (parenthesized_expression "(*(int *)(iVar19 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar19 + 0x14) == -1" (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040b024;" goto statement_identifier ;)) (if_statement "if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b014;" if (parenthesized_expression "(*(int *)puVar3 != *(int *)(iVar19 + 0x14))" ( (binary_expression "*(int *)puVar3 != *(int *)(iVar19 + 0x14)" (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0040b014;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(iVar19 + 0x10);" (assignment_expression "iVar9 = *(int *)(iVar19 + 0x10)" identifier = (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar19 + 0x10) = iVar9 + -1;" (assignment_expression "*(int *)(iVar19 + 0x10) = iVar9 + -1" (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }" if (parenthesized_expression "(iVar9 + -1 == 0)" ( (binary_expression "iVar9 + -1 == 0" (binary_expression "iVar9 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar19);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar19)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar19)" ( identifier ))) ;) })) })) (expression_statement "iVar13 = iVar13 + 4;" (assignment_expression "iVar13 = iVar13 + 4" identifier = (binary_expression "iVar13 + 4" identifier + number_literal)) ;) })) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x238)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" ( (pointer_expression "*(code *)PTR_set_loc_004b1b6c" * (cast_expression "(code *)PTR_set_loc_004b1b6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "("array.c",0x238)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" ( (pointer_expression "*(code *)PTR_dcgettext_004b235c" * (cast_expression "(code *)PTR_dcgettext_004b235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "pcVar7 = array_vname(symbol_00);" (assignment_expression "pcVar7 = array_vname(symbol_00)" identifier = (call_expression "array_vname(symbol_00)" identifier (argument_list "(symbol_00)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7);" (call_expression "(*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7)" (parenthesized_expression "(*(code *)PTR_r_fatal_004b1b70)" ( (pointer_expression "*(code *)PTR_r_fatal_004b1b70" * (cast_expression "(code *)PTR_r_fatal_004b1b70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar6,pcVar7)" ( identifier , identifier ))) ;) (expression_statement "ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);" (assignment_expression "ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00)" identifier = (call_expression "(*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00)" (parenthesized_expression "(*((symbol->sub).nodep.l.lp)->exists)" ( (pointer_expression "*((symbol->sub).nodep.l.lp)->exists" * (field_expression "((symbol->sub).nodep.l.lp)->exists" (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,symbol_00)" ( identifier , identifier )))) ;) (expression_statement "iVar19 = -1;" (assignment_expression "iVar19 = -1" identifier = number_literal) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;" (assignment_expression "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40" identifier = (cast_expression "(undefined4 *)PTR_CONVFMT_004b1c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    iVar17 = iVar19;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (ppeVar8 == (exp_node **)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar17 = iVar13 * -4;\n      break;\n    }\n    symbol_01 = *ppeVar8;\n    if (symbol_01 == (NODE *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar13) {\n      if (symbol_01->type != Node_var_array) {\n        iVar17 = iVar13 * -4;\n        uVar6 = *puVar1;\n        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n      (symbol_00->sub).nodep.name = pcVar7;\n      symbol = symbol_01;\n      if (pcVar7 == (char *)0x0) {\n        (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n      }\n    }\n    if (iVar17 < 1) goto LAB_0040af5c;\n    iVar13 = iVar17 * -4;\n    symbol_00 = *(NODE **)(*(int *)puVar5 + iVar13 + 4);\n    if (symbol_00->type != Node_val) goto LAB_0040ad4c;\nLAB_0040b088:\n    ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);\n    iVar19 = iVar17 + -1;\n    iVar13 = iVar17;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );" do (compound_statement "{\n    iVar17 = iVar19;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (ppeVar8 == (exp_node **)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar17 = iVar13 * -4;\n      break;\n    }\n    symbol_01 = *ppeVar8;\n    if (symbol_01 == (NODE *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar13) {\n      if (symbol_01->type != Node_var_array) {\n        iVar17 = iVar13 * -4;\n        uVar6 = *puVar1;\n        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n      (symbol_00->sub).nodep.name = pcVar7;\n      symbol = symbol_01;\n      if (pcVar7 == (char *)0x0) {\n        (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n      }\n    }\n    if (iVar17 < 1) goto LAB_0040af5c;\n    iVar13 = iVar17 * -4;\n    symbol_00 = *(NODE **)(*(int *)puVar5 + iVar13 + 4);\n    if (symbol_00->type != Node_val) goto LAB_0040ad4c;\nLAB_0040b088:\n    ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);\n    iVar19 = iVar17 + -1;\n    iVar13 = iVar17;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  }" { (expression_statement "iVar17 = iVar19;" (assignment_expression "iVar17 = iVar19" identifier = identifier) ;) (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" identifier = identifier) ;) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" identifier = identifier) ;) (expression_statement "PTR_CONVFMT_004b1c40 = (undefined *)puVar1;" (assignment_expression "PTR_CONVFMT_004b1c40 = (undefined *)puVar1" identifier = (cast_expression "(undefined *)puVar1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (ppeVar8 == (exp_node **)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar17 = iVar13 * -4;\n      break;\n    }" if (parenthesized_expression "(ppeVar8 == (exp_node **)0x0)" ( (binary_expression "ppeVar8 == (exp_node **)0x0" identifier == (cast_expression "(exp_node **)0x0" ( (type_descriptor "exp_node **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar17 = iVar13 * -4;\n      break;\n    }" { (labeled_statement "LAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }" statement_identifier : (if_statement "if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }" if (parenthesized_expression "((*(uint *)PTR_do_flags_004b1b5c & 5) != 0)" ( (binary_expression "(*(uint *)PTR_do_flags_004b1b5c & 5) != 0" (parenthesized_expression "(*(uint *)PTR_do_flags_004b1b5c & 5)" ( (binary_expression "*(uint *)PTR_do_flags_004b1b5c & 5" (pointer_expression "*(uint *)PTR_do_flags_004b1b5c" * (cast_expression "(uint *)PTR_do_flags_004b1b5c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar18 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        sVar15 = (symbol_00->sub).val.slen;\n        pcVar16 = (symbol_00->sub).val.sp;\n        pcVar7 = array_vname(symbol);\n        (*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);\n      }" { (if_statement "if (((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))) {\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }" if (parenthesized_expression "(((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15))))" ( (binary_expression "((symbol_00->flags & 4) == 0) ||\n           ((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))" (parenthesized_expression "((symbol_00->flags & 4) == 0)" ( (binary_expression "(symbol_00->flags & 4) == 0" (parenthesized_expression "(symbol_00->flags & 4)" ( (binary_expression "symbol_00->flags & 4" (field_expression "symbol_00->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)))" ( (parenthesized_expression "(sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15))" ( (comma_expression "sVar15 = (symbol_00->sub).nodep.reserved, sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)" (assignment_expression "sVar15 = (symbol_00->sub).nodep.reserved" identifier = (field_expression "(symbol_00->sub).nodep.reserved" (field_expression "(symbol_00->sub).nodep" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "sVar15 != 0xffffffff &&\n            (*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)" (binary_expression "sVar15 != 0xffffffff" identifier != number_literal) && (parenthesized_expression "(*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15)" ( (binary_expression "*(size_t *)PTR_CONVFMTidx_004b1c44 != sVar15" (pointer_expression "*(size_t *)PTR_CONVFMTidx_004b1c44" * (cast_expression "(size_t *)PTR_CONVFMTidx_004b1c44" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != identifier) )))) )) ))) )) (compound_statement "{\n          symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);\n        }" { (expression_statement "symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);" (assignment_expression "symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00)" identifier = (cast_expression "(NODE *)(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00)" ( (type_descriptor "NODE *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)PTR_format_val_004b1c48)\n                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00)" (parenthesized_expression "(**(code **)PTR_format_val_004b1c48)" ( (pointer_expression "**(code **)PTR_format_val_004b1c48" * (pointer_expression "*(code **)PTR_format_val_004b1c48" * (cast_expression "(code **)PTR_format_val_004b1c48" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00)" ( (pointer_expression "*puVar1" * identifier) , (pointer_expression "*(size_t *)PTR_CONVFMTidx_004b1c44" * (cast_expression "(size_t *)PTR_CONVFMTidx_004b1c44" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))))) ;) })) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" ( (pointer_expression "*(code *)PTR_set_loc_004b1b6c" * (cast_expression "(code *)PTR_set_loc_004b1b6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "("array.c",0x23f)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar18 = *(code **)PTR_lintfunc_004b1b7c;" (assignment_expression "pcVar18 = *(code **)PTR_lintfunc_004b1b7c" identifier = (pointer_expression "*(code **)PTR_lintfunc_004b1b7c" * (cast_expression "(code **)PTR_lintfunc_004b1b7c" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5)" identifier = (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" ( (pointer_expression "*(code *)PTR_dcgettext_004b235c" * (cast_expression "(code *)PTR_dcgettext_004b235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "sVar15 = (symbol_00->sub).val.slen;" (assignment_expression "sVar15 = (symbol_00->sub).val.slen" identifier = (field_expression "(symbol_00->sub).val.slen" (field_expression "(symbol_00->sub).val" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pcVar16 = (symbol_00->sub).val.sp;" (assignment_expression "pcVar16 = (symbol_00->sub).val.sp" identifier = (field_expression "(symbol_00->sub).val.sp" (field_expression "(symbol_00->sub).val" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "pcVar7 = array_vname(symbol);" (assignment_expression "pcVar7 = array_vname(symbol)" identifier = (call_expression "array_vname(symbol)" identifier (argument_list "(symbol)" ( identifier )))) ;) (expression_statement "(*pcVar18)(uVar6,sVar15,pcVar16,pcVar7);" (call_expression "(*pcVar18)(uVar6,sVar15,pcVar16,pcVar7)" (parenthesized_expression "(*pcVar18)" ( (pointer_expression "*pcVar18" * identifier) )) (argument_list "(uVar6,sVar15,pcVar16,pcVar7)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" identifier = identifier) ;) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" identifier = identifier) ;) (expression_statement "puVar2 = PTR_CONVFMT_004b1c40;" (assignment_expression "puVar2 = PTR_CONVFMT_004b1c40" identifier = identifier) ;) (expression_statement "iVar17 = iVar13 * -4;" (assignment_expression "iVar17 = iVar13 * -4" identifier = (binary_expression "iVar13 * -4" identifier * number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "symbol_01 = *ppeVar8;" (assignment_expression "symbol_01 = *ppeVar8" identifier = (pointer_expression "*ppeVar8" * identifier)) ;) (if_statement "if (symbol_01 == (NODE *)0x0) goto LAB_0040b0ac;" if (parenthesized_expression "(symbol_01 == (NODE *)0x0)" ( (binary_expression "symbol_01 == (NODE *)0x0" identifier == (cast_expression "(NODE *)0x0" ( (type_descriptor "NODE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0040b0ac;" goto statement_identifier ;)) (if_statement "if (1 < iVar13) {\n      if (symbol_01->type != Node_var_array) {\n        iVar17 = iVar13 * -4;\n        uVar6 = *puVar1;\n        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n      (symbol_00->sub).nodep.name = pcVar7;\n      symbol = symbol_01;\n      if (pcVar7 == (char *)0x0) {\n        (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n      }\n    }" if (parenthesized_expression "(1 < iVar13)" ( (binary_expression "1 < iVar13" number_literal < identifier) )) (compound_statement "{\n      if (symbol_01->type != Node_var_array) {\n        iVar17 = iVar13 * -4;\n        uVar6 = *puVar1;\n        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      pcVar7 = (char *)((symbol_00->sub).val.sref + -1);\n      (symbol_00->sub).nodep.name = pcVar7;\n      symbol = symbol_01;\n      if (pcVar7 == (char *)0x0) {\n        (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n      }\n    }" { (if_statement "if (symbol_01->type != Node_var_array) {\n        iVar17 = iVar13 * -4;\n        uVar6 = *puVar1;\n        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }" if (parenthesized_expression "(symbol_01->type != Node_var_array)" ( (binary_expression "symbol_01->type != Node_var_array" (field_expression "symbol_01->type" identifier -> field_identifier) != identifier) )) (compound_statement "{\n        iVar17 = iVar13 * -4;\n        uVar6 = *puVar1;\n        sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }" { (expression_statement "iVar17 = iVar13 * -4;" (assignment_expression "iVar17 = iVar13 * -4" identifier = (binary_expression "iVar13 * -4" identifier * number_literal)) ;) (expression_statement "uVar6 = *puVar1;" (assignment_expression "uVar6 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44;" (assignment_expression "sVar15 = *(size_t *)PTR_CONVFMTidx_004b1c44" identifier = (pointer_expression "*(size_t *)PTR_CONVFMTidx_004b1c44" * (cast_expression "(size_t *)PTR_CONVFMTidx_004b1c44" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (goto_statement "goto LAB_0040ae4c;" goto statement_identifier ;) })) (expression_statement "pcVar7 = (char *)((symbol_00->sub).val.sref + -1);" (assignment_expression "pcVar7 = (char *)((symbol_00->sub).val.sref + -1)" identifier = (cast_expression "(char *)((symbol_00->sub).val.sref + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((symbol_00->sub).val.sref + -1)" ( (binary_expression "(symbol_00->sub).val.sref + -1" (field_expression "(symbol_00->sub).val.sref" (field_expression "(symbol_00->sub).val" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + number_literal) )))) ;) (expression_statement "(symbol_00->sub).nodep.name = pcVar7;" (assignment_expression "(symbol_00->sub).nodep.name = pcVar7" (field_expression "(symbol_00->sub).nodep.name" (field_expression "(symbol_00->sub).nodep" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "symbol = symbol_01;" (assignment_expression "symbol = symbol_01" identifier = identifier) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n        (*(code *)PTR_r_unref_004b1b90)(symbol_00);\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        (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n      }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(symbol_00);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(symbol_00)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(symbol_00)" ( identifier ))) ;) })) })) (if_statement "if (iVar17 < 1) goto LAB_0040af5c;" if (parenthesized_expression "(iVar17 < 1)" ( (binary_expression "iVar17 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0040af5c;" goto statement_identifier ;)) (expression_statement "iVar13 = iVar17 * -4;" (assignment_expression "iVar13 = iVar17 * -4" identifier = (binary_expression "iVar17 * -4" identifier * number_literal)) ;) (expression_statement "symbol_00 = *(NODE **)(*(int *)puVar5 + iVar13 + 4);" (assignment_expression "symbol_00 = *(NODE **)(*(int *)puVar5 + iVar13 + 4)" identifier = (pointer_expression "*(NODE **)(*(int *)puVar5 + iVar13 + 4)" * (cast_expression "(NODE **)(*(int *)puVar5 + iVar13 + 4)" ( (type_descriptor "NODE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)puVar5 + iVar13 + 4)" ( (binary_expression "*(int *)puVar5 + iVar13 + 4" (binary_expression "*(int *)puVar5 + iVar13" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) + number_literal) ))))) ;) (if_statement "if (symbol_00->type != Node_val) goto LAB_0040ad4c;" if (parenthesized_expression "(symbol_00->type != Node_val)" ( (binary_expression "symbol_00->type != Node_val" (field_expression "symbol_00->type" identifier -> field_identifier) != identifier) )) (goto_statement "goto LAB_0040ad4c;" goto statement_identifier ;)) (labeled_statement "LAB_0040b088:\n    ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);" statement_identifier : (expression_statement "ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);" (assignment_expression "ppeVar8 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00)" identifier = (call_expression "(*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00)" (parenthesized_expression "(*((symbol->sub).nodep.l.lp)->exists)" ( (pointer_expression "*((symbol->sub).nodep.l.lp)->exists" * (field_expression "((symbol->sub).nodep.l.lp)->exists" (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,symbol_00)" ( identifier , identifier )))) ;)) (expression_statement "iVar19 = iVar17 + -1;" (assignment_expression "iVar19 = iVar17 + -1" identifier = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "iVar13 = iVar17;" (assignment_expression "iVar13 = iVar17" identifier = identifier) ;) (expression_statement "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;" (assignment_expression "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40" identifier = (cast_expression "(undefined4 *)PTR_CONVFMT_004b1c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "LAB_0040b188:\n  iVar17 = iVar17 + 4;" statement_identifier : (expression_statement "iVar17 = iVar17 + 4;" (assignment_expression "iVar17 = iVar17 + 4" identifier = (binary_expression "iVar17 + 4" identifier + number_literal)) ;)) (expression_statement "iVar19 = *(int *)(*(int *)puVar5 + iVar17);" (assignment_expression "iVar19 = *(int *)(*(int *)puVar5 + iVar17)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar17)" * (cast_expression "(int *)(*(int *)puVar5 + iVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar17)" ( (binary_expression "*(int *)puVar5 + iVar17" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) ;) (if_statement "if (*(int *)(iVar19 + 0x28) == 1) {\n    if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b1c4:\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    *(int *)(iVar19 + 0x10) = iVar9 + -1;\n    if (iVar9 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar19);\n    }\n  }" if (parenthesized_expression "(*(int *)(iVar19 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar19 + 0x28) == 1" (pointer_expression "*(int *)(iVar19 + 0x28)" * (cast_expression "(int *)(iVar19 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x28)" ( (binary_expression "iVar19 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b1c4:\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    *(int *)(iVar19 + 0x10) = iVar9 + -1;\n    if (iVar9 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar19);\n    }\n  }" { (if_statement "if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b1c4:\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }" if (parenthesized_expression "((*(uint *)(iVar19 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar19 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar19 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar19 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar19 + 0x2c)" * (cast_expression "(uint *)(iVar19 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x2c)" ( (binary_expression "iVar19 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);\nLAB_0040b1c4:\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }" { (labeled_statement "LAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);" statement_identifier : (expression_statement "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19);" (call_expression "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar19)" (parenthesized_expression "(**(code **)puVar4)" ( (pointer_expression "**(code **)puVar4" * (pointer_expression "*(code **)puVar4" * (cast_expression "(code **)puVar4" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)puVar2,*(int *)puVar3,iVar19)" ( (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;)) (labeled_statement "LAB_0040b1c4:\n      iVar9 = *(int *)(iVar19 + 0x10);" statement_identifier : (expression_statement "iVar9 = *(int *)(iVar19 + 0x10);" (assignment_expression "iVar9 = *(int *)(iVar19 + 0x10)" identifier = (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n      if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }" else (compound_statement "{\n      if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;\n      iVar9 = *(int *)(iVar19 + 0x10);\n    }" { (if_statement "if (*(int *)(iVar19 + 0x14) == -1) goto LAB_0040b1c4;" if (parenthesized_expression "(*(int *)(iVar19 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar19 + 0x14) == -1" (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040b1c4;" goto statement_identifier ;)) (if_statement "if (*(int *)puVar3 != *(int *)(iVar19 + 0x14)) goto LAB_0040b1b4;" if (parenthesized_expression "(*(int *)puVar3 != *(int *)(iVar19 + 0x14))" ( (binary_expression "*(int *)puVar3 != *(int *)(iVar19 + 0x14)" (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(int *)(iVar19 + 0x14)" * (cast_expression "(int *)(iVar19 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0040b1b4;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(iVar19 + 0x10);" (assignment_expression "iVar9 = *(int *)(iVar19 + 0x10)" identifier = (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar19 + 0x10) = iVar9 + -1;" (assignment_expression "*(int *)(iVar19 + 0x10) = iVar9 + -1" (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar19);\n    }" if (parenthesized_expression "(iVar9 + -1 == 0)" ( (binary_expression "iVar9 + -1 == 0" (binary_expression "iVar9 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      (*(code *)PTR_r_unref_004b1b90)(iVar19);\n    }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar19);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar19)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar19)" ( identifier ))) ;) })) })) (expression_statement "iVar13 = iVar13 + -1;" (assignment_expression "iVar13 = iVar13 + -1" identifier = (binary_expression "iVar13 + -1" identifier + number_literal)) ;) (if_statement "if (iVar13 < 1) {\n    return;\n  }" if (parenthesized_expression "(iVar13 < 1)" ( (binary_expression "iVar13 < 1" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (goto_statement "goto LAB_0040b188;" goto statement_identifier ;) (labeled_statement "LAB_0040ae4c:\n  do {\n    iVar17 = iVar17 + 4;\n    iVar19 = *(int *)(*(int *)puVar5 + iVar17);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n      sVar15 = *(size_t *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar13 = iVar13 + -1;\n  } while (iVar13 != 0);" statement_identifier : (do_statement "do {\n    iVar17 = iVar17 + 4;\n    iVar19 = *(int *)(*(int *)puVar5 + iVar17);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n      sVar15 = *(size_t *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar13 = iVar13 + -1;\n  } while (iVar13 != 0);" do (compound_statement "{\n    iVar17 = iVar17 + 4;\n    iVar19 = *(int *)(*(int *)puVar5 + iVar17);\n    if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n      sVar15 = *(size_t *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar13 = iVar13 + -1;\n  }" { (expression_statement "iVar17 = iVar17 + 4;" (assignment_expression "iVar17 = iVar17 + 4" identifier = (binary_expression "iVar17 + 4" identifier + number_literal)) ;) (expression_statement "iVar19 = *(int *)(*(int *)puVar5 + iVar17);" (assignment_expression "iVar19 = *(int *)(*(int *)puVar5 + iVar17)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar17)" * (cast_expression "(int *)(*(int *)puVar5 + iVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar17)" ( (binary_expression "*(int *)puVar5 + iVar17" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) ;) (if_statement "if (*(int *)(iVar19 + 0x28) == 1) {\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n      sVar15 = *(size_t *)puVar3;\n      uVar6 = *puVar1;\n    }" if (parenthesized_expression "(*(int *)(iVar19 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar19 + 0x28) == 1" (pointer_expression "*(int *)(iVar19 + 0x28)" * (cast_expression "(int *)(iVar19 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x28)" ( (binary_expression "iVar19 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      *(int *)(iVar19 + 0x10) = iVar9 + -1;\n      if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }\n      sVar15 = *(size_t *)puVar3;\n      uVar6 = *puVar1;\n    }" { (if_statement "if ((*(uint *)(iVar19 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }\n      else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }" if (parenthesized_expression "((*(uint *)(iVar19 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar19 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar19 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar19 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar19 + 0x2c)" * (cast_expression "(uint *)(iVar19 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x2c)" ( (binary_expression "iVar19 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);\nLAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }" { (labeled_statement "LAB_0040ae74:\n        (**(code **)puVar4)(uVar6,sVar15,iVar19);" statement_identifier : (expression_statement "(**(code **)puVar4)(uVar6,sVar15,iVar19);" (call_expression "(**(code **)puVar4)(uVar6,sVar15,iVar19)" (parenthesized_expression "(**(code **)puVar4)" ( (pointer_expression "**(code **)puVar4" * (pointer_expression "*(code **)puVar4" * (cast_expression "(code **)puVar4" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(uVar6,sVar15,iVar19)" ( identifier , identifier , identifier ))) ;)) (labeled_statement "LAB_0040ae8c:\n        iVar9 = *(int *)(iVar19 + 0x10);" statement_identifier : (expression_statement "iVar9 = *(int *)(iVar19 + 0x10);" (assignment_expression "iVar9 = *(int *)(iVar19 + 0x10)" identifier = (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }" else (compound_statement "{\n        if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;\n        if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;\n        iVar9 = *(int *)(iVar19 + 0x10);\n      }" { (if_statement "if (*(size_t *)(iVar19 + 0x14) == 0xffffffff) goto LAB_0040ae8c;" if (parenthesized_expression "(*(size_t *)(iVar19 + 0x14) == 0xffffffff)" ( (binary_expression "*(size_t *)(iVar19 + 0x14) == 0xffffffff" (pointer_expression "*(size_t *)(iVar19 + 0x14)" * (cast_expression "(size_t *)(iVar19 + 0x14)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040ae8c;" goto statement_identifier ;)) (if_statement "if (*(size_t *)(iVar19 + 0x14) != sVar15) goto LAB_0040ae74;" if (parenthesized_expression "(*(size_t *)(iVar19 + 0x14) != sVar15)" ( (binary_expression "*(size_t *)(iVar19 + 0x14) != sVar15" (pointer_expression "*(size_t *)(iVar19 + 0x14)" * (cast_expression "(size_t *)(iVar19 + 0x14)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x14)" ( (binary_expression "iVar19 + 0x14" identifier + number_literal) )))) != identifier) )) (goto_statement "goto LAB_0040ae74;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(iVar19 + 0x10);" (assignment_expression "iVar9 = *(int *)(iVar19 + 0x10)" identifier = (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar19 + 0x10) = iVar9 + -1;" (assignment_expression "*(int *)(iVar19 + 0x10) = iVar9 + -1" (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }" if (parenthesized_expression "(iVar9 + -1 == 0)" ( (binary_expression "iVar9 + -1 == 0" (binary_expression "iVar9 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar19);\n      }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar19);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar19)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar19)" ( identifier ))) ;) })) (expression_statement "sVar15 = *(size_t *)puVar3;" (assignment_expression "sVar15 = *(size_t *)puVar3" identifier = (pointer_expression "*(size_t *)puVar3" * (cast_expression "(size_t *)puVar3" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar6 = *puVar1;" (assignment_expression "uVar6 = *puVar1" identifier = (pointer_expression "*puVar1" * 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 (((symbol_00->flags & 4) == 0) ||\n     ((sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15)))) {\n    symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00);\n  }" if (parenthesized_expression "(((symbol_00->flags & 4) == 0) ||\n     ((sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15))))" ( (binary_expression "((symbol_00->flags & 4) == 0) ||\n     ((sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15)))" (parenthesized_expression "((symbol_00->flags & 4) == 0)" ( (binary_expression "(symbol_00->flags & 4) == 0" (parenthesized_expression "(symbol_00->flags & 4)" ( (binary_expression "symbol_00->flags & 4" (field_expression "symbol_00->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15)))" ( (parenthesized_expression "(sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15))" ( (comma_expression "sVar12 = (symbol_00->sub).nodep.reserved, sVar12 != 0xffffffff && (sVar12 != sVar15)" (assignment_expression "sVar12 = (symbol_00->sub).nodep.reserved" identifier = (field_expression "(symbol_00->sub).nodep.reserved" (field_expression "(symbol_00->sub).nodep" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "sVar12 != 0xffffffff && (sVar12 != sVar15)" (binary_expression "sVar12 != 0xffffffff" identifier != number_literal) && (parenthesized_expression "(sVar12 != sVar15)" ( (binary_expression "sVar12 != sVar15" identifier != identifier) )))) )) ))) )) (compound_statement "{\n    symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00);\n  }" { (expression_statement "symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00);" (assignment_expression "symbol_00 = (NODE *)(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00)" identifier = (cast_expression "(NODE *)(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00)" ( (type_descriptor "NODE *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)PTR_format_val_004b1c48)(uVar6,sVar15,symbol_00)" (parenthesized_expression "(**(code **)PTR_format_val_004b1c48)" ( (pointer_expression "**(code **)PTR_format_val_004b1c48" * (pointer_expression "*(code **)PTR_format_val_004b1c48" * (cast_expression "(code **)PTR_format_val_004b1c48" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(uVar6,sVar15,symbol_00)" ( identifier , identifier , identifier ))))) ;) })) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" ( (pointer_expression "*(code *)PTR_set_loc_004b1b6c" * (cast_expression "(code *)PTR_set_loc_004b1b6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "("array.c",0x24d)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" identifier = (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" ( (pointer_expression "*(code *)PTR_dcgettext_004b235c" * (cast_expression "(code *)PTR_dcgettext_004b235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "pcVar7 = array_vname(symbol);" (assignment_expression "pcVar7 = array_vname(symbol)" identifier = (call_expression "array_vname(symbol)" identifier (argument_list "(symbol)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7,(symbol_00->sub).val.slen,(symbol_00->sub).val.sp);" (call_expression "(*(code *)PTR_r_fatal_004b1b70)(uVar6,pcVar7,(symbol_00->sub).val.slen,(symbol_00->sub).val.sp)" (parenthesized_expression "(*(code *)PTR_r_fatal_004b1b70)" ( (pointer_expression "*(code *)PTR_r_fatal_004b1b70" * (cast_expression "(code *)PTR_r_fatal_004b1b70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar6,pcVar7,(symbol_00->sub).val.slen,(symbol_00->sub).val.sp)" ( identifier , identifier , (field_expression "(symbol_00->sub).val.slen" (field_expression "(symbol_00->sub).val" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (field_expression "(symbol_00->sub).val.sp" (field_expression "(symbol_00->sub).val" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) (expression_statement "pcVar7 = (char *)((symbol_00->sub).val.sref + -1);" (assignment_expression "pcVar7 = (char *)((symbol_00->sub).val.sref + -1)" identifier = (cast_expression "(char *)((symbol_00->sub).val.sref + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((symbol_00->sub).val.sref + -1)" ( (binary_expression "(symbol_00->sub).val.sref + -1" (field_expression "(symbol_00->sub).val.sref" (field_expression "(symbol_00->sub).val" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + number_literal) )))) ;) (expression_statement "(symbol_00->sub).nodep.name = pcVar7;" (assignment_expression "(symbol_00->sub).nodep.name = pcVar7" (field_expression "(symbol_00->sub).nodep.name" (field_expression "(symbol_00->sub).nodep" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "symbol = symbol_01;" (assignment_expression "symbol = symbol_01" identifier = identifier) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\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    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n  }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(symbol_00);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(symbol_00)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(symbol_00)" ( identifier ))) ;) })) (labeled_statement "LAB_0040af5c:\n  if (symbol_01->type == Node_var_array) {\n    pNVar14 = symbol_01;\n    adjust_fcall_stack(symbol_01,nsubs);\n    (*((symbol_01->sub).nodep.l.lp)->clear)(pNVar14,(exp_node *)0x0);\n    (*(code *)PTR_free_004b239c)((symbol_01->sub).nodep.name);\n    puVar2 = PTR_nextfree_004b1bf0;\n    (symbol_01->sub).nodep.l = *(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0;\n    *(NODE **)puVar2 = symbol_01;\n  }\n  else {\n    iVar17 = (symbol_01->sub).val.sref + -1;\n    (symbol_01->sub).val.sref = iVar17;\n    if (iVar17 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(symbol_01);\n      paVar10 = (symbol->sub).nodep.l.lp;\n      goto LAB_0040af80;\n    }\n  }" statement_identifier : (if_statement "if (symbol_01->type == Node_var_array) {\n    pNVar14 = symbol_01;\n    adjust_fcall_stack(symbol_01,nsubs);\n    (*((symbol_01->sub).nodep.l.lp)->clear)(pNVar14,(exp_node *)0x0);\n    (*(code *)PTR_free_004b239c)((symbol_01->sub).nodep.name);\n    puVar2 = PTR_nextfree_004b1bf0;\n    (symbol_01->sub).nodep.l = *(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0;\n    *(NODE **)puVar2 = symbol_01;\n  }\n  else {\n    iVar17 = (symbol_01->sub).val.sref + -1;\n    (symbol_01->sub).val.sref = iVar17;\n    if (iVar17 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(symbol_01);\n      paVar10 = (symbol->sub).nodep.l.lp;\n      goto LAB_0040af80;\n    }\n  }" if (parenthesized_expression "(symbol_01->type == Node_var_array)" ( (binary_expression "symbol_01->type == Node_var_array" (field_expression "symbol_01->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    pNVar14 = symbol_01;\n    adjust_fcall_stack(symbol_01,nsubs);\n    (*((symbol_01->sub).nodep.l.lp)->clear)(pNVar14,(exp_node *)0x0);\n    (*(code *)PTR_free_004b239c)((symbol_01->sub).nodep.name);\n    puVar2 = PTR_nextfree_004b1bf0;\n    (symbol_01->sub).nodep.l = *(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0;\n    *(NODE **)puVar2 = symbol_01;\n  }" { (expression_statement "pNVar14 = symbol_01;" (assignment_expression "pNVar14 = symbol_01" identifier = identifier) ;) (expression_statement "adjust_fcall_stack(symbol_01,nsubs);" (call_expression "adjust_fcall_stack(symbol_01,nsubs)" identifier (argument_list "(symbol_01,nsubs)" ( identifier , identifier ))) ;) (expression_statement "(*((symbol_01->sub).nodep.l.lp)->clear)(pNVar14,(exp_node *)0x0);" (call_expression "(*((symbol_01->sub).nodep.l.lp)->clear)(pNVar14,(exp_node *)0x0)" (parenthesized_expression "(*((symbol_01->sub).nodep.l.lp)->clear)" ( (pointer_expression "*((symbol_01->sub).nodep.l.lp)->clear" * (field_expression "((symbol_01->sub).nodep.l.lp)->clear" (parenthesized_expression "((symbol_01->sub).nodep.l.lp)" ( (field_expression "(symbol_01->sub).nodep.l.lp" (field_expression "(symbol_01->sub).nodep.l" (field_expression "(symbol_01->sub).nodep" (parenthesized_expression "(symbol_01->sub)" ( (field_expression "symbol_01->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) )) -> field_identifier)) )) (argument_list "(pNVar14,(exp_node *)0x0)" ( identifier , (cast_expression "(exp_node *)0x0" ( (type_descriptor "exp_node *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "(*(code *)PTR_free_004b239c)((symbol_01->sub).nodep.name);" (call_expression "(*(code *)PTR_free_004b239c)((symbol_01->sub).nodep.name)" (parenthesized_expression "(*(code *)PTR_free_004b239c)" ( (pointer_expression "*(code *)PTR_free_004b239c" * (cast_expression "(code *)PTR_free_004b239c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((symbol_01->sub).nodep.name)" ( (field_expression "(symbol_01->sub).nodep.name" (field_expression "(symbol_01->sub).nodep" (parenthesized_expression "(symbol_01->sub)" ( (field_expression "symbol_01->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) (expression_statement "puVar2 = PTR_nextfree_004b1bf0;" (assignment_expression "puVar2 = PTR_nextfree_004b1bf0" identifier = identifier) ;) (expression_statement "(symbol_01->sub).nodep.l = *(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0;" (assignment_expression "(symbol_01->sub).nodep.l = *(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0" (field_expression "(symbol_01->sub).nodep.l" (field_expression "(symbol_01->sub).nodep" (parenthesized_expression "(symbol_01->sub)" ( (field_expression "symbol_01->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (pointer_expression "*(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0" * (cast_expression "(anon_union_4_4_7583dc62_for_l *)PTR_nextfree_004b1bf0" ( (type_descriptor "anon_union_4_4_7583dc62_for_l *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(NODE **)puVar2 = symbol_01;" (assignment_expression "*(NODE **)puVar2 = symbol_01" (pointer_expression "*(NODE **)puVar2" * (cast_expression "(NODE **)puVar2" ( (type_descriptor "NODE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) }) (else_clause "else {\n    iVar17 = (symbol_01->sub).val.sref + -1;\n    (symbol_01->sub).val.sref = iVar17;\n    if (iVar17 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(symbol_01);\n      paVar10 = (symbol->sub).nodep.l.lp;\n      goto LAB_0040af80;\n    }\n  }" else (compound_statement "{\n    iVar17 = (symbol_01->sub).val.sref + -1;\n    (symbol_01->sub).val.sref = iVar17;\n    if (iVar17 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(symbol_01);\n      paVar10 = (symbol->sub).nodep.l.lp;\n      goto LAB_0040af80;\n    }\n  }" { (expression_statement "iVar17 = (symbol_01->sub).val.sref + -1;" (assignment_expression "iVar17 = (symbol_01->sub).val.sref + -1" identifier = (binary_expression "(symbol_01->sub).val.sref + -1" (field_expression "(symbol_01->sub).val.sref" (field_expression "(symbol_01->sub).val" (parenthesized_expression "(symbol_01->sub)" ( (field_expression "symbol_01->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + number_literal)) ;) (expression_statement "(symbol_01->sub).val.sref = iVar17;" (assignment_expression "(symbol_01->sub).val.sref = iVar17" (field_expression "(symbol_01->sub).val.sref" (field_expression "(symbol_01->sub).val" (parenthesized_expression "(symbol_01->sub)" ( (field_expression "symbol_01->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (iVar17 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(symbol_01);\n      paVar10 = (symbol->sub).nodep.l.lp;\n      goto LAB_0040af80;\n    }" if (parenthesized_expression "(iVar17 < 1)" ( (binary_expression "iVar17 < 1" identifier < number_literal) )) (compound_statement "{\n      (*(code *)PTR_r_unref_004b1b90)(symbol_01);\n      paVar10 = (symbol->sub).nodep.l.lp;\n      goto LAB_0040af80;\n    }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(symbol_01);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(symbol_01)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(symbol_01)" ( identifier ))) ;) (expression_statement "paVar10 = (symbol->sub).nodep.l.lp;" (assignment_expression "paVar10 = (symbol->sub).nodep.l.lp" identifier = (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)) ;) (goto_statement "goto LAB_0040af80;" goto statement_identifier ;) })) })))) (expression_statement "paVar10 = (symbol->sub).nodep.l.lp;" (assignment_expression "paVar10 = (symbol->sub).nodep.l.lp" identifier = (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)) ;) (labeled_statement "LAB_0040af80:\n  (*paVar10->remove)(symbol,symbol_00);" statement_identifier : (expression_statement "(*paVar10->remove)(symbol,symbol_00);" (call_expression "(*paVar10->remove)(symbol,symbol_00)" (parenthesized_expression "(*paVar10->remove)" ( (pointer_expression "*paVar10->remove" * (field_expression "paVar10->remove" identifier -> field_identifier)) )) (argument_list "(symbol,symbol_00)" ( identifier , identifier ))) ;)) (expression_statement "pcVar7 = (char *)((symbol_00->sub).val.sref + -1);" (assignment_expression "pcVar7 = (char *)((symbol_00->sub).val.sref + -1)" identifier = (cast_expression "(char *)((symbol_00->sub).val.sref + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((symbol_00->sub).val.sref + -1)" ( (binary_expression "(symbol_00->sub).val.sref + -1" (field_expression "(symbol_00->sub).val.sref" (field_expression "(symbol_00->sub).val" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + number_literal) )))) ;) (expression_statement "(symbol_00->sub).nodep.name = pcVar7;" (assignment_expression "(symbol_00->sub).nodep.name = pcVar7" (field_expression "(symbol_00->sub).nodep.name" (field_expression "(symbol_00->sub).nodep" (parenthesized_expression "(symbol_00->sub)" ( (field_expression "symbol_00->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n    uVar11 = (symbol->sub).nodep.reflags;\n  }\n  else {\n    uVar11 = (symbol->sub).nodep.reflags;\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    (*(code *)PTR_r_unref_004b1b90)(symbol_00);\n    uVar11 = (symbol->sub).nodep.reflags;\n  }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(symbol_00);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(symbol_00)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(symbol_00)" ( identifier ))) ;) (expression_statement "uVar11 = (symbol->sub).nodep.reflags;" (assignment_expression "uVar11 = (symbol->sub).nodep.reflags" identifier = (field_expression "(symbol->sub).nodep.reflags" (field_expression "(symbol->sub).nodep" (parenthesized_expression "(symbol->sub)" ( (field_expression "symbol->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n    uVar11 = (symbol->sub).nodep.reflags;\n  }" else (compound_statement "{\n    uVar11 = (symbol->sub).nodep.reflags;\n  }" { (expression_statement "uVar11 = (symbol->sub).nodep.reflags;" (assignment_expression "uVar11 = (symbol->sub).nodep.reflags" identifier = (field_expression "(symbol->sub).nodep.reflags" (field_expression "(symbol->sub).nodep" (parenthesized_expression "(symbol->sub)" ( (field_expression "symbol->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) }))) (if_statement "if (uVar11 == 0) {\n    *(undefined4 *)((int)&symbol->sub + 4) = 0;\n    (symbol->sub).nodep.cnt = 0;\n    symbol->type = Node_var_array;\n    (symbol->sub).nodep.reserved = 0;\n    symbol->flags = 0;\n    (symbol->sub).nodep.l.lp = &null_array_func;\n  }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined4 *)((int)&symbol->sub + 4) = 0;\n    (symbol->sub).nodep.cnt = 0;\n    symbol->type = Node_var_array;\n    (symbol->sub).nodep.reserved = 0;\n    symbol->flags = 0;\n    (symbol->sub).nodep.l.lp = &null_array_func;\n  }" { (expression_statement "*(undefined4 *)((int)&symbol->sub + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&symbol->sub + 4) = 0" (pointer_expression "*(undefined4 *)((int)&symbol->sub + 4)" * (cast_expression "(undefined4 *)((int)&symbol->sub + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&symbol->sub + 4)" ( (binary_expression "(int)&symbol->sub + 4" (cast_expression "(int)&symbol->sub" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&symbol->sub" & (field_expression "symbol->sub" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "(symbol->sub).nodep.cnt = 0;" (assignment_expression "(symbol->sub).nodep.cnt = 0" (field_expression "(symbol->sub).nodep.cnt" (field_expression "(symbol->sub).nodep" (parenthesized_expression "(symbol->sub)" ( (field_expression "symbol->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "symbol->type = Node_var_array;" (assignment_expression "symbol->type = Node_var_array" (field_expression "symbol->type" identifier -> field_identifier) = identifier) ;) (expression_statement "(symbol->sub).nodep.reserved = 0;" (assignment_expression "(symbol->sub).nodep.reserved = 0" (field_expression "(symbol->sub).nodep.reserved" (field_expression "(symbol->sub).nodep" (parenthesized_expression "(symbol->sub)" ( (field_expression "symbol->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "symbol->flags = 0;" (assignment_expression "symbol->flags = 0" (field_expression "symbol->flags" identifier -> field_identifier) = number_literal) ;) (expression_statement "(symbol->sub).nodep.l.lp = &null_array_func;" (assignment_expression "(symbol->sub).nodep.l.lp = &null_array_func" (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) = (pointer_expression "&null_array_func" & identifier)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void do_delete(int *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  undefined4 uVar13;\n  undefined4 uVar14;\n  code *pcVar15;\n  int iVar16;\n  int *piVar17;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (param_2 == 0) {\n    FUN_00408a60();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }\n  iVar9 = param_2 * -4;\n  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);\n  iVar11 = param_2;\n  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar9 = iVar9 + 8;\n  while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  uVar7 = array_vname(iVar12);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);\n  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n  iVar16 = -1;\n  iVar9 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar11 = iVar11 + 4;\n  iVar12 = *(int *)(*(int *)puVar5 + iVar11);\n  if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }\n  iVar9 = iVar9 + -1;\n  if (iVar9 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);\n  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  uVar7 = array_vname(param_1);\n  (*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  param_1 = piVar17;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }\nLAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }\n  iVar11 = *param_1;\nLAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }\n  if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }\n  return;\n}\n\n" (function_definition "void do_delete(int *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  undefined4 uVar13;\n  undefined4 uVar14;\n  code *pcVar15;\n  int iVar16;\n  int *piVar17;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (param_2 == 0) {\n    FUN_00408a60();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }\n  iVar9 = param_2 * -4;\n  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);\n  iVar11 = param_2;\n  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar9 = iVar9 + 8;\n  while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  uVar7 = array_vname(iVar12);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);\n  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n  iVar16 = -1;\n  iVar9 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar11 = iVar11 + 4;\n  iVar12 = *(int *)(*(int *)puVar5 + iVar11);\n  if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }\n  iVar9 = iVar9 + -1;\n  if (iVar9 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);\n  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  uVar7 = array_vname(param_1);\n  (*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  param_1 = piVar17;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }\nLAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }\n  iVar11 = *param_1;\nLAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }\n  if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }\n  return;\n}" primitive_type (function_declarator "do_delete(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  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  undefined4 uVar13;\n  undefined4 uVar14;\n  code *pcVar15;\n  int iVar16;\n  int *piVar17;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (param_2 == 0) {\n    FUN_00408a60();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }\n  iVar9 = param_2 * -4;\n  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);\n  iVar11 = param_2;\n  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar9 = iVar9 + 8;\n  while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  uVar7 = array_vname(iVar12);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);\n  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n  iVar16 = -1;\n  iVar9 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar11 = iVar11 + 4;\n  iVar12 = *(int *)(*(int *)puVar5 + iVar11);\n  if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }\n  iVar9 = iVar9 + -1;\n  if (iVar9 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);\n  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  uVar7 = array_vname(param_1);\n  (*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  param_1 = piVar17;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }\nLAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }\n  iVar11 = *param_1;\nLAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }\n  if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }\n  return;\n}" { (declaration "undefined4 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "undefined4 uVar14;" type_identifier identifier ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (expression_statement "puVar5 = PTR_stack_ptr_004b1cd8;" (assignment_expression "puVar5 = PTR_stack_ptr_004b1cd8" identifier = identifier) ;) (expression_statement "puVar2 = PTR_CONVFMT_004b1c40;" (assignment_expression "puVar2 = PTR_CONVFMT_004b1c40" identifier = identifier) ;) (if_statement "if (param_2 == 0) {\n    FUN_00408a60();\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_00408a60();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }" { (expression_statement "FUN_00408a60();" (call_expression "FUN_00408a60()" 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    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }" if (parenthesized_expression "(param_2 < 1)" ( (binary_expression "param_2 < 1" identifier < number_literal) )) (compound_statement "{\n                    \n    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }" { (expression_statement "pcVar15 = (code *)trap(0);" (assignment_expression "pcVar15 = (code *)trap(0)" identifier = (cast_expression "(code *)trap(0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "trap(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar9 = param_2 * -4;" (assignment_expression "iVar9 = param_2 * -4" identifier = (binary_expression "param_2 * -4" identifier * number_literal)) ;) (expression_statement "iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);" (assignment_expression "iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" identifier = (pointer_expression "*(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" * (cast_expression "(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" ( (binary_expression "*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4" (binary_expression "*(int *)PTR_stack_ptr_004b1cd8 + iVar9" (pointer_expression "*(int *)PTR_stack_ptr_004b1cd8" * (cast_expression "(int *)PTR_stack_ptr_004b1cd8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) + number_literal) ))))) ;) (expression_statement "iVar11 = param_2;" (assignment_expression "iVar11 = param_2" identifier = identifier) ;) (if_statement "if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;" if (parenthesized_expression "(*(int *)(iVar12 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar12 + 0x28) == 1" (pointer_expression "*(int *)(iVar12 + 0x28)" * (cast_expression "(int *)(iVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040b088;" goto statement_identifier ;)) (labeled_statement "LAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;" statement_identifier : (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" identifier = identifier) ;)) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" identifier = identifier) ;) (expression_statement "iVar9 = iVar9 + 8;" (assignment_expression "iVar9 = iVar9 + 8" identifier = (binary_expression "iVar9 + 8" identifier + number_literal)) ;) (while_statement "while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }" while (parenthesized_expression "(iVar11 = iVar11 + -1, iVar11 != 0)" ( (comma_expression "iVar11 = iVar11 + -1, iVar11 != 0" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) , (binary_expression "iVar11 != 0" identifier != number_literal)) )) (compound_statement "{\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }" { (expression_statement "iVar16 = *(int *)(*(int *)puVar5 + iVar9);" (assignment_expression "iVar16 = *(int *)(*(int *)puVar5 + iVar9)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar9)" * (cast_expression "(int *)(*(int *)puVar5 + iVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar9)" ( (binary_expression "*(int *)puVar5 + iVar9" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) ;) (if_statement "if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }" if (parenthesized_expression "(*(int *)(iVar16 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar16 + 0x28) == 1" (pointer_expression "*(int *)(iVar16 + 0x28)" * (cast_expression "(int *)(iVar16 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x28)" ( (binary_expression "iVar16 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }" { (if_statement "if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" if (parenthesized_expression "((*(uint *)(iVar16 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar16 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar16 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar16 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar16 + 0x2c)" * (cast_expression "(uint *)(iVar16 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2c)" ( (binary_expression "iVar16 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" { (labeled_statement "LAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);" statement_identifier : (expression_statement "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);" (call_expression "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16)" (parenthesized_expression "(**(code **)puVar4)" ( (pointer_expression "**(code **)puVar4" * (pointer_expression "*(code **)puVar4" * (cast_expression "(code **)puVar4" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)puVar2,*(int *)puVar3,iVar16)" ( (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;)) (labeled_statement "LAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);" statement_identifier : (expression_statement "iVar10 = *(int *)(iVar16 + 0x10);" (assignment_expression "iVar10 = *(int *)(iVar16 + 0x10)" identifier = (pointer_expression "*(int *)(iVar16 + 0x10)" * (cast_expression "(int *)(iVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x10)" ( (binary_expression "iVar16 + 0x10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" else (compound_statement "{\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" { (if_statement "if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;" if (parenthesized_expression "(*(int *)(iVar16 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar16 + 0x14) == -1" (pointer_expression "*(int *)(iVar16 + 0x14)" * (cast_expression "(int *)(iVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x14)" ( (binary_expression "iVar16 + 0x14" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040b024;" goto statement_identifier ;)) (if_statement "if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;" if (parenthesized_expression "(*(int *)puVar3 != *(int *)(iVar16 + 0x14))" ( (binary_expression "*(int *)puVar3 != *(int *)(iVar16 + 0x14)" (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(int *)(iVar16 + 0x14)" * (cast_expression "(int *)(iVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x14)" ( (binary_expression "iVar16 + 0x14" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0040b014;" goto statement_identifier ;)) (expression_statement "iVar10 = *(int *)(iVar16 + 0x10);" (assignment_expression "iVar10 = *(int *)(iVar16 + 0x10)" identifier = (pointer_expression "*(int *)(iVar16 + 0x10)" * (cast_expression "(int *)(iVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x10)" ( (binary_expression "iVar16 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar16 + 0x10) = iVar10 + -1;" (assignment_expression "*(int *)(iVar16 + 0x10) = iVar10 + -1" (pointer_expression "*(int *)(iVar16 + 0x10)" * (cast_expression "(int *)(iVar16 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x10)" ( (binary_expression "iVar16 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }" if (parenthesized_expression "(iVar10 + -1 == 0)" ( (binary_expression "iVar10 + -1 == 0" (binary_expression "iVar10 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar16);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar16)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16)" ( identifier ))) ;) })) })) (expression_statement "iVar9 = iVar9 + 4;" (assignment_expression "iVar9 = iVar9 + 4" identifier = (binary_expression "iVar9 + 4" identifier + number_literal)) ;) })) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x238)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" ( (pointer_expression "*(code *)PTR_set_loc_004b1b6c" * (cast_expression "(code *)PTR_set_loc_004b1b6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "("array.c",0x238)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" ( (pointer_expression "*(code *)PTR_dcgettext_004b235c" * (cast_expression "(code *)PTR_dcgettext_004b235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "uVar7 = array_vname(iVar12);" (assignment_expression "uVar7 = array_vname(iVar12)" identifier = (call_expression "array_vname(iVar12)" identifier (argument_list "(iVar12)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);" (call_expression "(*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7)" (parenthesized_expression "(*(code *)PTR_r_fatal_004b1b70)" ( (pointer_expression "*(code *)PTR_r_fatal_004b1b70" * (cast_expression "(code *)PTR_r_fatal_004b1b70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar6,uVar7)" ( identifier , identifier ))) ;) (expression_statement "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" identifier = (cast_expression "(undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" ( (pointer_expression "**(code **)(*param_1 + 0x10)" * (pointer_expression "*(code **)(*param_1 + 0x10)" * (cast_expression "(code **)(*param_1 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,iVar12)" ( identifier , identifier ))))) ;) (expression_statement "iVar16 = -1;" (assignment_expression "iVar16 = -1" identifier = number_literal) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;" (assignment_expression "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40" identifier = (cast_expression "(undefined4 *)PTR_CONVFMT_004b1c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );" do (compound_statement "{\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  }" { (expression_statement "iVar11 = iVar16;" (assignment_expression "iVar11 = iVar16" identifier = identifier) ;) (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" identifier = identifier) ;) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" identifier = identifier) ;) (expression_statement "PTR_CONVFMT_004b1c40 = (undefined *)puVar1;" (assignment_expression "PTR_CONVFMT_004b1c40 = (undefined *)puVar1" identifier = (cast_expression "(undefined *)puVar1" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }" if (parenthesized_expression "(puVar8 == (undefined4 *)0x0)" ( (binary_expression "puVar8 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }" { (labeled_statement "LAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }" statement_identifier : (if_statement "if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }" if (parenthesized_expression "((*(uint *)PTR_do_flags_004b1b5c & 5) != 0)" ( (binary_expression "(*(uint *)PTR_do_flags_004b1b5c & 5) != 0" (parenthesized_expression "(*(uint *)PTR_do_flags_004b1b5c & 5)" ( (binary_expression "*(uint *)PTR_do_flags_004b1b5c & 5" (pointer_expression "*(uint *)PTR_do_flags_004b1b5c" * (cast_expression "(uint *)PTR_do_flags_004b1b5c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }" { (if_statement "if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }" if (parenthesized_expression "(((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14)))))" ( (binary_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))" (parenthesized_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar12 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar12 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar12 + 0x2c)" * (cast_expression "(uint *)(iVar12 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))" ( (parenthesized_expression "(*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14)))" ( (binary_expression "*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))" (binary_expression "*(int *)(iVar12 + 0x14) != -1" (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))" ( (binary_expression "*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14)" (pointer_expression "*(int *)PTR_CONVFMTidx_004b1c44" * (cast_expression "(int *)PTR_CONVFMTidx_004b1c44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }" { (expression_statement "iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);" (assignment_expression "iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12)" identifier = (call_expression "(**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12)" (parenthesized_expression "(**(code **)PTR_format_val_004b1c48)" ( (pointer_expression "**(code **)PTR_format_val_004b1c48" * (pointer_expression "*(code **)PTR_format_val_004b1c48" * (cast_expression "(code **)PTR_format_val_004b1c48" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12)" ( (pointer_expression "*puVar1" * identifier) , (pointer_expression "*(int *)PTR_CONVFMTidx_004b1c44" * (cast_expression "(int *)PTR_CONVFMTidx_004b1c44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , identifier )))) ;) })) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" ( (pointer_expression "*(code *)PTR_set_loc_004b1b6c" * (cast_expression "(code *)PTR_set_loc_004b1b6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "("array.c",0x23f)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar15 = *(code **)PTR_lintfunc_004b1b7c;" (assignment_expression "pcVar15 = *(code **)PTR_lintfunc_004b1b7c" identifier = (pointer_expression "*(code **)PTR_lintfunc_004b1b7c" * (cast_expression "(code **)PTR_lintfunc_004b1b7c" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5)" identifier = (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" ( (pointer_expression "*(code *)PTR_dcgettext_004b235c" * (cast_expression "(code *)PTR_dcgettext_004b235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "uVar14 = *(undefined4 *)(iVar12 + 0xc);" (assignment_expression "uVar14 = *(undefined4 *)(iVar12 + 0xc)" identifier = (pointer_expression "*(undefined4 *)(iVar12 + 0xc)" * (cast_expression "(undefined4 *)(iVar12 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(undefined4 *)(iVar12 + 8);" (assignment_expression "uVar13 = *(undefined4 *)(iVar12 + 8)" identifier = (pointer_expression "*(undefined4 *)(iVar12 + 8)" * (cast_expression "(undefined4 *)(iVar12 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 8)" ( (binary_expression "iVar12 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = array_vname(param_1);" (assignment_expression "uVar7 = array_vname(param_1)" identifier = (call_expression "array_vname(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(*pcVar15)(uVar6,uVar14,uVar13,uVar7);" (call_expression "(*pcVar15)(uVar6,uVar14,uVar13,uVar7)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(uVar6,uVar14,uVar13,uVar7)" ( identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" identifier = identifier) ;) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" identifier = identifier) ;) (expression_statement "puVar2 = PTR_CONVFMT_004b1c40;" (assignment_expression "puVar2 = PTR_CONVFMT_004b1c40" identifier = identifier) ;) (expression_statement "iVar11 = iVar9 * -4;" (assignment_expression "iVar11 = iVar9 * -4" identifier = (binary_expression "iVar9 * -4" identifier * number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "piVar17 = (int *)*puVar8;" (assignment_expression "piVar17 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (if_statement "if (piVar17 == (int *)0x0) goto LAB_0040b0ac;" if (parenthesized_expression "(piVar17 == (int *)0x0)" ( (binary_expression "piVar17 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0040b0ac;" goto statement_identifier ;)) (if_statement "if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }" if (parenthesized_expression "(1 < iVar9)" ( (binary_expression "1 < iVar9" number_literal < identifier) )) (compound_statement "{\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }" { (if_statement "if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }" if (parenthesized_expression "(piVar17[10] != 5)" ( (binary_expression "piVar17[10] != 5" (subscript_expression "piVar17[10]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }" { (expression_statement "iVar16 = iVar9 * -4;" (assignment_expression "iVar16 = iVar9 * -4" identifier = (binary_expression "iVar9 * -4" identifier * number_literal)) ;) (expression_statement "uVar6 = *puVar1;" (assignment_expression "uVar6 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;" (assignment_expression "iVar11 = *(int *)PTR_CONVFMTidx_004b1c44" identifier = (pointer_expression "*(int *)PTR_CONVFMTidx_004b1c44" * (cast_expression "(int *)PTR_CONVFMTidx_004b1c44" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (goto_statement "goto LAB_0040ae4c;" goto statement_identifier ;) })) (expression_statement "iVar9 = *(int *)(iVar12 + 0x10) + -1;" (assignment_expression "iVar9 = *(int *)(iVar12 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar12 + 0x10) + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 0x10) = iVar9;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar9" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1 = piVar17;" (assignment_expression "param_1 = piVar17" identifier = identifier) ;) (if_statement "if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar12)" ( identifier ))) ;) })) })) (if_statement "if (iVar11 < 1) goto LAB_0040af5c;" if (parenthesized_expression "(iVar11 < 1)" ( (binary_expression "iVar11 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0040af5c;" goto statement_identifier ;)) (expression_statement "iVar9 = iVar11 * -4;" (assignment_expression "iVar9 = iVar11 * -4" identifier = (binary_expression "iVar11 * -4" identifier * number_literal)) ;) (expression_statement "iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);" (assignment_expression "iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar9 + 4)" * (cast_expression "(int *)(*(int *)puVar5 + iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar9 + 4)" ( (binary_expression "*(int *)puVar5 + iVar9 + 4" (binary_expression "*(int *)puVar5 + iVar9" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;" if (parenthesized_expression "(*(int *)(iVar12 + 0x28) != 1)" ( (binary_expression "*(int *)(iVar12 + 0x28) != 1" (pointer_expression "*(int *)(iVar12 + 0x28)" * (cast_expression "(int *)(iVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0040ad4c;" goto statement_identifier ;)) (labeled_statement "LAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);" statement_identifier : (expression_statement "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" identifier = (cast_expression "(undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" ( (pointer_expression "**(code **)(*param_1 + 0x10)" * (pointer_expression "*(code **)(*param_1 + 0x10)" * (cast_expression "(code **)(*param_1 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x10)" ( (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1,iVar12)" ( identifier , identifier ))))) ;)) (expression_statement "iVar16 = iVar11 + -1;" (assignment_expression "iVar16 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar11;" (assignment_expression "iVar9 = iVar11" identifier = identifier) ;) (expression_statement "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;" (assignment_expression "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40" identifier = (cast_expression "(undefined4 *)PTR_CONVFMT_004b1c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "LAB_0040b188:\n  iVar11 = iVar11 + 4;" statement_identifier : (expression_statement "iVar11 = iVar11 + 4;" (assignment_expression "iVar11 = iVar11 + 4" identifier = (binary_expression "iVar11 + 4" identifier + number_literal)) ;)) (expression_statement "iVar12 = *(int *)(*(int *)puVar5 + iVar11);" (assignment_expression "iVar12 = *(int *)(*(int *)puVar5 + iVar11)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar11)" * (cast_expression "(int *)(*(int *)puVar5 + iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar11)" ( (binary_expression "*(int *)puVar5 + iVar11" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) ;) (if_statement "if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }" if (parenthesized_expression "(*(int *)(iVar12 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar12 + 0x28) == 1" (pointer_expression "*(int *)(iVar12 + 0x28)" * (cast_expression "(int *)(iVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }" { (if_statement "if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" if (parenthesized_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar12 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar12 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar12 + 0x2c)" * (cast_expression "(uint *)(iVar12 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" { (labeled_statement "LAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);" statement_identifier : (expression_statement "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);" (call_expression "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12)" (parenthesized_expression "(**(code **)puVar4)" ( (pointer_expression "**(code **)puVar4" * (pointer_expression "*(code **)puVar4" * (cast_expression "(code **)puVar4" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(*(undefined4 *)puVar2,*(int *)puVar3,iVar12)" ( (pointer_expression "*(undefined4 *)puVar2" * (cast_expression "(undefined4 *)puVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;)) (labeled_statement "LAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);" statement_identifier : (expression_statement "iVar16 = *(int *)(iVar12 + 0x10);" (assignment_expression "iVar16 = *(int *)(iVar12 + 0x10)" identifier = (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" else (compound_statement "{\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" { (if_statement "if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;" if (parenthesized_expression "(*(int *)(iVar12 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar12 + 0x14) == -1" (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040b1c4;" goto statement_identifier ;)) (if_statement "if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;" if (parenthesized_expression "(*(int *)puVar3 != *(int *)(iVar12 + 0x14))" ( (binary_expression "*(int *)puVar3 != *(int *)(iVar12 + 0x14)" (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0040b1b4;" goto statement_identifier ;)) (expression_statement "iVar16 = *(int *)(iVar12 + 0x10);" (assignment_expression "iVar16 = *(int *)(iVar12 + 0x10)" identifier = (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar12 + 0x10) = iVar16 + -1;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar16 + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar16 + -1" identifier + number_literal)) ;) (if_statement "if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }" if (parenthesized_expression "(iVar16 + -1 == 0)" ( (binary_expression "iVar16 + -1 == 0" (binary_expression "iVar16 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar12)" ( identifier ))) ;) })) })) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (if_statement "if (iVar9 < 1) {\n    return;\n  }" if (parenthesized_expression "(iVar9 < 1)" ( (binary_expression "iVar9 < 1" identifier < number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (goto_statement "goto LAB_0040b188;" goto statement_identifier ;) (labeled_statement "LAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);" statement_identifier : (do_statement "do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);" do (compound_statement "{\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  }" { (expression_statement "iVar16 = iVar16 + 4;" (assignment_expression "iVar16 = iVar16 + 4" identifier = (binary_expression "iVar16 + 4" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(*(int *)puVar5 + iVar16);" (assignment_expression "iVar10 = *(int *)(*(int *)puVar5 + iVar16)" identifier = (pointer_expression "*(int *)(*(int *)puVar5 + iVar16)" * (cast_expression "(int *)(*(int *)puVar5 + iVar16)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)puVar5 + iVar16)" ( (binary_expression "*(int *)puVar5 + iVar16" (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + identifier) ))))) ;) (if_statement "if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }" if (parenthesized_expression "(*(int *)(iVar10 + 0x28) == 1)" ( (binary_expression "*(int *)(iVar10 + 0x28) == 1" (pointer_expression "*(int *)(iVar10 + 0x28)" * (cast_expression "(int *)(iVar10 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x28)" ( (binary_expression "iVar10 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }" { (if_statement "if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" if (parenthesized_expression "((*(uint *)(iVar10 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar10 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar10 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar10 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar10 + 0x2c)" * (cast_expression "(uint *)(iVar10 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x2c)" ( (binary_expression "iVar10 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" { (labeled_statement "LAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);" statement_identifier : (expression_statement "(**(code **)puVar4)(uVar6,iVar11,iVar10);" (call_expression "(**(code **)puVar4)(uVar6,iVar11,iVar10)" (parenthesized_expression "(**(code **)puVar4)" ( (pointer_expression "**(code **)puVar4" * (pointer_expression "*(code **)puVar4" * (cast_expression "(code **)puVar4" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(uVar6,iVar11,iVar10)" ( identifier , identifier , identifier ))) ;)) (labeled_statement "LAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);" statement_identifier : (expression_statement "iVar11 = *(int *)(iVar10 + 0x10);" (assignment_expression "iVar11 = *(int *)(iVar10 + 0x10)" identifier = (pointer_expression "*(int *)(iVar10 + 0x10)" * (cast_expression "(int *)(iVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" else (compound_statement "{\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" { (if_statement "if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;" if (parenthesized_expression "(*(int *)(iVar10 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar10 + 0x14) == -1" (pointer_expression "*(int *)(iVar10 + 0x14)" * (cast_expression "(int *)(iVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x14)" ( (binary_expression "iVar10 + 0x14" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0040ae8c;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;" if (parenthesized_expression "(*(int *)(iVar10 + 0x14) != iVar11)" ( (binary_expression "*(int *)(iVar10 + 0x14) != iVar11" (pointer_expression "*(int *)(iVar10 + 0x14)" * (cast_expression "(int *)(iVar10 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x14)" ( (binary_expression "iVar10 + 0x14" identifier + number_literal) )))) != identifier) )) (goto_statement "goto LAB_0040ae74;" goto statement_identifier ;)) (expression_statement "iVar11 = *(int *)(iVar10 + 0x10);" (assignment_expression "iVar11 = *(int *)(iVar10 + 0x10)" identifier = (pointer_expression "*(int *)(iVar10 + 0x10)" * (cast_expression "(int *)(iVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) ))))) ;) }))) (expression_statement "*(int *)(iVar10 + 0x10) = iVar11 + -1;" (assignment_expression "*(int *)(iVar10 + 0x10) = iVar11 + -1" (pointer_expression "*(int *)(iVar10 + 0x10)" * (cast_expression "(int *)(iVar10 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0x10)" ( (binary_expression "iVar10 + 0x10" identifier + number_literal) )))) = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (if_statement "if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }" if (parenthesized_expression "(iVar11 + -1 == 0)" ( (binary_expression "iVar11 + -1 == 0" (binary_expression "iVar11 + -1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar10);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar10)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10)" ( identifier ))) ;) })) (expression_statement "iVar11 = *(int *)puVar3;" (assignment_expression "iVar11 = *(int *)puVar3" identifier = (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar6 = *puVar1;" (assignment_expression "uVar6 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) })) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;)) (if_statement "if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }" if (parenthesized_expression "(((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11))))" ( (binary_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))" (parenthesized_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0)" ( (binary_expression "(*(uint *)(iVar12 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x2c) & 4)" ( (binary_expression "*(uint *)(iVar12 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar12 + 0x2c)" * (cast_expression "(uint *)(iVar12 + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))" ( (parenthesized_expression "(*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11))" ( (binary_expression "*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)" (binary_expression "*(int *)(iVar12 + 0x14) != -1" (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(*(int *)(iVar12 + 0x14) != iVar11)" ( (binary_expression "*(int *)(iVar12 + 0x14) != iVar11" (pointer_expression "*(int *)(iVar12 + 0x14)" * (cast_expression "(int *)(iVar12 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x14)" ( (binary_expression "iVar12 + 0x14" identifier + number_literal) )))) != identifier) ))) )) ))) )) (compound_statement "{\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }" { (expression_statement "iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);" (assignment_expression "iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12)" identifier = (call_expression "(**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12)" (parenthesized_expression "(**(code **)PTR_format_val_004b1c48)" ( (pointer_expression "**(code **)PTR_format_val_004b1c48" * (pointer_expression "*(code **)PTR_format_val_004b1c48" * (cast_expression "(code **)PTR_format_val_004b1c48" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (argument_list "(uVar6,iVar11,iVar12)" ( identifier , identifier , identifier )))) ;) })) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" ( (pointer_expression "*(code *)PTR_set_loc_004b1b6c" * (cast_expression "(code *)PTR_set_loc_004b1b6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "("array.c",0x24d)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" identifier = (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" ( (pointer_expression "*(code *)PTR_dcgettext_004b235c" * (cast_expression "(code *)PTR_dcgettext_004b235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "uVar7 = array_vname(param_1);" (assignment_expression "uVar7 = array_vname(param_1)" identifier = (call_expression "array_vname(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));" (call_expression "(*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8))" (parenthesized_expression "(*(code *)PTR_r_fatal_004b1b70)" ( (pointer_expression "*(code *)PTR_r_fatal_004b1b70" * (cast_expression "(code *)PTR_r_fatal_004b1b70" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(iVar12 + 0xc)" * (cast_expression "(undefined4 *)(iVar12 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar12 + 8)" * (cast_expression "(undefined4 *)(iVar12 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 8)" ( (binary_expression "iVar12 + 8" identifier + number_literal) )))) ))) ;) (expression_statement "iVar11 = *(int *)(iVar12 + 0x10) + -1;" (assignment_expression "iVar11 = *(int *)(iVar12 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar12 + 0x10) + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 0x10) = iVar11;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar11" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_1 = piVar17;" (assignment_expression "param_1 = piVar17" identifier = identifier) ;) (if_statement "if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar12)" ( identifier ))) ;) })) (labeled_statement "LAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" statement_identifier : (if_statement "if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" if (parenthesized_expression "(piVar17[10] == 5)" ( (binary_expression "piVar17[10] == 5" (subscript_expression "piVar17[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }" { (expression_statement "FUN_00408a60(piVar17,param_2);" (call_expression "FUN_00408a60(piVar17,param_2)" identifier (argument_list "(piVar17,param_2)" ( identifier , identifier ))) ;) (expression_statement "(**(code **)(*piVar17 + 0x14))();" (call_expression "(**(code **)(*piVar17 + 0x14))()" (parenthesized_expression "(**(code **)(*piVar17 + 0x14))" ( (pointer_expression "**(code **)(*piVar17 + 0x14)" * (pointer_expression "*(code **)(*piVar17 + 0x14)" * (cast_expression "(code **)(*piVar17 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar17 + 0x14)" ( (binary_expression "*piVar17 + 0x14" (pointer_expression "*piVar17" * identifier) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "(*(code *)PTR_free_004b239c)(piVar17[4]);" (call_expression "(*(code *)PTR_free_004b239c)(piVar17[4])" (parenthesized_expression "(*(code *)PTR_free_004b239c)" ( (pointer_expression "*(code *)PTR_free_004b239c" * (cast_expression "(code *)PTR_free_004b239c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar17[4])" ( (subscript_expression "piVar17[4]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar2 = PTR_nextfree_004b1bf0;" (assignment_expression "puVar2 = PTR_nextfree_004b1bf0" identifier = identifier) ;) (expression_statement "*piVar17 = *(int *)PTR_nextfree_004b1bf0;" (assignment_expression "*piVar17 = *(int *)PTR_nextfree_004b1bf0" (pointer_expression "*piVar17" * identifier) = (pointer_expression "*(int *)PTR_nextfree_004b1bf0" * (cast_expression "(int *)PTR_nextfree_004b1bf0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int **)puVar2 = piVar17;" (assignment_expression "*(int **)puVar2 = piVar17" (pointer_expression "*(int **)puVar2" * (cast_expression "(int **)puVar2" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) }) (else_clause "else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" else (compound_statement "{\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" { (expression_statement "iVar11 = piVar17[4];" (assignment_expression "iVar11 = piVar17[4]" identifier = (subscript_expression "piVar17[4]" identifier [ number_literal ])) ;) (expression_statement "piVar17[4] = iVar11 + -1;" (assignment_expression "piVar17[4] = iVar11 + -1" (subscript_expression "piVar17[4]" identifier [ number_literal ]) = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (if_statement "if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }" if (parenthesized_expression "(iVar11 + -1 < 1)" ( (binary_expression "iVar11 + -1 < 1" (binary_expression "iVar11 + -1" identifier + number_literal) < number_literal) )) (compound_statement "{\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(piVar17);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(piVar17)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar17)" ( identifier ))) ;) (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_0040af80;" goto statement_identifier ;) })) })))) (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (labeled_statement "LAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);" statement_identifier : (expression_statement "(**(code **)(iVar11 + 0x18))(param_1,iVar12);" (call_expression "(**(code **)(iVar11 + 0x18))(param_1,iVar12)" (parenthesized_expression "(**(code **)(iVar11 + 0x18))" ( (pointer_expression "**(code **)(iVar11 + 0x18)" * (pointer_expression "*(code **)(iVar11 + 0x18)" * (cast_expression "(code **)(iVar11 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 0x18)" ( (binary_expression "iVar11 + 0x18" identifier + number_literal) ))))) )) (argument_list "(param_1,iVar12)" ( identifier , identifier ))) ;)) (expression_statement "iVar11 = *(int *)(iVar12 + 0x10) + -1;" (assignment_expression "iVar11 = *(int *)(iVar12 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar12 + 0x10) + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 0x10) = iVar11;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar11" (pointer_expression "*(int *)(iVar12 + 0x10)" * (cast_expression "(int *)(iVar12 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x10)" ( (binary_expression "iVar12 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }" { (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" ( (pointer_expression "*(code *)PTR_r_unref_004b1b90" * (cast_expression "(code *)PTR_r_unref_004b1b90" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "iVar11 = param_1[8];" (assignment_expression "iVar11 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    iVar11 = param_1[8];\n  }" else (compound_statement "{\n    iVar11 = param_1[8];\n  }" { (expression_statement "iVar11 = param_1[8];" (assignment_expression "iVar11 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) }))) (if_statement "if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[10] = 5;" (assignment_expression "param_1[10] = 5" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = (int)&PTR_DAT_004af9bc;" (assignment_expression "*param_1 = (int)&PTR_DAT_004af9bc" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)&PTR_DAT_004af9bc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&PTR_DAT_004af9bc" & identifier))) ;) })) (return_statement "return;" return ;) })))
(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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = 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 ( LIT ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) (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 (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + IDENT) + LIT) ))))) ;) (expression_statement (assignment_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) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , IDENT ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 *)) ) 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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (argument_list ( (pointer_expression * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , IDENT )))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) (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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (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 (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + 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) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , IDENT ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (goto_statement goto statement_identifier ;)) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , 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 ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) 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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) })))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (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 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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 ;) })))
(function_definition "void do_delete(int *param_1,int param_2)\n\n{\n  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  undefined4 uVar13;\n  undefined4 uVar14;\n  code *pcVar15;\n  int iVar16;\n  int *piVar17;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (param_2 == 0) {\n    FUN_00408a60();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }\n  iVar9 = param_2 * -4;\n  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);\n  iVar11 = param_2;\n  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar9 = iVar9 + 8;\n  while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  uVar7 = array_vname(iVar12);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);\n  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n  iVar16 = -1;\n  iVar9 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar11 = iVar11 + 4;\n  iVar12 = *(int *)(*(int *)puVar5 + iVar11);\n  if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }\n  iVar9 = iVar9 + -1;\n  if (iVar9 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);\n  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  uVar7 = array_vname(param_1);\n  (*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  param_1 = piVar17;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }\nLAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }\n  iVar11 = *param_1;\nLAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }\n  if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "do_delete(int *param_1,int param_2)" (identifier "do_delete") (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  undefined4 *puVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  undefined4 uVar13;\n  undefined4 uVar14;\n  code *pcVar15;\n  int iVar16;\n  int *piVar17;\n  \n  puVar5 = PTR_stack_ptr_004b1cd8;\n  puVar2 = PTR_CONVFMT_004b1c40;\n  if (param_2 == 0) {\n    FUN_00408a60();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }\n  if (param_2 < 1) {\n                    \n    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }\n  iVar9 = param_2 * -4;\n  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);\n  iVar11 = param_2;\n  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;\nLAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;\n  puVar3 = PTR_CONVFMTidx_004b1c44;\n  iVar9 = iVar9 + 8;\n  while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);\n  uVar7 = array_vname(iVar12);\n  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);\n  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n  iVar16 = -1;\n  iVar9 = 0;\n  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );\nLAB_0040b188:\n  iVar11 = iVar11 + 4;\n  iVar12 = *(int *)(*(int *)puVar5 + iVar11);\n  if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }\n  iVar9 = iVar9 + -1;\n  if (iVar9 < 1) {\n    return;\n  }\n  goto LAB_0040b188;\nLAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);\n  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }\n  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);\n  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;\n  uVar7 = array_vname(param_1);\n  (*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  param_1 = piVar17;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }\nLAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }\n  iVar11 = *param_1;\nLAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);\n  iVar11 = *(int *)(iVar12 + 0x10) + -1;\n  *(int *)(iVar12 + 0x10) = iVar11;\n  if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }\n  if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }\n  return;\n}" ({ "{") (declaration "undefined4 *puVar1;" (type_identifier "undefined4") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "undefined4 uVar13;" (type_identifier "undefined4") (identifier "uVar13") (; ";")) (declaration "undefined4 uVar14;" (type_identifier "undefined4") (identifier "uVar14") (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (expression_statement "puVar5 = PTR_stack_ptr_004b1cd8;" (assignment_expression "puVar5 = PTR_stack_ptr_004b1cd8" (identifier "puVar5") (= "=") (identifier "PTR_stack_ptr_004b1cd8")) (; ";")) (expression_statement "puVar2 = PTR_CONVFMT_004b1c40;" (assignment_expression "puVar2 = PTR_CONVFMT_004b1c40" (identifier "puVar2") (= "=") (identifier "PTR_CONVFMT_004b1c40")) (; ";")) (if_statement "if (param_2 == 0) {\n    FUN_00408a60();\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_00408a60();\n                    \n                    \n    (**(code **)(*param_1 + 0x14))();\n    return;\n  }" ({ "{") (expression_statement "FUN_00408a60();" (call_expression "FUN_00408a60()" (identifier "FUN_00408a60") (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    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }" (if "if") (parenthesized_expression "(param_2 < 1)" (( "(") (binary_expression "param_2 < 1" (identifier "param_2") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                    \n    pcVar15 = (code *)trap(0);\n    (*pcVar15)();\n  }" ({ "{") (expression_statement "pcVar15 = (code *)trap(0);" (assignment_expression "pcVar15 = (code *)trap(0)" (identifier "pcVar15") (= "=") (cast_expression "(code *)trap(0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "trap(0)" (identifier "trap") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (expression_statement "(*pcVar15)();" (call_expression "(*pcVar15)()" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar9 = param_2 * -4;" (assignment_expression "iVar9 = param_2 * -4" (identifier "iVar9") (= "=") (binary_expression "param_2 * -4" (identifier "param_2") (* "*") (number_literal "-4"))) (; ";")) (expression_statement "iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);" (assignment_expression "iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" (* "*") (cast_expression "(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4)" (( "(") (binary_expression "*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4" (binary_expression "*(int *)PTR_stack_ptr_004b1cd8 + iVar9" (pointer_expression "*(int *)PTR_stack_ptr_004b1cd8" (* "*") (cast_expression "(int *)PTR_stack_ptr_004b1cd8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_stack_ptr_004b1cd8"))) (+ "+") (identifier "iVar9")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar11 = param_2;" (assignment_expression "iVar11 = param_2" (identifier "iVar11") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;" (if "if") (parenthesized_expression "(*(int *)(iVar12 + 0x28) == 1)" (( "(") (binary_expression "*(int *)(iVar12 + 0x28) == 1" (pointer_expression "*(int *)(iVar12 + 0x28)" (* "*") (cast_expression "(int *)(iVar12 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x28)" (( "(") (binary_expression "iVar12 + 0x28" (identifier "iVar12") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_0040b088;" (goto "goto") (statement_identifier "LAB_0040b088") (; ";"))) (labeled_statement "LAB_0040ad4c:\n  puVar4 = PTR_format_val_004b1c48;" (statement_identifier "LAB_0040ad4c") (: ":") (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" (identifier "puVar4") (= "=") (identifier "PTR_format_val_004b1c48")) (; ";"))) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" (identifier "puVar3") (= "=") (identifier "PTR_CONVFMTidx_004b1c44")) (; ";")) (expression_statement "iVar9 = iVar9 + 8;" (assignment_expression "iVar9 = iVar9 + 8" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8"))) (; ";")) (while_statement "while (iVar11 = iVar11 + -1, iVar11 != 0) {\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }" (while "while") (parenthesized_expression "(iVar11 = iVar11 + -1, iVar11 != 0)" (( "(") (comma_expression "iVar11 = iVar11 + -1, iVar11 != 0" (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n    iVar16 = *(int *)(*(int *)puVar5 + iVar9);\n    if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }\n    iVar9 = iVar9 + 4;\n  }" ({ "{") (expression_statement "iVar16 = *(int *)(*(int *)puVar5 + iVar9);" (assignment_expression "iVar16 = *(int *)(*(int *)puVar5 + iVar9)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(*(int *)puVar5 + iVar9)" (* "*") (cast_expression "(int *)(*(int *)puVar5 + iVar9)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)puVar5 + iVar9)" (( "(") (binary_expression "*(int *)puVar5 + iVar9" (pointer_expression "*(int *)puVar5" (* "*") (cast_expression "(int *)puVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) (+ "+") (identifier "iVar9")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar16 + 0x28) == 1) {\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar16 + 0x28) == 1)" (( "(") (binary_expression "*(int *)(iVar16 + 0x28) == 1" (pointer_expression "*(int *)(iVar16 + 0x28)" (* "*") (cast_expression "(int *)(iVar16 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x28)" (( "(") (binary_expression "iVar16 + 0x28" (identifier "iVar16") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      *(int *)(iVar16 + 0x10) = iVar10 + -1;\n      if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }\n    }" ({ "{") (if_statement "if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" (if "if") (parenthesized_expression "((*(uint *)(iVar16 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(iVar16 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar16 + 0x2c) & 4)" (( "(") (binary_expression "*(uint *)(iVar16 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar16 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar16 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x2c)" (( "(") (binary_expression "iVar16 + 0x2c" (identifier "iVar16") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);\nLAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" ({ "{") (labeled_statement "LAB_0040b014:\n        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);" (statement_identifier "LAB_0040b014") (: ":") (expression_statement "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);" (call_expression "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16)" (parenthesized_expression "(**(code **)puVar4)" (( "(") (pointer_expression "**(code **)puVar4" (* "*") (pointer_expression "*(code **)puVar4" (* "*") (cast_expression "(code **)puVar4" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar4")))) () ")")) (argument_list "(*(undefined4 *)puVar2,*(int *)puVar3,iVar16)" (( "(") (pointer_expression "*(undefined4 *)puVar2" (* "*") (cast_expression "(undefined4 *)puVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (, ",") (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (, ",") (identifier "iVar16") () ")"))) (; ";"))) (labeled_statement "LAB_0040b024:\n        iVar10 = *(int *)(iVar16 + 0x10);" (statement_identifier "LAB_0040b024") (: ":") (expression_statement "iVar10 = *(int *)(iVar16 + 0x10);" (assignment_expression "iVar10 = *(int *)(iVar16 + 0x10)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar16 + 0x10)" (* "*") (cast_expression "(int *)(iVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x10)" (( "(") (binary_expression "iVar16 + 0x10" (identifier "iVar16") (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" (else "else") (compound_statement "{\n        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;\n        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;\n        iVar10 = *(int *)(iVar16 + 0x10);\n      }" ({ "{") (if_statement "if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;" (if "if") (parenthesized_expression "(*(int *)(iVar16 + 0x14) == -1)" (( "(") (binary_expression "*(int *)(iVar16 + 0x14) == -1" (pointer_expression "*(int *)(iVar16 + 0x14)" (* "*") (cast_expression "(int *)(iVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x14)" (( "(") (binary_expression "iVar16 + 0x14" (identifier "iVar16") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0040b024;" (goto "goto") (statement_identifier "LAB_0040b024") (; ";"))) (if_statement "if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;" (if "if") (parenthesized_expression "(*(int *)puVar3 != *(int *)(iVar16 + 0x14))" (( "(") (binary_expression "*(int *)puVar3 != *(int *)(iVar16 + 0x14)" (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (!= "!=") (pointer_expression "*(int *)(iVar16 + 0x14)" (* "*") (cast_expression "(int *)(iVar16 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x14)" (( "(") (binary_expression "iVar16 + 0x14" (identifier "iVar16") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (goto_statement "goto LAB_0040b014;" (goto "goto") (statement_identifier "LAB_0040b014") (; ";"))) (expression_statement "iVar10 = *(int *)(iVar16 + 0x10);" (assignment_expression "iVar10 = *(int *)(iVar16 + 0x10)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar16 + 0x10)" (* "*") (cast_expression "(int *)(iVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x10)" (( "(") (binary_expression "iVar16 + 0x10" (identifier "iVar16") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*(int *)(iVar16 + 0x10) = iVar10 + -1;" (assignment_expression "*(int *)(iVar16 + 0x10) = iVar10 + -1" (pointer_expression "*(int *)(iVar16 + 0x10)" (* "*") (cast_expression "(int *)(iVar16 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x10)" (( "(") (binary_expression "iVar16 + 0x10" (identifier "iVar16") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar10 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }" (if "if") (parenthesized_expression "(iVar10 + -1 == 0)" (( "(") (binary_expression "iVar10 + -1 == 0" (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar16);\n      }" ({ "{") (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar16);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar16)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" (( "(") (pointer_expression "*(code *)PTR_r_unref_004b1b90" (* "*") (cast_expression "(code *)PTR_r_unref_004b1b90" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_r_unref_004b1b90"))) () ")")) (argument_list "(iVar16)" (( "(") (identifier "iVar16") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar9 = iVar9 + 4;" (assignment_expression "iVar9 = iVar9 + 4" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x238)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" (( "(") (pointer_expression "*(code *)PTR_set_loc_004b1b6c" (* "*") (cast_expression "(code *)PTR_set_loc_004b1b6c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_set_loc_004b1b6c"))) () ")")) (argument_list "("array.c",0x238)" (( "(") (string_literal ""array.c"" (" """) (string_content "array.c") (" """)) (, ",") (number_literal "0x238") () ")"))) (; ";")) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "uVar6") (= "=") (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_004b235c" (* "*") (cast_expression "(code *)PTR_dcgettext_004b235c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_004b235c"))) () ")")) (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 "uVar7 = array_vname(iVar12);" (assignment_expression "uVar7 = array_vname(iVar12)" (identifier "uVar7") (= "=") (call_expression "array_vname(iVar12)" (identifier "array_vname") (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);" (call_expression "(*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7)" (parenthesized_expression "(*(code *)PTR_r_fatal_004b1b70)" (( "(") (pointer_expression "*(code *)PTR_r_fatal_004b1b70" (* "*") (cast_expression "(code *)PTR_r_fatal_004b1b70" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_r_fatal_004b1b70"))) () ")")) (argument_list "(uVar6,uVar7)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x10)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x10)" (* "*") (cast_expression "(code **)(*param_1 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(param_1,iVar12)" (( "(") (identifier "param_1") (, ",") (identifier "iVar12") () ")"))))) (; ";")) (expression_statement "iVar16 = -1;" (assignment_expression "iVar16 = -1" (identifier "iVar16") (= "=") (number_literal "-1")) (; ";")) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;" (assignment_expression "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)PTR_CONVFMT_004b1c40" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_CONVFMT_004b1c40"))) (; ";")) (do_statement "do {\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  } while( true );" (do "do") (compound_statement "{\n    iVar11 = iVar16;\n    puVar4 = PTR_format_val_004b1c48;\n    puVar3 = PTR_CONVFMTidx_004b1c44;\n    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;\n    if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }\n    piVar17 = (int *)*puVar8;\n    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;\n    if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }\n    if (iVar11 < 1) goto LAB_0040af5c;\n    iVar9 = iVar11 * -4;\n    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);\n    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;\nLAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);\n    iVar16 = iVar11 + -1;\n    iVar9 = iVar11;\n    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;\n  }" ({ "{") (expression_statement "iVar11 = iVar16;" (assignment_expression "iVar11 = iVar16" (identifier "iVar11") (= "=") (identifier "iVar16")) (; ";")) (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" (identifier "puVar4") (= "=") (identifier "PTR_format_val_004b1c48")) (; ";")) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" (identifier "puVar3") (= "=") (identifier "PTR_CONVFMTidx_004b1c44")) (; ";")) (expression_statement "PTR_CONVFMT_004b1c40 = (undefined *)puVar1;" (assignment_expression "PTR_CONVFMT_004b1c40 = (undefined *)puVar1" (identifier "PTR_CONVFMT_004b1c40") (= "=") (cast_expression "(undefined *)puVar1" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) (; ";")) (if_statement "if (puVar8 == (undefined4 *)0x0) {\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }" (if "if") (parenthesized_expression "(puVar8 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 == (undefined4 *)0x0" (identifier "puVar8") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }\n      puVar4 = PTR_format_val_004b1c48;\n      puVar3 = PTR_CONVFMTidx_004b1c44;\n      puVar2 = PTR_CONVFMT_004b1c40;\n      iVar11 = iVar9 * -4;\n      break;\n    }" ({ "{") (labeled_statement "LAB_0040b0ac:\n      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }" (statement_identifier "LAB_0040b0ac") (: ":") (if_statement "if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }" (if "if") (parenthesized_expression "((*(uint *)PTR_do_flags_004b1b5c & 5) != 0)" (( "(") (binary_expression "(*(uint *)PTR_do_flags_004b1b5c & 5) != 0" (parenthesized_expression "(*(uint *)PTR_do_flags_004b1b5c & 5)" (( "(") (binary_expression "*(uint *)PTR_do_flags_004b1b5c & 5" (pointer_expression "*(uint *)PTR_do_flags_004b1b5c" (* "*") (cast_expression "(uint *)PTR_do_flags_004b1b5c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_flags_004b1b5c"))) (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }\n        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);\n        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;\n        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);\n        uVar14 = *(undefined4 *)(iVar12 + 0xc);\n        uVar13 = *(undefined4 *)(iVar12 + 8);\n        uVar7 = array_vname(param_1);\n        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);\n      }" ({ "{") (if_statement "if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }" (if "if") (parenthesized_expression "(((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14)))))" (( "(") (binary_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n           ((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))" (parenthesized_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(iVar12 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x2c) & 4)" (( "(") (binary_expression "*(uint *)(iVar12 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar12 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar12 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x2c)" (( "(") (binary_expression "iVar12 + 0x2c" (identifier "iVar12") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))" (( "(") (parenthesized_expression "(*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14)))" (( "(") (binary_expression "*(int *)(iVar12 + 0x14) != -1 &&\n            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))" (binary_expression "*(int *)(iVar12 + 0x14) != -1" (pointer_expression "*(int *)(iVar12 + 0x14)" (* "*") (cast_expression "(int *)(iVar12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x14)" (( "(") (binary_expression "iVar12 + 0x14" (identifier "iVar12") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) (&& "&&") (parenthesized_expression "(*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))" (( "(") (binary_expression "*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14)" (pointer_expression "*(int *)PTR_CONVFMTidx_004b1c44" (* "*") (cast_expression "(int *)PTR_CONVFMTidx_004b1c44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_CONVFMTidx_004b1c44"))) (!= "!=") (pointer_expression "*(int *)(iVar12 + 0x14)" (* "*") (cast_expression "(int *)(iVar12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x14)" (( "(") (binary_expression "iVar12 + 0x14" (identifier "iVar12") (+ "+") (number_literal "0x14")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);\n        }" ({ "{") (expression_statement "iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);" (assignment_expression "iVar12 = (**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12)" (identifier "iVar12") (= "=") (call_expression "(**(code **)PTR_format_val_004b1c48)\n                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12)" (parenthesized_expression "(**(code **)PTR_format_val_004b1c48)" (( "(") (pointer_expression "**(code **)PTR_format_val_004b1c48" (* "*") (pointer_expression "*(code **)PTR_format_val_004b1c48" (* "*") (cast_expression "(code **)PTR_format_val_004b1c48" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_format_val_004b1c48")))) () ")")) (argument_list "(*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12)" (( "(") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (, ",") (pointer_expression "*(int *)PTR_CONVFMTidx_004b1c44" (* "*") (cast_expression "(int *)PTR_CONVFMTidx_004b1c44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_CONVFMTidx_004b1c44"))) (, ",") (identifier "iVar12") () ")")))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" (( "(") (pointer_expression "*(code *)PTR_set_loc_004b1b6c" (* "*") (cast_expression "(code *)PTR_set_loc_004b1b6c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_set_loc_004b1b6c"))) () ")")) (argument_list "("array.c",0x23f)" (( "(") (string_literal ""array.c"" (" """) (string_content "array.c") (" """)) (, ",") (number_literal "0x23f") () ")"))) (; ";")) (expression_statement "pcVar15 = *(code **)PTR_lintfunc_004b1b7c;" (assignment_expression "pcVar15 = *(code **)PTR_lintfunc_004b1b7c" (identifier "pcVar15") (= "=") (pointer_expression "*(code **)PTR_lintfunc_004b1b7c" (* "*") (cast_expression "(code **)PTR_lintfunc_004b1b7c" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_lintfunc_004b1b7c")))) (; ";")) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5)" (identifier "uVar6") (= "=") (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_004b235c" (* "*") (cast_expression "(code *)PTR_dcgettext_004b235c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_004b235c"))) () ")")) (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 "uVar14 = *(undefined4 *)(iVar12 + 0xc);" (assignment_expression "uVar14 = *(undefined4 *)(iVar12 + 0xc)" (identifier "uVar14") (= "=") (pointer_expression "*(undefined4 *)(iVar12 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0xc)" (( "(") (binary_expression "iVar12 + 0xc" (identifier "iVar12") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar13 = *(undefined4 *)(iVar12 + 8);" (assignment_expression "uVar13 = *(undefined4 *)(iVar12 + 8)" (identifier "uVar13") (= "=") (pointer_expression "*(undefined4 *)(iVar12 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 8)" (( "(") (binary_expression "iVar12 + 8" (identifier "iVar12") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar7 = array_vname(param_1);" (assignment_expression "uVar7 = array_vname(param_1)" (identifier "uVar7") (= "=") (call_expression "array_vname(param_1)" (identifier "array_vname") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "(*pcVar15)(uVar6,uVar14,uVar13,uVar7);" (call_expression "(*pcVar15)(uVar6,uVar14,uVar13,uVar7)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(uVar6,uVar14,uVar13,uVar7)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar14") (, ",") (identifier "uVar13") (, ",") (identifier "uVar7") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar4 = PTR_format_val_004b1c48;" (assignment_expression "puVar4 = PTR_format_val_004b1c48" (identifier "puVar4") (= "=") (identifier "PTR_format_val_004b1c48")) (; ";")) (expression_statement "puVar3 = PTR_CONVFMTidx_004b1c44;" (assignment_expression "puVar3 = PTR_CONVFMTidx_004b1c44" (identifier "puVar3") (= "=") (identifier "PTR_CONVFMTidx_004b1c44")) (; ";")) (expression_statement "puVar2 = PTR_CONVFMT_004b1c40;" (assignment_expression "puVar2 = PTR_CONVFMT_004b1c40" (identifier "puVar2") (= "=") (identifier "PTR_CONVFMT_004b1c40")) (; ";")) (expression_statement "iVar11 = iVar9 * -4;" (assignment_expression "iVar11 = iVar9 * -4" (identifier "iVar11") (= "=") (binary_expression "iVar9 * -4" (identifier "iVar9") (* "*") (number_literal "-4"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "piVar17 = (int *)*puVar8;" (assignment_expression "piVar17 = (int *)*puVar8" (identifier "piVar17") (= "=") (cast_expression "(int *)*puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (if_statement "if (piVar17 == (int *)0x0) goto LAB_0040b0ac;" (if "if") (parenthesized_expression "(piVar17 == (int *)0x0)" (( "(") (binary_expression "piVar17 == (int *)0x0" (identifier "piVar17") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0040b0ac;" (goto "goto") (statement_identifier "LAB_0040b0ac") (; ";"))) (if_statement "if (1 < iVar9) {\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }" (if "if") (parenthesized_expression "(1 < iVar9)" (( "(") (binary_expression "1 < iVar9" (number_literal "1") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }\n      iVar9 = *(int *)(iVar12 + 0x10) + -1;\n      *(int *)(iVar12 + 0x10) = iVar9;\n      param_1 = piVar17;\n      if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }\n    }" ({ "{") (if_statement "if (piVar17[10] != 5) {\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }" (if "if") (parenthesized_expression "(piVar17[10] != 5)" (( "(") (binary_expression "piVar17[10] != 5" (subscript_expression "piVar17[10]" (identifier "piVar17") ([ "[") (number_literal "10") (] "]")) (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n        iVar16 = iVar9 * -4;\n        uVar6 = *puVar1;\n        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;\n        goto LAB_0040ae4c;\n      }" ({ "{") (expression_statement "iVar16 = iVar9 * -4;" (assignment_expression "iVar16 = iVar9 * -4" (identifier "iVar16") (= "=") (binary_expression "iVar9 * -4" (identifier "iVar9") (* "*") (number_literal "-4"))) (; ";")) (expression_statement "uVar6 = *puVar1;" (assignment_expression "uVar6 = *puVar1" (identifier "uVar6") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;" (assignment_expression "iVar11 = *(int *)PTR_CONVFMTidx_004b1c44" (identifier "iVar11") (= "=") (pointer_expression "*(int *)PTR_CONVFMTidx_004b1c44" (* "*") (cast_expression "(int *)PTR_CONVFMTidx_004b1c44" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_CONVFMTidx_004b1c44")))) (; ";")) (goto_statement "goto LAB_0040ae4c;" (goto "goto") (statement_identifier "LAB_0040ae4c") (; ";")) (} "}"))) (expression_statement "iVar9 = *(int *)(iVar12 + 0x10) + -1;" (assignment_expression "iVar9 = *(int *)(iVar12 + 0x10) + -1" (identifier "iVar9") (= "=") (binary_expression "*(int *)(iVar12 + 0x10) + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(iVar12 + 0x10) = iVar9;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar9" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "param_1 = piVar17;" (assignment_expression "param_1 = piVar17" (identifier "param_1") (= "=") (identifier "piVar17")) (; ";")) (if_statement "if (iVar9 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar12);\n      }" ({ "{") (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" (( "(") (pointer_expression "*(code *)PTR_r_unref_004b1b90" (* "*") (cast_expression "(code *)PTR_r_unref_004b1b90" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_r_unref_004b1b90"))) () ")")) (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (iVar11 < 1) goto LAB_0040af5c;" (if "if") (parenthesized_expression "(iVar11 < 1)" (( "(") (binary_expression "iVar11 < 1" (identifier "iVar11") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0040af5c;" (goto "goto") (statement_identifier "LAB_0040af5c") (; ";"))) (expression_statement "iVar9 = iVar11 * -4;" (assignment_expression "iVar9 = iVar11 * -4" (identifier "iVar9") (= "=") (binary_expression "iVar11 * -4" (identifier "iVar11") (* "*") (number_literal "-4"))) (; ";")) (expression_statement "iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);" (assignment_expression "iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(*(int *)puVar5 + iVar9 + 4)" (* "*") (cast_expression "(int *)(*(int *)puVar5 + iVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)puVar5 + iVar9 + 4)" (( "(") (binary_expression "*(int *)puVar5 + iVar9 + 4" (binary_expression "*(int *)puVar5 + iVar9" (pointer_expression "*(int *)puVar5" (* "*") (cast_expression "(int *)puVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) (+ "+") (identifier "iVar9")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;" (if "if") (parenthesized_expression "(*(int *)(iVar12 + 0x28) != 1)" (( "(") (binary_expression "*(int *)(iVar12 + 0x28) != 1" (pointer_expression "*(int *)(iVar12 + 0x28)" (* "*") (cast_expression "(int *)(iVar12 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x28)" (( "(") (binary_expression "iVar12 + 0x28" (identifier "iVar12") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_0040ad4c;" (goto "goto") (statement_identifier "LAB_0040ad4c") (; ";"))) (labeled_statement "LAB_0040b088:\n    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);" (statement_identifier "LAB_0040b088") (: ":") (expression_statement "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*param_1 + 0x10))(param_1,iVar12)" (parenthesized_expression "(**(code **)(*param_1 + 0x10))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x10)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x10)" (* "*") (cast_expression "(code **)(*param_1 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x10)" (( "(") (binary_expression "*param_1 + 0x10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(param_1,iVar12)" (( "(") (identifier "param_1") (, ",") (identifier "iVar12") () ")"))))) (; ";"))) (expression_statement "iVar16 = iVar11 + -1;" (assignment_expression "iVar16 = iVar11 + -1" (identifier "iVar16") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar9 = iVar11;" (assignment_expression "iVar9 = iVar11" (identifier "iVar9") (= "=") (identifier "iVar11")) (; ";")) (expression_statement "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;" (assignment_expression "puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40" (identifier "puVar1") (= "=") (cast_expression "(undefined4 *)PTR_CONVFMT_004b1c40" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_CONVFMT_004b1c40"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (labeled_statement "LAB_0040b188:\n  iVar11 = iVar11 + 4;" (statement_identifier "LAB_0040b188") (: ":") (expression_statement "iVar11 = iVar11 + 4;" (assignment_expression "iVar11 = iVar11 + 4" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4"))) (; ";"))) (expression_statement "iVar12 = *(int *)(*(int *)puVar5 + iVar11);" (assignment_expression "iVar12 = *(int *)(*(int *)puVar5 + iVar11)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(*(int *)puVar5 + iVar11)" (* "*") (cast_expression "(int *)(*(int *)puVar5 + iVar11)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)puVar5 + iVar11)" (( "(") (binary_expression "*(int *)puVar5 + iVar11" (pointer_expression "*(int *)puVar5" (* "*") (cast_expression "(int *)puVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) (+ "+") (identifier "iVar11")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar12 + 0x28) == 1) {\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar12 + 0x28) == 1)" (( "(") (binary_expression "*(int *)(iVar12 + 0x28) == 1" (pointer_expression "*(int *)(iVar12 + 0x28)" (* "*") (cast_expression "(int *)(iVar12 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x28)" (( "(") (binary_expression "iVar12 + 0x28" (identifier "iVar12") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    *(int *)(iVar12 + 0x10) = iVar16 + -1;\n    if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }\n  }" ({ "{") (if_statement "if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }\n    else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" (if "if") (parenthesized_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(iVar12 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x2c) & 4)" (( "(") (binary_expression "*(uint *)(iVar12 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar12 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar12 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x2c)" (( "(") (binary_expression "iVar12 + 0x2c" (identifier "iVar12") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);\nLAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" ({ "{") (labeled_statement "LAB_0040b1b4:\n      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);" (statement_identifier "LAB_0040b1b4") (: ":") (expression_statement "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);" (call_expression "(**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12)" (parenthesized_expression "(**(code **)puVar4)" (( "(") (pointer_expression "**(code **)puVar4" (* "*") (pointer_expression "*(code **)puVar4" (* "*") (cast_expression "(code **)puVar4" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar4")))) () ")")) (argument_list "(*(undefined4 *)puVar2,*(int *)puVar3,iVar12)" (( "(") (pointer_expression "*(undefined4 *)puVar2" (* "*") (cast_expression "(undefined4 *)puVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2"))) (, ",") (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (, ",") (identifier "iVar12") () ")"))) (; ";"))) (labeled_statement "LAB_0040b1c4:\n      iVar16 = *(int *)(iVar12 + 0x10);" (statement_identifier "LAB_0040b1c4") (: ":") (expression_statement "iVar16 = *(int *)(iVar12 + 0x10);" (assignment_expression "iVar16 = *(int *)(iVar12 + 0x10)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" (else "else") (compound_statement "{\n      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;\n      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;\n      iVar16 = *(int *)(iVar12 + 0x10);\n    }" ({ "{") (if_statement "if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;" (if "if") (parenthesized_expression "(*(int *)(iVar12 + 0x14) == -1)" (( "(") (binary_expression "*(int *)(iVar12 + 0x14) == -1" (pointer_expression "*(int *)(iVar12 + 0x14)" (* "*") (cast_expression "(int *)(iVar12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x14)" (( "(") (binary_expression "iVar12 + 0x14" (identifier "iVar12") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0040b1c4;" (goto "goto") (statement_identifier "LAB_0040b1c4") (; ";"))) (if_statement "if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;" (if "if") (parenthesized_expression "(*(int *)puVar3 != *(int *)(iVar12 + 0x14))" (( "(") (binary_expression "*(int *)puVar3 != *(int *)(iVar12 + 0x14)" (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) (!= "!=") (pointer_expression "*(int *)(iVar12 + 0x14)" (* "*") (cast_expression "(int *)(iVar12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x14)" (( "(") (binary_expression "iVar12 + 0x14" (identifier "iVar12") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (goto_statement "goto LAB_0040b1b4;" (goto "goto") (statement_identifier "LAB_0040b1b4") (; ";"))) (expression_statement "iVar16 = *(int *)(iVar12 + 0x10);" (assignment_expression "iVar16 = *(int *)(iVar12 + 0x10)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*(int *)(iVar12 + 0x10) = iVar16 + -1;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar16 + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "iVar16 + -1" (identifier "iVar16") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar16 + -1 == 0) {\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }" (if "if") (parenthesized_expression "(iVar16 + -1 == 0)" (( "(") (binary_expression "iVar16 + -1 == 0" (binary_expression "iVar16 + -1" (identifier "iVar16") (+ "+") (number_literal "-1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    }" ({ "{") (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" (( "(") (pointer_expression "*(code *)PTR_r_unref_004b1b90" (* "*") (cast_expression "(code *)PTR_r_unref_004b1b90" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_r_unref_004b1b90"))) () ")")) (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar9 < 1) {\n    return;\n  }" (if "if") (parenthesized_expression "(iVar9 < 1)" (( "(") (binary_expression "iVar9 < 1" (identifier "iVar9") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (goto_statement "goto LAB_0040b188;" (goto "goto") (statement_identifier "LAB_0040b188") (; ";")) (labeled_statement "LAB_0040ae4c:\n  do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);" (statement_identifier "LAB_0040ae4c") (: ":") (do_statement "do {\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  } while (iVar9 != 0);" (do "do") (compound_statement "{\n    iVar16 = iVar16 + 4;\n    iVar10 = *(int *)(*(int *)puVar5 + iVar16);\n    if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }\n    iVar9 = iVar9 + -1;\n  }" ({ "{") (expression_statement "iVar16 = iVar16 + 4;" (assignment_expression "iVar16 = iVar16 + 4" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 4" (identifier "iVar16") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "iVar10 = *(int *)(*(int *)puVar5 + iVar16);" (assignment_expression "iVar10 = *(int *)(*(int *)puVar5 + iVar16)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(*(int *)puVar5 + iVar16)" (* "*") (cast_expression "(int *)(*(int *)puVar5 + iVar16)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)puVar5 + iVar16)" (( "(") (binary_expression "*(int *)puVar5 + iVar16" (pointer_expression "*(int *)puVar5" (* "*") (cast_expression "(int *)puVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) (+ "+") (identifier "iVar16")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar10 + 0x28) == 1) {\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar10 + 0x28) == 1)" (( "(") (binary_expression "*(int *)(iVar10 + 0x28) == 1" (pointer_expression "*(int *)(iVar10 + 0x28)" (* "*") (cast_expression "(int *)(iVar10 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x28)" (( "(") (binary_expression "iVar10 + 0x28" (identifier "iVar10") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      *(int *)(iVar10 + 0x10) = iVar11 + -1;\n      if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }\n      iVar11 = *(int *)puVar3;\n      uVar6 = *puVar1;\n    }" ({ "{") (if_statement "if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }\n      else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" (if "if") (parenthesized_expression "((*(uint *)(iVar10 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(iVar10 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar10 + 0x2c) & 4)" (( "(") (binary_expression "*(uint *)(iVar10 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar10 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar10 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x2c)" (( "(") (binary_expression "iVar10 + 0x2c" (identifier "iVar10") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);\nLAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" ({ "{") (labeled_statement "LAB_0040ae74:\n        (**(code **)puVar4)(uVar6,iVar11,iVar10);" (statement_identifier "LAB_0040ae74") (: ":") (expression_statement "(**(code **)puVar4)(uVar6,iVar11,iVar10);" (call_expression "(**(code **)puVar4)(uVar6,iVar11,iVar10)" (parenthesized_expression "(**(code **)puVar4)" (( "(") (pointer_expression "**(code **)puVar4" (* "*") (pointer_expression "*(code **)puVar4" (* "*") (cast_expression "(code **)puVar4" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar4")))) () ")")) (argument_list "(uVar6,iVar11,iVar10)" (( "(") (identifier "uVar6") (, ",") (identifier "iVar11") (, ",") (identifier "iVar10") () ")"))) (; ";"))) (labeled_statement "LAB_0040ae8c:\n        iVar11 = *(int *)(iVar10 + 0x10);" (statement_identifier "LAB_0040ae8c") (: ":") (expression_statement "iVar11 = *(int *)(iVar10 + 0x10);" (assignment_expression "iVar11 = *(int *)(iVar10 + 0x10)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar10 + 0x10)" (* "*") (cast_expression "(int *)(iVar10 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" (else "else") (compound_statement "{\n        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;\n        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;\n        iVar11 = *(int *)(iVar10 + 0x10);\n      }" ({ "{") (if_statement "if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;" (if "if") (parenthesized_expression "(*(int *)(iVar10 + 0x14) == -1)" (( "(") (binary_expression "*(int *)(iVar10 + 0x14) == -1" (pointer_expression "*(int *)(iVar10 + 0x14)" (* "*") (cast_expression "(int *)(iVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x14)" (( "(") (binary_expression "iVar10 + 0x14" (identifier "iVar10") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0040ae8c;" (goto "goto") (statement_identifier "LAB_0040ae8c") (; ";"))) (if_statement "if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;" (if "if") (parenthesized_expression "(*(int *)(iVar10 + 0x14) != iVar11)" (( "(") (binary_expression "*(int *)(iVar10 + 0x14) != iVar11" (pointer_expression "*(int *)(iVar10 + 0x14)" (* "*") (cast_expression "(int *)(iVar10 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x14)" (( "(") (binary_expression "iVar10 + 0x14" (identifier "iVar10") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (identifier "iVar11")) () ")")) (goto_statement "goto LAB_0040ae74;" (goto "goto") (statement_identifier "LAB_0040ae74") (; ";"))) (expression_statement "iVar11 = *(int *)(iVar10 + 0x10);" (assignment_expression "iVar11 = *(int *)(iVar10 + 0x10)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar10 + 0x10)" (* "*") (cast_expression "(int *)(iVar10 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*(int *)(iVar10 + 0x10) = iVar11 + -1;" (assignment_expression "*(int *)(iVar10 + 0x10) = iVar11 + -1" (pointer_expression "*(int *)(iVar10 + 0x10)" (* "*") (cast_expression "(int *)(iVar10 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0x10)" (( "(") (binary_expression "iVar10 + 0x10" (identifier "iVar10") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar11 + -1 == 0) {\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }" (if "if") (parenthesized_expression "(iVar11 + -1 == 0)" (( "(") (binary_expression "iVar11 + -1 == 0" (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        (*(code *)PTR_r_unref_004b1b90)(iVar10);\n      }" ({ "{") (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar10);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar10)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" (( "(") (pointer_expression "*(code *)PTR_r_unref_004b1b90" (* "*") (cast_expression "(code *)PTR_r_unref_004b1b90" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_r_unref_004b1b90"))) () ")")) (argument_list "(iVar10)" (( "(") (identifier "iVar10") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar11 = *(int *)puVar3;" (assignment_expression "iVar11 = *(int *)puVar3" (identifier "iVar11") (= "=") (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3")))) (; ";")) (expression_statement "uVar6 = *puVar1;" (assignment_expression "uVar6 = *puVar1" (identifier "uVar6") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (} "}"))) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (; ";"))) (if_statement "if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }" (if "if") (parenthesized_expression "(((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11))))" (( "(") (binary_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||\n     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))" (parenthesized_expression "((*(uint *)(iVar12 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(iVar12 + 0x2c) & 4) == 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x2c) & 4)" (( "(") (binary_expression "*(uint *)(iVar12 + 0x2c) & 4" (pointer_expression "*(uint *)(iVar12 + 0x2c)" (* "*") (cast_expression "(uint *)(iVar12 + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x2c)" (( "(") (binary_expression "iVar12 + 0x2c" (identifier "iVar12") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))" (( "(") (parenthesized_expression "(*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11))" (( "(") (binary_expression "*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)" (binary_expression "*(int *)(iVar12 + 0x14) != -1" (pointer_expression "*(int *)(iVar12 + 0x14)" (* "*") (cast_expression "(int *)(iVar12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x14)" (( "(") (binary_expression "iVar12 + 0x14" (identifier "iVar12") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) (&& "&&") (parenthesized_expression "(*(int *)(iVar12 + 0x14) != iVar11)" (( "(") (binary_expression "*(int *)(iVar12 + 0x14) != iVar11" (pointer_expression "*(int *)(iVar12 + 0x14)" (* "*") (cast_expression "(int *)(iVar12 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x14)" (( "(") (binary_expression "iVar12 + 0x14" (identifier "iVar12") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (identifier "iVar11")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);\n  }" ({ "{") (expression_statement "iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);" (assignment_expression "iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12)" (identifier "iVar12") (= "=") (call_expression "(**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12)" (parenthesized_expression "(**(code **)PTR_format_val_004b1c48)" (( "(") (pointer_expression "**(code **)PTR_format_val_004b1c48" (* "*") (pointer_expression "*(code **)PTR_format_val_004b1c48" (* "*") (cast_expression "(code **)PTR_format_val_004b1c48" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_format_val_004b1c48")))) () ")")) (argument_list "(uVar6,iVar11,iVar12)" (( "(") (identifier "uVar6") (, ",") (identifier "iVar11") (, ",") (identifier "iVar12") () ")")))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);" (call_expression "(*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d)" (parenthesized_expression "(*(code *)PTR_set_loc_004b1b6c)" (( "(") (pointer_expression "*(code *)PTR_set_loc_004b1b6c" (* "*") (cast_expression "(code *)PTR_set_loc_004b1b6c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_set_loc_004b1b6c"))) () ")")) (argument_list "("array.c",0x24d)" (( "(") (string_literal ""array.c"" (" """) (string_content "array.c") (" """)) (, ",") (number_literal "0x24d") () ")"))) (; ";")) (expression_statement "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)\n  ;" (assignment_expression "uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" (identifier "uVar6") (= "=") (call_expression "(*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)" (parenthesized_expression "(*(code *)PTR_dcgettext_004b235c)" (( "(") (pointer_expression "*(code *)PTR_dcgettext_004b235c" (* "*") (cast_expression "(code *)PTR_dcgettext_004b235c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_dcgettext_004b235c"))) () ")")) (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 "uVar7 = array_vname(param_1);" (assignment_expression "uVar7 = array_vname(param_1)" (identifier "uVar7") (= "=") (call_expression "array_vname(param_1)" (identifier "array_vname") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));" (call_expression "(*(code *)PTR_r_fatal_004b1b70)\n            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8))" (parenthesized_expression "(*(code *)PTR_r_fatal_004b1b70)" (( "(") (pointer_expression "*(code *)PTR_r_fatal_004b1b70" (* "*") (cast_expression "(code *)PTR_r_fatal_004b1b70" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_r_fatal_004b1b70"))) () ")")) (argument_list "(uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8))" (( "(") (identifier "uVar6") (, ",") (identifier "uVar7") (, ",") (pointer_expression "*(undefined4 *)(iVar12 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0xc)" (( "(") (binary_expression "iVar12 + 0xc" (identifier "iVar12") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar12 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 8)" (( "(") (binary_expression "iVar12 + 8" (identifier "iVar12") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar11 = *(int *)(iVar12 + 0x10) + -1;" (assignment_expression "iVar11 = *(int *)(iVar12 + 0x10) + -1" (identifier "iVar11") (= "=") (binary_expression "*(int *)(iVar12 + 0x10) + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(iVar12 + 0x10) = iVar11;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar11" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "param_1 = piVar17;" (assignment_expression "param_1 = piVar17" (identifier "param_1") (= "=") (identifier "piVar17")) (; ";")) (if_statement "if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n  }" ({ "{") (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" (( "(") (pointer_expression "*(code *)PTR_r_unref_004b1b90" (* "*") (cast_expression "(code *)PTR_r_unref_004b1b90" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_r_unref_004b1b90"))) () ")")) (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0040af5c:\n  if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" (statement_identifier "LAB_0040af5c") (: ":") (if_statement "if (piVar17[10] == 5) {\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }\n  else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" (if "if") (parenthesized_expression "(piVar17[10] == 5)" (( "(") (binary_expression "piVar17[10] == 5" (subscript_expression "piVar17[10]" (identifier "piVar17") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n    FUN_00408a60(piVar17,param_2);\n    (**(code **)(*piVar17 + 0x14))();\n    (*(code *)PTR_free_004b239c)(piVar17[4]);\n    puVar2 = PTR_nextfree_004b1bf0;\n    *piVar17 = *(int *)PTR_nextfree_004b1bf0;\n    *(int **)puVar2 = piVar17;\n  }" ({ "{") (expression_statement "FUN_00408a60(piVar17,param_2);" (call_expression "FUN_00408a60(piVar17,param_2)" (identifier "FUN_00408a60") (argument_list "(piVar17,param_2)" (( "(") (identifier "piVar17") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "(**(code **)(*piVar17 + 0x14))();" (call_expression "(**(code **)(*piVar17 + 0x14))()" (parenthesized_expression "(**(code **)(*piVar17 + 0x14))" (( "(") (pointer_expression "**(code **)(*piVar17 + 0x14)" (* "*") (pointer_expression "*(code **)(*piVar17 + 0x14)" (* "*") (cast_expression "(code **)(*piVar17 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar17 + 0x14)" (( "(") (binary_expression "*piVar17 + 0x14" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_004b239c)(piVar17[4]);" (call_expression "(*(code *)PTR_free_004b239c)(piVar17[4])" (parenthesized_expression "(*(code *)PTR_free_004b239c)" (( "(") (pointer_expression "*(code *)PTR_free_004b239c" (* "*") (cast_expression "(code *)PTR_free_004b239c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_004b239c"))) () ")")) (argument_list "(piVar17[4])" (( "(") (subscript_expression "piVar17[4]" (identifier "piVar17") ([ "[") (number_literal "4") (] "]")) () ")"))) (; ";")) (expression_statement "puVar2 = PTR_nextfree_004b1bf0;" (assignment_expression "puVar2 = PTR_nextfree_004b1bf0" (identifier "puVar2") (= "=") (identifier "PTR_nextfree_004b1bf0")) (; ";")) (expression_statement "*piVar17 = *(int *)PTR_nextfree_004b1bf0;" (assignment_expression "*piVar17 = *(int *)PTR_nextfree_004b1bf0" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (= "=") (pointer_expression "*(int *)PTR_nextfree_004b1bf0" (* "*") (cast_expression "(int *)PTR_nextfree_004b1bf0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_nextfree_004b1bf0")))) (; ";")) (expression_statement "*(int **)puVar2 = piVar17;" (assignment_expression "*(int **)puVar2 = piVar17" (pointer_expression "*(int **)puVar2" (* "*") (cast_expression "(int **)puVar2" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar2"))) (= "=") (identifier "piVar17")) (; ";")) (} "}")) (else_clause "else {\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" (else "else") (compound_statement "{\n    iVar11 = piVar17[4];\n    piVar17[4] = iVar11 + -1;\n    if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }\n  }" ({ "{") (expression_statement "iVar11 = piVar17[4];" (assignment_expression "iVar11 = piVar17[4]" (identifier "iVar11") (= "=") (subscript_expression "piVar17[4]" (identifier "piVar17") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "piVar17[4] = iVar11 + -1;" (assignment_expression "piVar17[4] = iVar11 + -1" (subscript_expression "piVar17[4]" (identifier "piVar17") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar11 + -1 < 1) {\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }" (if "if") (parenthesized_expression "(iVar11 + -1 < 1)" (( "(") (binary_expression "iVar11 + -1 < 1" (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      (*(code *)PTR_r_unref_004b1b90)(piVar17);\n      iVar11 = *param_1;\n      goto LAB_0040af80;\n    }" ({ "{") (expression_statement "(*(code *)PTR_r_unref_004b1b90)(piVar17);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(piVar17)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" (( "(") (pointer_expression "*(code *)PTR_r_unref_004b1b90" (* "*") (cast_expression "(code *)PTR_r_unref_004b1b90" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_r_unref_004b1b90"))) () ")")) (argument_list "(piVar17)" (( "(") (identifier "piVar17") () ")"))) (; ";")) (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" (identifier "iVar11") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (goto_statement "goto LAB_0040af80;" (goto "goto") (statement_identifier "LAB_0040af80") (; ";")) (} "}"))) (} "}"))))) (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" (identifier "iVar11") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (labeled_statement "LAB_0040af80:\n  (**(code **)(iVar11 + 0x18))(param_1,iVar12);" (statement_identifier "LAB_0040af80") (: ":") (expression_statement "(**(code **)(iVar11 + 0x18))(param_1,iVar12);" (call_expression "(**(code **)(iVar11 + 0x18))(param_1,iVar12)" (parenthesized_expression "(**(code **)(iVar11 + 0x18))" (( "(") (pointer_expression "**(code **)(iVar11 + 0x18)" (* "*") (pointer_expression "*(code **)(iVar11 + 0x18)" (* "*") (cast_expression "(code **)(iVar11 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + 0x18)" (( "(") (binary_expression "iVar11 + 0x18" (identifier "iVar11") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(param_1,iVar12)" (( "(") (identifier "param_1") (, ",") (identifier "iVar12") () ")"))) (; ";"))) (expression_statement "iVar11 = *(int *)(iVar12 + 0x10) + -1;" (assignment_expression "iVar11 = *(int *)(iVar12 + 0x10) + -1" (identifier "iVar11") (= "=") (binary_expression "*(int *)(iVar12 + 0x10) + -1" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(iVar12 + 0x10) = iVar11;" (assignment_expression "*(int *)(iVar12 + 0x10) = iVar11" (pointer_expression "*(int *)(iVar12 + 0x10)" (* "*") (cast_expression "(int *)(iVar12 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x10)" (( "(") (binary_expression "iVar12 + 0x10" (identifier "iVar12") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar11")) (; ";")) (if_statement "if (iVar11 == 0) {\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }\n  else {\n    iVar11 = param_1[8];\n  }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)PTR_r_unref_004b1b90)(iVar12);\n    iVar11 = param_1[8];\n  }" ({ "{") (expression_statement "(*(code *)PTR_r_unref_004b1b90)(iVar12);" (call_expression "(*(code *)PTR_r_unref_004b1b90)(iVar12)" (parenthesized_expression "(*(code *)PTR_r_unref_004b1b90)" (( "(") (pointer_expression "*(code *)PTR_r_unref_004b1b90" (* "*") (cast_expression "(code *)PTR_r_unref_004b1b90" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_r_unref_004b1b90"))) () ")")) (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")"))) (; ";")) (expression_statement "iVar11 = param_1[8];" (assignment_expression "iVar11 = param_1[8]" (identifier "iVar11") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    iVar11 = param_1[8];\n  }" (else "else") (compound_statement "{\n    iVar11 = param_1[8];\n  }" ({ "{") (expression_statement "iVar11 = param_1[8];" (assignment_expression "iVar11 = param_1[8]" (identifier "iVar11") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (} "}")))) (if_statement "if (iVar11 == 0) {\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    param_1[1] = 0;\n    param_1[7] = 0;\n    param_1[10] = 5;\n    param_1[5] = 0;\n    param_1[0xb] = 0;\n    *param_1 = (int)&PTR_DAT_004af9bc;\n  }" ({ "{") (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[7] = 0;" (assignment_expression "param_1[7] = 0" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[10] = 5;" (assignment_expression "param_1[10] = 5" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "5")) (; ";")) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_1 = (int)&PTR_DAT_004af9bc;" (assignment_expression "*param_1 = (int)&PTR_DAT_004af9bc" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)&PTR_DAT_004af9bc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&PTR_DAT_004af9bc" (& "&") (identifier "PTR_DAT_004af9bc")))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

void function_1(type_1 *symbol,int var_1)

{
  type_2 *puVar1;
  type_3 *puVar2;
  type_3 *puVar3;
  type_3 *puVar4;
  type_3 *puVar5;
  type_2 uVar6;
  char *var_14;
  type_4 **var_10;
  int var_8;
  type_5 *paVar10;
  type_6 var_16;
  size_t var_15;
  int var_4;
  type_1 *pNVar14;
  size_t var_11;
  type_1 *symbol_00;
  char *pcVar16;
  int var_6;
  type_7 *pcVar18;
  int var_7;
  type_1 *var_12;
  
  puVar5 = PTR_stack_ptr_004b1cd8;
  puVar2 = PTR_CONVFMT_004b1c40;
  if (var_1 == 0) {
    var_2(symbol,0);
                    /* WARNING: Could not recover jumptable at 0x0040b278. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*((symbol->sub).nodep.l.lp)->clear)(symbol,(type_4 *)0x0);
    return;
  }
  if (var_1 < 1) {
                    /* WARNING: Does not return */
    pcVar18 = (type_7 *)var_3(0);
    (*pcVar18)();
  }
  var_4 = var_1 * -4;
  symbol_00 = *(type_1 **)(*(int *)PTR_stack_ptr_004b1cd8 + var_4 + 4);
  var_6 = var_1;
  if (symbol_00->type == var_5) goto LAB_0040b088;
LAB_0040ad4c:
  puVar4 = PTR_format_val_004b1c48;
  puVar3 = PTR_CONVFMTidx_004b1c44;
  var_4 = var_4 + 8;
  while (var_6 = var_6 + -1, var_6 != 0) {
    var_7 = *(int *)(*(int *)puVar5 + var_4);
    if (*(int *)(var_7 + 0x28) == 1) {
      if ((*(type_8 *)(var_7 + 0x2c) & 4) == 0) {
LAB_0040b014:
        (**(type_7 **)puVar4)(*(type_2 *)puVar2,*(int *)puVar3,var_7);
LAB_0040b024:
        var_8 = *(int *)(var_7 + 0x10);
      }
      else {
        if (*(int *)(var_7 + 0x14) == -1) goto LAB_0040b024;
        if (*(int *)puVar3 != *(int *)(var_7 + 0x14)) goto LAB_0040b014;
        var_8 = *(int *)(var_7 + 0x10);
      }
      *(int *)(var_7 + 0x10) = var_8 + -1;
      if (var_8 + -1 == 0) {
        (*(type_7 *)PTR_r_unref_004b1b90)(var_7);
      }
    }
    var_4 = var_4 + 4;
  }
  (*(type_7 *)PTR_set_loc_004b1b6c)("array.c",0x238);
  uVar6 = (*(type_7 *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);
  var_14 = var_9(symbol_00);
  (*(type_7 *)PTR_r_fatal_004b1b70)(uVar6,var_14);
  var_10 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);
  var_7 = -1;
  var_4 = 0;
  puVar1 = (type_2 *)PTR_CONVFMT_004b1c40;
  do {
    var_6 = var_7;
    puVar4 = PTR_format_val_004b1c48;
    puVar3 = PTR_CONVFMTidx_004b1c44;
    PTR_CONVFMT_004b1c40 = (type_3 *)puVar1;
    if (var_10 == (type_4 **)0x0) {
LAB_0040b0ac:
      if ((*(type_8 *)PTR_do_flags_004b1b5c & 5) != 0) {
        if (((symbol_00->flags & 4) == 0) ||
           ((var_11 = (symbol_00->sub).nodep.reserved, var_11 != 0xffffffff &&
            (*(size_t *)PTR_CONVFMTidx_004b1c44 != var_11)))) {
          symbol_00 = (type_1 *)(**(type_7 **)PTR_format_val_004b1c48)
                                        (*puVar1,*(size_t *)PTR_CONVFMTidx_004b1c44,symbol_00);
        }
        (*(type_7 *)PTR_set_loc_004b1b6c)("array.c",0x23f);
        pcVar18 = *(type_7 **)PTR_lintfunc_004b1b7c;
        uVar6 = (*(type_7 *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);
        var_11 = (symbol_00->sub).val.slen;
        pcVar16 = (symbol_00->sub).val.sp;
        var_14 = var_9(symbol);
        (*pcVar18)(uVar6,var_11,pcVar16,var_14);
      }
      puVar4 = PTR_format_val_004b1c48;
      puVar3 = PTR_CONVFMTidx_004b1c44;
      puVar2 = PTR_CONVFMT_004b1c40;
      var_6 = var_4 * -4;
      break;
    }
    var_12 = *var_10;
    if (var_12 == (type_1 *)0x0) goto LAB_0040b0ac;
    if (1 < var_4) {
      if (var_12->type != var_13) {
        var_6 = var_4 * -4;
        uVar6 = *puVar1;
        var_11 = *(size_t *)PTR_CONVFMTidx_004b1c44;
        goto LAB_0040ae4c;
      }
      var_14 = (char *)((symbol_00->sub).val.sref + -1);
      (symbol_00->sub).nodep.name = var_14;
      symbol = var_12;
      if (var_14 == (char *)0x0) {
        (*(type_7 *)PTR_r_unref_004b1b90)(symbol_00);
      }
    }
    if (var_6 < 1) goto LAB_0040af5c;
    var_4 = var_6 * -4;
    symbol_00 = *(type_1 **)(*(int *)puVar5 + var_4 + 4);
    if (symbol_00->type != var_5) goto LAB_0040ad4c;
LAB_0040b088:
    var_10 = (*((symbol->sub).nodep.l.lp)->exists)(symbol,symbol_00);
    var_7 = var_6 + -1;
    var_4 = var_6;
    puVar1 = (type_2 *)PTR_CONVFMT_004b1c40;
  } while( true );
LAB_0040b188:
  var_6 = var_6 + 4;
  var_7 = *(int *)(*(int *)puVar5 + var_6);
  if (*(int *)(var_7 + 0x28) == 1) {
    if ((*(type_8 *)(var_7 + 0x2c) & 4) == 0) {
LAB_0040b1b4:
      (**(type_7 **)puVar4)(*(type_2 *)puVar2,*(int *)puVar3,var_7);
LAB_0040b1c4:
      var_8 = *(int *)(var_7 + 0x10);
    }
    else {
      if (*(int *)(var_7 + 0x14) == -1) goto LAB_0040b1c4;
      if (*(int *)puVar3 != *(int *)(var_7 + 0x14)) goto LAB_0040b1b4;
      var_8 = *(int *)(var_7 + 0x10);
    }
    *(int *)(var_7 + 0x10) = var_8 + -1;
    if (var_8 + -1 == 0) {
      (*(type_7 *)PTR_r_unref_004b1b90)(var_7);
    }
  }
  var_4 = var_4 + -1;
  if (var_4 < 1) {
    return;
  }
  goto LAB_0040b188;
LAB_0040ae4c:
  do {
    var_6 = var_6 + 4;
    var_7 = *(int *)(*(int *)puVar5 + var_6);
    if (*(int *)(var_7 + 0x28) == 1) {
      if ((*(type_8 *)(var_7 + 0x2c) & 4) == 0) {
LAB_0040ae74:
        (**(type_7 **)puVar4)(uVar6,var_11,var_7);
LAB_0040ae8c:
        var_8 = *(int *)(var_7 + 0x10);
      }
      else {
        if (*(size_t *)(var_7 + 0x14) == 0xffffffff) goto LAB_0040ae8c;
        if (*(size_t *)(var_7 + 0x14) != var_11) goto LAB_0040ae74;
        var_8 = *(int *)(var_7 + 0x10);
      }
      *(int *)(var_7 + 0x10) = var_8 + -1;
      if (var_8 + -1 == 0) {
        (*(type_7 *)PTR_r_unref_004b1b90)(var_7);
      }
      var_11 = *(size_t *)puVar3;
      uVar6 = *puVar1;
    }
    var_4 = var_4 + -1;
  } while (var_4 != 0);
  if (((symbol_00->flags & 4) == 0) ||
     ((var_15 = (symbol_00->sub).nodep.reserved, var_15 != 0xffffffff && (var_15 != var_11)))) {
    symbol_00 = (type_1 *)(**(type_7 **)PTR_format_val_004b1c48)(uVar6,var_11,symbol_00);
  }
  (*(type_7 *)PTR_set_loc_004b1b6c)("array.c",0x24d);
  uVar6 = (*(type_7 *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)
  ;
  var_14 = var_9(symbol);
  (*(type_7 *)PTR_r_fatal_004b1b70)(uVar6,var_14,(symbol_00->sub).val.slen,(symbol_00->sub).val.sp);
  var_14 = (char *)((symbol_00->sub).val.sref + -1);
  (symbol_00->sub).nodep.name = var_14;
  symbol = var_12;
  if (var_14 == (char *)0x0) {
    (*(type_7 *)PTR_r_unref_004b1b90)(symbol_00);
  }
LAB_0040af5c:
  if (var_12->type == var_13) {
    pNVar14 = var_12;
    var_2(var_12,var_1);
    (*((var_12->sub).nodep.l.lp)->clear)(pNVar14,(type_4 *)0x0);
    (*(type_7 *)PTR_free_004b239c)((var_12->sub).nodep.name);
    puVar2 = PTR_nextfree_004b1bf0;
    (var_12->sub).nodep.l = *(type_9 *)PTR_nextfree_004b1bf0;
    *(type_1 **)puVar2 = var_12;
  }
  else {
    var_6 = (var_12->sub).val.sref + -1;
    (var_12->sub).val.sref = var_6;
    if (var_6 < 1) {
      (*(type_7 *)PTR_r_unref_004b1b90)(var_12);
      paVar10 = (symbol->sub).nodep.l.lp;
      goto LAB_0040af80;
    }
  }
  paVar10 = (symbol->sub).nodep.l.lp;
LAB_0040af80:
  (*paVar10->remove)(symbol,symbol_00);
  var_14 = (char *)((symbol_00->sub).val.sref + -1);
  (symbol_00->sub).nodep.name = var_14;
  if (var_14 == (char *)0x0) {
    (*(type_7 *)PTR_r_unref_004b1b90)(symbol_00);
    var_16 = (symbol->sub).nodep.reflags;
  }
  else {
    var_16 = (symbol->sub).nodep.reflags;
  }
  if (var_16 == 0) {
    *(type_2 *)((int)&symbol->sub + 4) = 0;
    (symbol->sub).nodep.cnt = 0;
    symbol->type = var_13;
    (symbol->sub).nodep.reserved = 0;
    symbol->flags = 0;
    (symbol->sub).nodep.l.lp = &null_array_func;
  }
  return;
}


(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: (type_identifier) declarator: (pointer_declarator 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: (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: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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))) (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 (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))))) (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier)) right: (number_literal))))))) (expression_statement (assignment_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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_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)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (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))) consequence: (compound_statement (labeled_statement label: (statement_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: (identifier))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) (identifier))))) (labeled_statement label: (statement_identifier) (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: (number_literal))))))))) alternative: (else_clause (compound_statement (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: (goto_statement label: (statement_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: (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: (goto_statement label: (statement_identifier))) (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: (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: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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 (string_literal (string_content)) (number_literal)))) (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 (number_literal) (string_literal (string_content) (escape_sequence) (string_content)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (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)))) (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)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (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: (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) (identifier))))))) (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 (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 declarator: (abstract_pointer_declarator))) value: (identifier))))) (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 (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence)) (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 (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (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)))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (goto_statement label: (statement_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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_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))))))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) condition: (parenthesized_expression (true))) (labeled_statement label: (statement_identifier) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (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))) consequence: (compound_statement (labeled_statement label: (statement_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: (identifier))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) (identifier))))) (labeled_statement label: (statement_identifier) (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: (number_literal))))))))) alternative: (else_clause (compound_statement (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: (goto_statement label: (statement_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: (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: (goto_statement label: (statement_identifier))) (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: (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: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (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))) consequence: (compound_statement (labeled_statement label: (statement_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: (identifier))))) arguments: (argument_list (identifier) (identifier) (identifier))))) (labeled_statement label: (statement_identifier) (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: (number_literal))))))))) alternative: (else_clause (compound_statement (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: (goto_statement label: (statement_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: (identifier))) consequence: (goto_statement label: (statement_identifier))) (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: (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: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) arguments: (argument_list (identifier) (identifier) (identifier))))))) (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 (string_literal (string_content)) (number_literal)))) (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 (number_literal) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (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) (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))))) (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: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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 (call_expression function: (identifier) arguments: (argument_list (identifier) (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))) (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 (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (labeled_statement label: (statement_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: (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: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_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))))

void MASKED(int *param_1,int param_2)

{
  undefined4 *puVar1;
  undefined *puVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  undefined4 *puVar8;
  int iVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  undefined4 uVar13;
  undefined4 uVar14;
  code *pcVar15;
  int iVar16;
  int *piVar17;
  
  puVar5 = PTR_stack_ptr_004b1cd8;
  puVar2 = PTR_CONVFMT_004b1c40;
  if (param_2 == 0) {
    FUN_00408a60();
                    /* WARNING: Could not recover jumptable at 0x0040b278. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(*param_1 + 0x14))();
    return;
  }
  if (param_2 < 1) {
                    /* WARNING: Does not return */
    pcVar15 = (code *)trap(0);
    (*pcVar15)();
  }
  iVar9 = param_2 * -4;
  iVar12 = *(int *)(*(int *)PTR_stack_ptr_004b1cd8 + iVar9 + 4);
  iVar11 = param_2;
  if (*(int *)(iVar12 + 0x28) == 1) goto LAB_0040b088;
LAB_0040ad4c:
  puVar4 = PTR_format_val_004b1c48;
  puVar3 = PTR_CONVFMTidx_004b1c44;
  iVar9 = iVar9 + 8;
  while (iVar11 = iVar11 + -1, iVar11 != 0) {
    iVar16 = *(int *)(*(int *)puVar5 + iVar9);
    if (*(int *)(iVar16 + 0x28) == 1) {
      if ((*(uint *)(iVar16 + 0x2c) & 4) == 0) {
LAB_0040b014:
        (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar16);
LAB_0040b024:
        iVar10 = *(int *)(iVar16 + 0x10);
      }
      else {
        if (*(int *)(iVar16 + 0x14) == -1) goto LAB_0040b024;
        if (*(int *)puVar3 != *(int *)(iVar16 + 0x14)) goto LAB_0040b014;
        iVar10 = *(int *)(iVar16 + 0x10);
      }
      *(int *)(iVar16 + 0x10) = iVar10 + -1;
      if (iVar10 + -1 == 0) {
        (*(code *)PTR_r_unref_004b1b90)(iVar16);
      }
    }
    iVar9 = iVar9 + 4;
  }
  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x238);
  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use array `%s\' in a scalar context",5);
  uVar7 = array_vname(iVar12);
  (*(code *)PTR_r_fatal_004b1b70)(uVar6,uVar7);
  puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);
  iVar16 = -1;
  iVar9 = 0;
  puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;
  do {
    iVar11 = iVar16;
    puVar4 = PTR_format_val_004b1c48;
    puVar3 = PTR_CONVFMTidx_004b1c44;
    PTR_CONVFMT_004b1c40 = (undefined *)puVar1;
    if (puVar8 == (undefined4 *)0x0) {
LAB_0040b0ac:
      if ((*(uint *)PTR_do_flags_004b1b5c & 5) != 0) {
        if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||
           ((*(int *)(iVar12 + 0x14) != -1 &&
            (*(int *)PTR_CONVFMTidx_004b1c44 != *(int *)(iVar12 + 0x14))))) {
          iVar12 = (**(code **)PTR_format_val_004b1c48)
                             (*puVar1,*(int *)PTR_CONVFMTidx_004b1c44,iVar12);
        }
        (*(code *)PTR_set_loc_004b1b6c)("array.c",0x23f);
        pcVar15 = *(code **)PTR_lintfunc_004b1b7c;
        uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"delete: index `%.*s\' not in array `%s\'",5);
        uVar14 = *(undefined4 *)(iVar12 + 0xc);
        uVar13 = *(undefined4 *)(iVar12 + 8);
        uVar7 = array_vname(param_1);
        (*pcVar15)(uVar6,uVar14,uVar13,uVar7);
      }
      puVar4 = PTR_format_val_004b1c48;
      puVar3 = PTR_CONVFMTidx_004b1c44;
      puVar2 = PTR_CONVFMT_004b1c40;
      iVar11 = iVar9 * -4;
      break;
    }
    piVar17 = (int *)*puVar8;
    if (piVar17 == (int *)0x0) goto LAB_0040b0ac;
    if (1 < iVar9) {
      if (piVar17[10] != 5) {
        iVar16 = iVar9 * -4;
        uVar6 = *puVar1;
        iVar11 = *(int *)PTR_CONVFMTidx_004b1c44;
        goto LAB_0040ae4c;
      }
      iVar9 = *(int *)(iVar12 + 0x10) + -1;
      *(int *)(iVar12 + 0x10) = iVar9;
      param_1 = piVar17;
      if (iVar9 == 0) {
        (*(code *)PTR_r_unref_004b1b90)(iVar12);
      }
    }
    if (iVar11 < 1) goto LAB_0040af5c;
    iVar9 = iVar11 * -4;
    iVar12 = *(int *)(*(int *)puVar5 + iVar9 + 4);
    if (*(int *)(iVar12 + 0x28) != 1) goto LAB_0040ad4c;
LAB_0040b088:
    puVar8 = (undefined4 *)(**(code **)(*param_1 + 0x10))(param_1,iVar12);
    iVar16 = iVar11 + -1;
    iVar9 = iVar11;
    puVar1 = (undefined4 *)PTR_CONVFMT_004b1c40;
  } while( true );
LAB_0040b188:
  iVar11 = iVar11 + 4;
  iVar12 = *(int *)(*(int *)puVar5 + iVar11);
  if (*(int *)(iVar12 + 0x28) == 1) {
    if ((*(uint *)(iVar12 + 0x2c) & 4) == 0) {
LAB_0040b1b4:
      (**(code **)puVar4)(*(undefined4 *)puVar2,*(int *)puVar3,iVar12);
LAB_0040b1c4:
      iVar16 = *(int *)(iVar12 + 0x10);
    }
    else {
      if (*(int *)(iVar12 + 0x14) == -1) goto LAB_0040b1c4;
      if (*(int *)puVar3 != *(int *)(iVar12 + 0x14)) goto LAB_0040b1b4;
      iVar16 = *(int *)(iVar12 + 0x10);
    }
    *(int *)(iVar12 + 0x10) = iVar16 + -1;
    if (iVar16 + -1 == 0) {
      (*(code *)PTR_r_unref_004b1b90)(iVar12);
    }
  }
  iVar9 = iVar9 + -1;
  if (iVar9 < 1) {
    return;
  }
  goto LAB_0040b188;
LAB_0040ae4c:
  do {
    iVar16 = iVar16 + 4;
    iVar10 = *(int *)(*(int *)puVar5 + iVar16);
    if (*(int *)(iVar10 + 0x28) == 1) {
      if ((*(uint *)(iVar10 + 0x2c) & 4) == 0) {
LAB_0040ae74:
        (**(code **)puVar4)(uVar6,iVar11,iVar10);
LAB_0040ae8c:
        iVar11 = *(int *)(iVar10 + 0x10);
      }
      else {
        if (*(int *)(iVar10 + 0x14) == -1) goto LAB_0040ae8c;
        if (*(int *)(iVar10 + 0x14) != iVar11) goto LAB_0040ae74;
        iVar11 = *(int *)(iVar10 + 0x10);
      }
      *(int *)(iVar10 + 0x10) = iVar11 + -1;
      if (iVar11 + -1 == 0) {
        (*(code *)PTR_r_unref_004b1b90)(iVar10);
      }
      iVar11 = *(int *)puVar3;
      uVar6 = *puVar1;
    }
    iVar9 = iVar9 + -1;
  } while (iVar9 != 0);
  if (((*(uint *)(iVar12 + 0x2c) & 4) == 0) ||
     ((*(int *)(iVar12 + 0x14) != -1 && (*(int *)(iVar12 + 0x14) != iVar11)))) {
    iVar12 = (**(code **)PTR_format_val_004b1c48)(uVar6,iVar11,iVar12);
  }
  (*(code *)PTR_set_loc_004b1b6c)("array.c",0x24d);
  uVar6 = (*(code *)PTR_dcgettext_004b235c)(0,"attempt to use scalar `%s[\"%.*s\"]\' as an array",5)
  ;
  uVar7 = array_vname(param_1);
  (*(code *)PTR_r_fatal_004b1b70)
            (uVar6,uVar7,*(undefined4 *)(iVar12 + 0xc),*(undefined4 *)(iVar12 + 8));
  iVar11 = *(int *)(iVar12 + 0x10) + -1;
  *(int *)(iVar12 + 0x10) = iVar11;
  param_1 = piVar17;
  if (iVar11 == 0) {
    (*(code *)PTR_r_unref_004b1b90)(iVar12);
  }
LAB_0040af5c:
  if (piVar17[10] == 5) {
    FUN_00408a60(piVar17,param_2);
    (**(code **)(*piVar17 + 0x14))();
    (*(code *)PTR_free_004b239c)(piVar17[4]);
    puVar2 = PTR_nextfree_004b1bf0;
    *piVar17 = *(int *)PTR_nextfree_004b1bf0;
    *(int **)puVar2 = piVar17;
  }
  else {
    iVar11 = piVar17[4];
    piVar17[4] = iVar11 + -1;
    if (iVar11 + -1 < 1) {
      (*(code *)PTR_r_unref_004b1b90)(piVar17);
      iVar11 = *param_1;
      goto LAB_0040af80;
    }
  }
  iVar11 = *param_1;
LAB_0040af80:
  (**(code **)(iVar11 + 0x18))(param_1,iVar12);
  iVar11 = *(int *)(iVar12 + 0x10) + -1;
  *(int *)(iVar12 + 0x10) = iVar11;
  if (iVar11 == 0) {
    (*(code *)PTR_r_unref_004b1b90)(iVar12);
    iVar11 = param_1[8];
  }
  else {
    iVar11 = param_1[8];
  }
  if (iVar11 == 0) {
    param_1[1] = 0;
    param_1[7] = 0;
    param_1[10] = 5;
    param_1[5] = 0;
    param_1[0xb] = 0;
    *param_1 = (int)&PTR_DAT_004af9bc;
  }
  return;
}

