
reg_errcode_t
expand_bkref_cache(re_match_context_t *mctx,re_node_set *cur_nodes,Idx cur_str,Idx subexp_num,
                  int type)

{
  char *pcVar1;
  re_dfastate_t **pprVar2;
  undefined *puVar3;
  int iVar4;
  bitset_word_t bVar5;
  re_dfastate_t **pprVar6;
  code *pcVar7;
  code *pcVar8;
  code *pcVar9;
  Idx IVar10;
  reg_errcode_t rVar11;
  reg_errcode_t rVar12;
  reg_errcode_t rVar13;
  uint *puVar14;
  int *piVar15;
  int iVar16;
  re_dfastate_t **pprVar17;
  uint uVar18;
  int iVar19;
  re_dfastate_t **pprVar20;
  re_dfa_t *prVar21;
  re_dfa_t *elem;
  re_token_t *prVar22;
  re_dfastate_t *prVar23;
  re_node_set *set;
  int iVar24;
  re_dfa_t *prVar25;
  int iVar26;
  int *piVar27;
  Idx **elem_00;
  re_backref_cache_entry *prVar28;
  re_dfa_t *dfa;
  undefined *puVar29;
  int iVar30;
  re_dfa_t *prStack_60;
  reg_errcode_t err;
  re_node_set new_dests;
  
  puVar29 = PTR___stack_chk_guard_000534f0;
  iVar4 = *(int *)PTR___stack_chk_guard_000534f0;
  prVar21 = (re_dfa_t *)0x0;
  pprVar17 = (re_dfastate_t **)mctx->nbkref_ents;
  prStack_60 = (re_dfa_t *)cur_str;
  pprVar6 = (re_dfastate_t **)subexp_num;
  while ((int)prVar21 < (int)pprVar17) {
    prStack_60 = (re_dfa_t *)mctx->bkref_ents;
    pprVar20 = (re_dfastate_t **)(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2);
    bVar5 = prStack_60->word_char[(int)pprVar20 * 5 + -0x17];
    while (pprVar2 = pprVar20, cur_str <= (int)bVar5) {
      if ((int)pprVar2 <= (int)prVar21) goto LAB_0002dc5c;
      pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2);
      pprVar20 = pprVar6;
      pprVar17 = pprVar2;
      bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17];
    }
    pprVar6 = pprVar2;
    prVar21 = (re_dfa_t *)((int)pprVar2 + 1);
  }
LAB_0002dc5c:
  rVar13 = _REG_NOERROR;
  prVar25 = prVar21;
  if ((int)prVar21 < (int)mctx->nbkref_ents) {
    prVar28 = mctx->bkref_ents + (int)prVar21;
    rVar13 = _REG_NOERROR;
    if (cur_str == prVar28->str_idx) {
      elem_00 = &cur_nodes->elems;
      if (prVar21 == (re_dfa_t *)0xffffffff) {
        rVar13 = _REG_NOERROR;
      }
      else {
        dfa = mctx->dfa;
        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);
        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);
        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);
        pprVar17 = pprVar6;
LAB_0002ddac:
        do {
          prStack_60 = (re_dfa_t *)prVar28->node;
          set = (re_node_set *)cur_nodes->nelem;
          elem = (re_dfa_t *)elem_00;
          prVar25 = prStack_60;
          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);
          if (IVar10 != 0) {
            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;
            if (cur_str == iVar24) {
              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;
              elem = (re_dfa_t *)elem_00;
              prStack_60 = prVar25;
              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);
              if (IVar10 == 0) {
                new_dests.alloc = 1;
                new_dests.nelem = 1;
                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);
                if (new_dests.elems == (Idx *)0x0) {
                  new_dests.nelem = 0;
                  err = _REG_ESPACE;
                  new_dests.alloc = 0;
                }
                else {
                  *new_dests.elems = (Idx)prVar25;
                  err = _REG_NOERROR;
                }
                prVar25 = (re_dfa_t *)&new_dests;
                prStack_60 = (re_dfa_t *)subexp_num;
                pprVar17 = (re_dfastate_t **)type;
                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);
                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);
                (*(code *)PTR_free_000534fc)(new_dests.elems);
                rVar13 = err;
                pprVar6 = pprVar17;
                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||
                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;
                prVar28 = mctx->bkref_ents + (int)prVar21;
                goto LAB_0002ddac;
              }
            }
            else {
              pprVar17 = mctx->state_log + iVar24;
              prVar23 = *pprVar17;
              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];
              if (prVar23 == (re_dfastate_t *)0x0) {
                new_dests.alloc = 1;
                new_dests.nelem = 1;
                pprVar6 = pprVar17;
                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);
                if (new_dests.elems == (Idx *)0x0) {
LAB_0002df78:
                  rVar13 = _REG_ESPACE;
                  prVar25 = elem;
                  break;
                }
                *new_dests.elems = (Idx)prVar25;
                err = _REG_NOERROR;
              }
              else {
                elem = (re_dfa_t *)&(prVar23->nodes).elems;
                prStack_60 = prVar25;
                IVar10 = re_node_set_contains
                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,
                                    (re_node_set *)prVar25);
                if (IVar10 != 0) goto LAB_0002dda0;
                err = (*pcVar8)(&new_dests,&prVar23->nodes);
                iVar26 = (*pcVar9)(&new_dests);
                if ((err != _REG_NOERROR) || (iVar26 == 0)) {
                  (*(code *)PTR_free_000534fc)(new_dests.elems);
                  rVar13 = err;
                  elem = prVar25;
                  pprVar6 = pprVar17;
                  if (err == _REG_NOERROR) goto LAB_0002df78;
                  break;
                }
                pprVar17 = mctx->state_log + iVar24;
              }
              prStack_60 = (re_dfa_t *)&new_dests;
              elem = dfa;
              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);
              puVar3 = PTR_free_000534fc;
              *pprVar17 = prVar23;
              (*(code *)puVar3)(new_dests.elems);
              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&
                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;
            }
          }
LAB_0002dda0:
          pcVar1 = &prVar28->more;
          rVar13 = _REG_NOERROR;
          prVar25 = elem;
          pprVar6 = pprVar17;
          prVar28 = prVar28 + 1;
        } while (*pcVar1 != '\0');
      }
    }
  }
  if (iVar4 == *(int *)puVar29) {
    return rVar13;
  }
  puVar29 = PTR___stack_chk_fail_000534d4;
  (*(code *)PTR___stack_chk_fail_000534d4)();
  prVar22 = prVar25->nodes;
  piVar27 = *(int **)(iVar4 + 0x54);
  if (0 < (int)prVar22) {
    iVar24 = 0;
    do {
      while( true ) {
        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;
        puVar14 = (uint *)(*piVar27 + iVar26 * 8);
        iVar24 = iVar24 + 1;
        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&
           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;
        if ((int)prVar22 <= iVar24) {
          return _REG_NOERROR;
        }
      }
      iVar19 = *(int *)(iVar4 + 0x7c);
      iVar30 = *(int *)(iVar4 + 0x84);
      if (iVar19 == *(int *)(iVar4 + 0x80)) {
        iVar16 = iVar19 << 1;
        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);
        if (iVar30 == 0) {
          return _REG_ESPACE;
        }
        iVar19 = *(int *)(iVar4 + 0x7c);
        *(int *)(iVar4 + 0x84) = iVar30;
        *(int *)(iVar4 + 0x80) = iVar16;
      }
      piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18);
      *(int **)(iVar30 + iVar19 * 4) = piVar15;
      if (piVar15 == (int *)0x0) {
        return _REG_ESPACE;
      }
      *(int *)(iVar4 + 0x7c) = iVar19 + 1;
      piVar15[1] = iVar26;
      *piVar15 = (int)pprVar6;
      prVar22 = prVar25->nodes;
    } while (iVar24 < (int)prVar22);
  }
  return _REG_NOERROR;
}



/* WARNING: Type propagation algorithm not settling */

int FUN_0002db70(int param_1,int param_2,int *param_3,int *param_4,int *param_5)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  code *pcVar4;
  code *pcVar5;
  code *pcVar6;
  int iVar7;
  int iVar8;
  uint *puVar9;
  int iVar10;
  int *piVar11;
  uint uVar12;
  int iVar13;
  int *piVar14;
  int *piVar15;
  int *piVar16;
  undefined4 uVar17;
  int *piVar18;
  int *piVar19;
  int *piVar20;
  undefined *puVar21;
  int local_3c [3];
  int *local_30;
  int local_2c;
  
  puVar21 = PTR___stack_chk_guard_000534f0;
  local_2c = *(int *)PTR___stack_chk_guard_000534f0;
  piVar15 = (int *)0x0;
  piVar11 = *(int **)(param_1 + 0x6c);
  piVar16 = param_3;
  piVar19 = param_4;
  while ((int)piVar15 < (int)piVar11) {
    piVar16 = *(int **)(param_1 + 0x74);
    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);
    iVar2 = piVar16[(int)piVar14 * 5 + 1];
    while (piVar20 = piVar14, (int)param_3 <= iVar2) {
      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;
      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);
      piVar14 = piVar19;
      piVar11 = piVar20;
      iVar2 = piVar16[(int)piVar19 * 5 + 1];
    }
    piVar19 = piVar20;
    piVar15 = (int *)((int)piVar20 + 1);
  }
LAB_0002dc5c:
  iVar2 = 0;
  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {
    iVar3 = (int)piVar15 * 0x14;
    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);
    iVar2 = 0;
    if (param_3 == (int *)piVar11[1]) {
      if (piVar15 == (int *)0xffffffff) {
        iVar2 = 0;
      }
      else {
        piVar20 = *(int **)(param_1 + 0x54);
        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);
        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);
        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);
        piVar14 = piVar19;
LAB_0002ddac:
        do {
          piVar16 = (int *)*piVar11;
          uVar17 = *(undefined4 *)(param_2 + 4);
          piVar15 = (int *)(param_2 + 8);
          piVar19 = piVar16;
          iVar2 = FUN_0002b8c0(uVar17);
          if (iVar2 != 0) {
            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));
            iVar2 = (int)piVar18 * 4;
            if (param_3 == piVar18) {
              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);
              piVar15 = (int *)(param_2 + 8);
              piVar16 = piVar19;
              iVar2 = FUN_0002b8c0(uVar17);
              if (iVar2 == 0) {
                local_3c[1] = 1;
                local_3c[2] = 1;
                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);
                if (local_30 == (int *)0x0) {
                  local_3c[2] = 0;
                  local_3c[0] = 0xc;
                  local_3c[1] = 0;
                }
                else {
                  *local_30 = (int)piVar19;
                  local_3c[0] = 0;
                }
                piVar15 = local_3c + 1;
                piVar16 = param_4;
                piVar14 = param_5;
                iVar7 = FUN_0002c5d8(piVar20,piVar15);
                iVar8 = FUN_0002c03c(param_2);
                (*(code *)PTR_free_000534fc)(local_30);
                iVar2 = local_3c[0];
                piVar19 = piVar14;
                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||
                   (iVar2 = iVar8, iVar8 != 0)) break;
                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);
                goto LAB_0002ddac;
              }
            }
            else {
              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);
              iVar7 = *piVar14;
              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);
              if (iVar7 == 0) {
                local_3c[1] = 1;
                local_3c[2] = 1;
                piVar19 = piVar14;
                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);
                if (local_30 == (int *)0x0) {
LAB_0002df78:
                  iVar2 = 0xc;
                  break;
                }
                *local_30 = (int)piVar18;
                local_3c[0] = 0;
              }
              else {
                piVar15 = (int *)(iVar7 + 0xc);
                piVar16 = piVar18;
                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));
                if (iVar8 != 0) goto LAB_0002dda0;
                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);
                iVar7 = (*pcVar6)(local_3c + 1);
                if ((local_3c[0] != 0) || (iVar7 == 0)) {
                  (*(code *)PTR_free_000534fc)(local_30);
                  iVar2 = local_3c[0];
                  piVar15 = piVar18;
                  piVar19 = piVar14;
                  if (local_3c[0] == 0) goto LAB_0002df78;
                  break;
                }
                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);
              }
              piVar16 = local_3c + 1;
              piVar15 = piVar20;
              iVar7 = (*pcVar4)(local_3c);
              puVar1 = PTR_free_000534fc;
              *piVar14 = iVar7;
              (*(code *)puVar1)(local_30);
              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&
                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;
            }
          }
LAB_0002dda0:
          piVar18 = piVar11 + 4;
          iVar2 = 0;
          piVar19 = piVar14;
          piVar11 = piVar11 + 5;
        } while (*(char *)piVar18 != '\0');
      }
    }
  }
  if (local_2c == *(int *)puVar21) {
    return iVar2;
  }
  iVar2 = local_2c;
  puVar21 = PTR___stack_chk_fail_000534d4;
  (*(code *)PTR___stack_chk_fail_000534d4)();
  iVar3 = *piVar15;
  piVar11 = *(int **)(iVar2 + 0x54);
  if (0 < iVar3) {
    iVar7 = 0;
    do {
      while( true ) {
        iVar8 = *(int *)(*piVar16 + iVar7 * 4);
        puVar9 = (uint *)(*piVar11 + iVar8 * 8);
        iVar7 = iVar7 + 1;
        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&
           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;
        if (iVar3 <= iVar7) {
          return 0;
        }
      }
      iVar13 = *(int *)(iVar2 + 0x7c);
      iVar3 = *(int *)(iVar2 + 0x84);
      if (iVar13 == *(int *)(iVar2 + 0x80)) {
        iVar10 = iVar13 << 1;
        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);
        if (iVar3 == 0) {
          return 0xc;
        }
        iVar13 = *(int *)(iVar2 + 0x7c);
        *(int *)(iVar2 + 0x84) = iVar3;
        *(int *)(iVar2 + 0x80) = iVar10;
      }
      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);
      *(int **)(iVar3 + iVar13 * 4) = piVar14;
      if (piVar14 == (int *)0x0) {
        return 0xc;
      }
      *(int *)(iVar2 + 0x7c) = iVar13 + 1;
      piVar14[1] = iVar8;
      *piVar14 = (int)piVar19;
      iVar3 = *piVar15;
    } while (iVar7 < iVar3);
  }
  return 0;
}


lui gp,0x3
addiu gp,gp,-0x2a90
addu gp,gp,t9
lw v0,-0x7bf0(gp)
addiu sp,sp,-0x78
lw t0,0x6c(a0)
sw v0,0x2c(sp)
sw s4,0x60(sp)
or s4,a1,zero
sw s3,0x5c(sp)
or a1,zero,zero
sw s1,0x54(sp)
or s3,a0,zero
sw gp,0x10(sp)
or s1,a2,zero
sw ra,0x74(sp)
or v1,t0,zero
sw s8,0x70(sp)
sw s7,0x6c(sp)
sw s6,0x68(sp)
sw s5,0x64(sp)
sw s2,0x58(sp)
sw s0,0x50(sp)
sw a3,0x84(sp)
lw v0,0x0(v0)
sw v0,0x4c(sp)
slt v0,a1,v1
beq v0,zero,0x0002dc5c
_nop
addu a0,a1,v1
lw a2,0x74(s3)
srl v0,a0,0x1f
addu a0,v0,a0
sra a0,a0,0x1
sll v0,a0,0x2
addu v0,v0,a0
sll v0,v0,0x2
addu v0,a2,v0
lw v0,0x4(v0)
slt v0,v0,s1
beq v0,zero,0x0002dc54
_slt v0,a1,a0
b 0x0002df08
_or a3,a0,zero
srl v0,v1,0x1f
addu v0,v0,v1
sra v0,v0,0x1
sll v1,v0,0x2
addu v1,v1,v0
sll v1,v1,0x2
addu v1,a2,v1
lw v1,0x4(v1)
slt v1,v1,s1
bne v1,zero,0x0002df0c
_or a3,v0,zero
or a0,v0,zero
slt v0,a1,a0
bne v0,zero,0x0002dc20
_addu v1,a1,a0
slt t0,a1,t0
beq t0,zero,0x0002dec8
_or v0,zero,zero
sll v0,a1,0x2
lw v1,0x74(s3)
addu v0,v0,a1
sll v0,v0,0x2
addu v1,v1,v0
sw v0,0x34(sp)
lw v0,0x4(v1)
bne s1,v0,0x0002dec8
_or v0,zero,zero
li v0,-0x1
beq a1,v0,0x0002df58
_addiu s5,s4,0x8
lw v0,-0x7db4(gp)
lw s2,-0x7db4(gp)
lw s7,0x54(s3)
addiu v0,v0,-0x28b4
addiu s2,s2,-0x4740
sw v0,0x20(sp)
lw v0,-0x7db4(gp)
sw v0,0x30(sp)
lw v0,-0x7db4(gp)
addiu v0,v0,-0x2f90
sw v0,0x24(sp)
lw v0,-0x7db4(gp)
addiu v0,v0,-0x6548
sw v0,0x28(sp)
b 0x0002ddac
_or s6,v1,zero
lw a3,0x64(s3)
lw v0,0xc(s7)
sll t0,t0,0x2
addu a3,a3,s0
addu t0,v0,t0
lw t1,0x0(a3)
beq t1,zero,0x0002df18
_lw s8,0x0(t0)
lw a0,0x8(t1)
addiu a1,t1,0xc
bal 0x0002b8c0
_or a2,s8,zero
bne v0,zero,0x0002dd9c
_lw gp,0x10(sp)
addiu v0,sp,0x40
lw t9,0x24(sp)
addiu a1,t1,0x4
or a0,v0,zero
jalr t9
_sw v0,0x18(sp)
or a1,s8,zero
lw a0,0x18(sp)
lw t9,0x28(sp)
jalr t9
_sw v0,0x3c(sp)
lw a0,0x3c(sp)
bne a0,zero,0x0002df60
_lw gp,0x10(sp)
beq v0,zero,0x0002df64
_lw t9,-0x7be4(gp)
lw a3,0x64(s3)
addu a3,a3,s0
lw a2,0x18(sp)
addiu a0,sp,0x3c
lw t9,0x20(sp)
or a1,s7,zero
jalr t9
_sw a3,0x1c(sp)
lw gp,0x10(sp)
lw a3,0x1c(sp)
lw a0,0x48(sp)
lw t9,-0x7be4(gp)
jalr t9
_sw v0,0x0(a3)
lw v0,0x64(s3)
addu s0,v0,s0
lw v0,0x0(s0)
beq v0,zero,0x0002df80
_lw gp,0x10(sp)
addiu s6,s6,0x14
lb v0,-0x4(s6)
beq v0,zero,0x0002dec8
_or v0,zero,zero
lw t0,0x0(s6)
or a1,s5,zero
lw t1,0x4(s4)
or t9,s2,zero
or a2,t0,zero
bal 0x0002b8c0
_or a0,t1,zero
beq v0,zero,0x0002dd9c
_lw gp,0x10(sp)
lw s0,0xc(s6)
lw v0,0x8(s6)
addu s0,s1,s0
subu s0,s0,v0
bne s1,s0,0x0002dcd8
_sll s0,s0,0x2
sll v0,t0,0x1
lw a2,0x14(s7)
or a1,s5,zero
addu t0,v0,t0
or a0,t1,zero
sll t0,t0,0x2
addu t0,a2,t0
lw v0,0x8(t0)
lw s0,0x0(v0)
bal 0x0002b8c0
_or a2,s0,zero
lw gp,0x10(sp)
bne v0,zero,0x0002dd9c
_or s8,v0,zero
li v0,0x1
lw t9,-0x7c6c(gp)
li a0,0x4
sw v0,0x40(sp)
jalr t9
_sw v0,0x44(sp)
beq v0,zero,0x0002df98
_sw v0,0x48(sp)
sw s0,0x0(v0)
lw v1,0x30(sp)
addiu v0,sp,0x40
lw a3,0x88(sp)
or a0,s7,zero
lw a2,0x84(sp)
or a1,v0,zero
addiu t9,v1,-0x3a28
sw s8,0x3c(sp)
bal 0x0002c5d8
_or s0,v0,zero
or a1,s0,zero
lw gp,0x10(sp)
or a0,s4,zero
lw t9,-0x7db4(gp)
addiu t9,t9,-0x3fc4
bal 0x0002c03c
_or s0,v0,zero
lw gp,0x10(sp)
or s6,v0,zero
lw t9,-0x7be4(gp)
jalr t9
_lw a0,0x48(sp)
lw v0,0x3c(sp)
bne v0,zero,0x0002dec8
_lw gp,0x10(sp)
bne s0,zero,0x0002dec8
_or v0,s0,zero
bne s6,zero,0x0002dec8
_or v0,s6,zero
lw v1,0x74(s3)
lw v0,0x34(sp)
b 0x0002dcd0
_addu v1,v1,v0
lw v1,0x2c(sp)
lw a0,0x4c(sp)
lw v1,0x0(v1)
bne a0,v1,0x0002dfa8
_lw ra,0x74(sp)
lw s8,0x70(sp)
lw s7,0x6c(sp)
lw s6,0x68(sp)
lw s5,0x64(sp)
lw s4,0x60(sp)
lw s3,0x5c(sp)
lw s2,0x58(sp)
lw s1,0x54(sp)
lw s0,0x50(sp)
jr ra
_addiu sp,sp,0x78
or a0,v1,zero
addiu a1,a3,0x1
b 0x0002dbd8
_or v1,a0,zero
lw t9,-0x7c6c(gp)
li v0,0x1
li a0,0x4
sw a3,0x1c(sp)
sw v0,0x40(sp)
jalr t9
_sw v0,0x44(sp)
lw gp,0x10(sp)
beq v0,zero,0x0002df78
_sw v0,0x48(sp)
addiu v1,sp,0x40
lw a3,0x1c(sp)
sw s8,0x0(v0)
sw v1,0x18(sp)
b 0x0002dd58
_sw zero,0x3c(sp)
b 0x0002dec8
_or v0,zero,zero
lw t9,-0x7be4(gp)
jalr t9
_lw a0,0x48(sp)
lw v0,0x3c(sp)
bne v0,zero,0x0002dec8
_lw gp,0x10(sp)
b 0x0002dec8
_li v0,0xc
lw v0,0x3c(sp)
beq v0,zero,0x0002dda0
_addiu s6,s6,0x14
addiu s6,s6,-0x14
b 0x0002decc
_lw v1,0x2c(sp)
sw zero,0x44(sp)
li s8,0xc
b 0x0002de44
_sw zero,0x40(sp)
lw t9,-0x7c0c(gp)
jalr t9
_nop
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nint FUN_0002db70(int param_1,int param_2,int *param_3,int *param_4,int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int *piVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  undefined4 uVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  undefined *puVar21;\n  int local_3c [3];\n  int *local_30;\n  int local_2c;\n  \n  puVar21 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar15 = (int *)0x0;\n  piVar11 = *(int **)(param_1 + 0x6c);\n  piVar16 = param_3;\n  piVar19 = param_4;\n  while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }\nLAB_0002dc5c:\n  iVar2 = 0;\n  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }\n  if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }\n  iVar2 = local_2c;\n  puVar21 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  iVar3 = *piVar15;\n  piVar11 = *(int **)(iVar2 + 0x54);\n  if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }\n  return 0;\n}\n\n" comment (function_definition "int FUN_0002db70(int param_1,int param_2,int *param_3,int *param_4,int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int *piVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  undefined4 uVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  undefined *puVar21;\n  int local_3c [3];\n  int *local_30;\n  int local_2c;\n  \n  puVar21 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar15 = (int *)0x0;\n  piVar11 = *(int **)(param_1 + 0x6c);\n  piVar16 = param_3;\n  piVar19 = param_4;\n  while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }\nLAB_0002dc5c:\n  iVar2 = 0;\n  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }\n  if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }\n  iVar2 = local_2c;\n  puVar21 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  iVar3 = *piVar15;\n  piVar11 = *(int **)(iVar2 + 0x54);\n  if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }\n  return 0;\n}" primitive_type (function_declarator "FUN_0002db70(int param_1,int param_2,int *param_3,int *param_4,int *param_5)" identifier (parameter_list "(int param_1,int param_2,int *param_3,int *param_4,int *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int *piVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  undefined4 uVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  undefined *puVar21;\n  int local_3c [3];\n  int *local_30;\n  int local_2c;\n  \n  puVar21 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar15 = (int *)0x0;\n  piVar11 = *(int **)(param_1 + 0x6c);\n  piVar16 = param_3;\n  piVar19 = param_4;\n  while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }\nLAB_0002dc5c:\n  iVar2 = 0;\n  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }\n  if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }\n  iVar2 = local_2c;\n  puVar21 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  iVar3 = *piVar15;\n  piVar11 = *(int **)(iVar2 + 0x54);\n  if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "undefined4 uVar17;" type_identifier identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "undefined *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar21 = PTR___stack_chk_guard_000534f0;" (assignment_expression "puVar21 = PTR___stack_chk_guard_000534f0" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000534f0;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000534f0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000534f0" * (cast_expression "(int *)PTR___stack_chk_guard_000534f0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar15 = (int *)0x0;" (assignment_expression "piVar15 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar11 = *(int **)(param_1 + 0x6c);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x6c)" identifier = (pointer_expression "*(int **)(param_1 + 0x6c)" * (cast_expression "(int **)(param_1 + 0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "piVar16 = param_3;" (assignment_expression "piVar16 = param_3" identifier = identifier) ;) (expression_statement "piVar19 = param_4;" (assignment_expression "piVar19 = param_4" identifier = identifier) ;) (while_statement "while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }" while (parenthesized_expression "((int)piVar15 < (int)piVar11)" ( (binary_expression "(int)piVar15 < (int)piVar11" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }" { (expression_statement "piVar16 = *(int **)(param_1 + 0x74);" (assignment_expression "piVar16 = *(int **)(param_1 + 0x74)" identifier = (pointer_expression "*(int **)(param_1 + 0x74)" * (cast_expression "(int **)(param_1 + 0x74)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) ))))) ;) (expression_statement "piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);" (assignment_expression "piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2)" identifier = (cast_expression "(int *)(((int)piVar15 + (int)piVar11) / 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)piVar15 + (int)piVar11) / 2)" ( (binary_expression "((int)piVar15 + (int)piVar11) / 2" (parenthesized_expression "((int)piVar15 + (int)piVar11)" ( (binary_expression "(int)piVar15 + (int)piVar11" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) / number_literal) )))) ;) (expression_statement "iVar2 = piVar16[(int)piVar14 * 5 + 1];" (assignment_expression "iVar2 = piVar16[(int)piVar14 * 5 + 1]" identifier = (subscript_expression "piVar16[(int)piVar14 * 5 + 1]" identifier [ (binary_expression "(int)piVar14 * 5 + 1" (binary_expression "(int)piVar14 * 5" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ])) ;) (while_statement "while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }" while (parenthesized_expression "(piVar20 = piVar14, (int)param_3 <= iVar2)" ( (comma_expression "piVar20 = piVar14, (int)param_3 <= iVar2" (assignment_expression "piVar20 = piVar14" identifier = identifier) , (binary_expression "(int)param_3 <= iVar2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier)) )) (compound_statement "{\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }" { (if_statement "if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;" if (parenthesized_expression "((int)piVar20 <= (int)piVar15)" ( (binary_expression "(int)piVar20 <= (int)piVar15" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002dc5c;" goto statement_identifier ;)) (expression_statement "piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);" (assignment_expression "piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2)" identifier = (cast_expression "(int *)(((int)piVar15 + (int)piVar20) / 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)piVar15 + (int)piVar20) / 2)" ( (binary_expression "((int)piVar15 + (int)piVar20) / 2" (parenthesized_expression "((int)piVar15 + (int)piVar20)" ( (binary_expression "(int)piVar15 + (int)piVar20" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) / number_literal) )))) ;) (expression_statement "piVar14 = piVar19;" (assignment_expression "piVar14 = piVar19" identifier = identifier) ;) (expression_statement "piVar11 = piVar20;" (assignment_expression "piVar11 = piVar20" identifier = identifier) ;) (expression_statement "iVar2 = piVar16[(int)piVar19 * 5 + 1];" (assignment_expression "iVar2 = piVar16[(int)piVar19 * 5 + 1]" identifier = (subscript_expression "piVar16[(int)piVar19 * 5 + 1]" identifier [ (binary_expression "(int)piVar19 * 5 + 1" (binary_expression "(int)piVar19 * 5" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ])) ;) })) (expression_statement "piVar19 = piVar20;" (assignment_expression "piVar19 = piVar20" identifier = identifier) ;) (expression_statement "piVar15 = (int *)((int)piVar20 + 1);" (assignment_expression "piVar15 = (int *)((int)piVar20 + 1)" identifier = (cast_expression "(int *)((int)piVar20 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 + 1)" ( (binary_expression "(int)piVar20 + 1" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (labeled_statement "LAB_0002dc5c:\n  iVar2 = 0;" statement_identifier : (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;)) (if_statement "if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }" if (parenthesized_expression "((int)piVar15 < (int)*(int **)(param_1 + 0x6c))" ( (binary_expression "(int)piVar15 < (int)*(int **)(param_1 + 0x6c)" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*(int **)(param_1 + 0x6c)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(int **)(param_1 + 0x6c)" * (cast_expression "(int **)(param_1 + 0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))))) )) (compound_statement "{\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }" { (expression_statement "iVar3 = (int)piVar15 * 0x14;" (assignment_expression "iVar3 = (int)piVar15 * 0x14" identifier = (binary_expression "(int)piVar15 * 0x14" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);" (assignment_expression "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 0x74) + iVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + iVar3)" ( (binary_expression "*(int *)(param_1 + 0x74) + iVar3" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }" if (parenthesized_expression "(param_3 == (int *)piVar11[1])" ( (binary_expression "param_3 == (int *)piVar11[1]" identifier == (cast_expression "(int *)piVar11[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }" { (if_statement "if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }" if (parenthesized_expression "(piVar15 == (int *)0xffffffff)" ( (binary_expression "piVar15 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }" else (compound_statement "{\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }" { (expression_statement "piVar20 = *(int **)(param_1 + 0x54);" (assignment_expression "piVar20 = *(int **)(param_1 + 0x54)" identifier = (pointer_expression "*(int **)(param_1 + 0x54)" * (cast_expression "(int **)(param_1 + 0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x28b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x28b4)" ( (binary_expression "PTR_LAB_0005332c + -0x28b4" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x2f90)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x2f90)" ( (binary_expression "PTR_LAB_0005332c + -0x2f90" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x6548)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x6548)" ( (binary_expression "PTR_LAB_0005332c + -0x6548" identifier + number_literal) )))) ;) (expression_statement "piVar14 = piVar19;" (assignment_expression "piVar14 = piVar19" identifier = identifier) ;) (labeled_statement "LAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');" statement_identifier : (do_statement "do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');" do (compound_statement "{\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        }" { (expression_statement "piVar16 = (int *)*piVar11;" (assignment_expression "piVar16 = (int *)*piVar11" identifier = (cast_expression "(int *)*piVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier))) ;) (expression_statement "uVar17 = *(undefined4 *)(param_2 + 4);" (assignment_expression "uVar17 = *(undefined4 *)(param_2 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar15 = (int *)(param_2 + 8);" (assignment_expression "piVar15 = (int *)(param_2 + 8)" identifier = (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) ;) (expression_statement "piVar19 = piVar16;" (assignment_expression "piVar19 = piVar16" identifier = identifier) ;) (expression_statement "iVar2 = FUN_0002b8c0(uVar17);" (assignment_expression "iVar2 = FUN_0002b8c0(uVar17)" identifier = (call_expression "FUN_0002b8c0(uVar17)" identifier (argument_list "(uVar17)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }" { (expression_statement "piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));" (assignment_expression "piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]))" identifier = (cast_expression "(int *)((int)param_3 + (piVar11[3] - piVar11[2]))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + (piVar11[3] - piVar11[2]))" ( (binary_expression "(int)param_3 + (piVar11[3] - piVar11[2])" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(piVar11[3] - piVar11[2])" ( (binary_expression "piVar11[3] - piVar11[2]" (subscript_expression "piVar11[3]" identifier [ number_literal ]) - (subscript_expression "piVar11[2]" identifier [ number_literal ])) ))) )))) ;) (expression_statement "iVar2 = (int)piVar18 * 4;" (assignment_expression "iVar2 = (int)piVar18 * 4" identifier = (binary_expression "(int)piVar18 * 4" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }" if (parenthesized_expression "(param_3 == piVar18)" ( (binary_expression "param_3 == piVar18" identifier == identifier) )) (compound_statement "{\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }" { (expression_statement "piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);" (assignment_expression "piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" identifier = (cast_expression "(int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" * (pointer_expression "*(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" * (cast_expression "(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar20[5] + (int)piVar19 * 0xc + 8)" ( (binary_expression "piVar20[5] + (int)piVar19 * 0xc + 8" (binary_expression "piVar20[5] + (int)piVar19 * 0xc" (subscript_expression "piVar20[5]" identifier [ number_literal ]) + (binary_expression "(int)piVar19 * 0xc" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))))))) ;) (expression_statement "piVar15 = (int *)(param_2 + 8);" (assignment_expression "piVar15 = (int *)(param_2 + 8)" identifier = (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) ;) (expression_statement "piVar16 = piVar19;" (assignment_expression "piVar16 = piVar19" identifier = identifier) ;) (expression_statement "iVar2 = FUN_0002b8c0(uVar17);" (assignment_expression "iVar2 = FUN_0002b8c0(uVar17)" identifier = (call_expression "FUN_0002b8c0(uVar17)" identifier (argument_list "(uVar17)" ( identifier )))) ;) (if_statement "if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }" { (expression_statement "local_3c[1] = 1;" (assignment_expression "local_3c[1] = 1" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c[2] = 1;" (assignment_expression "local_3c[2] = 1" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);" (assignment_expression "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(4)" (parenthesized_expression "(*(code *)PTR_malloc_00053474)" ( (pointer_expression "*(code *)PTR_malloc_00053474" * (cast_expression "(code *)PTR_malloc_00053474" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(4)" ( number_literal ))))) ;) (if_statement "if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }" if (parenthesized_expression "(local_30 == (int *)0x0)" ( (binary_expression "local_30 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }" { (expression_statement "local_3c[2] = 0;" (assignment_expression "local_3c[2] = 0" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c[0] = 0xc;" (assignment_expression "local_3c[0] = 0xc" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c[1] = 0;" (assignment_expression "local_3c[1] = 0" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }" else (compound_statement "{\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }" { (expression_statement "*local_30 = (int)piVar19;" (assignment_expression "*local_30 = (int)piVar19" (pointer_expression "*local_30" * identifier) = (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "piVar15 = local_3c + 1;" (assignment_expression "piVar15 = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (expression_statement "piVar16 = param_4;" (assignment_expression "piVar16 = param_4" identifier = identifier) ;) (expression_statement "piVar14 = param_5;" (assignment_expression "piVar14 = param_5" identifier = identifier) ;) (expression_statement "iVar7 = FUN_0002c5d8(piVar20,piVar15);" (assignment_expression "iVar7 = FUN_0002c5d8(piVar20,piVar15)" identifier = (call_expression "FUN_0002c5d8(piVar20,piVar15)" identifier (argument_list "(piVar20,piVar15)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = FUN_0002c03c(param_2);" (assignment_expression "iVar8 = FUN_0002c03c(param_2)" identifier = (call_expression "FUN_0002c03c(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_30);" (call_expression "(*(code *)PTR_free_000534fc)(local_30)" (parenthesized_expression "(*(code *)PTR_free_000534fc)" ( (pointer_expression "*(code *)PTR_free_000534fc" * (cast_expression "(code *)PTR_free_000534fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_30)" ( identifier ))) ;) (expression_statement "iVar2 = local_3c[0];" (assignment_expression "iVar2 = local_3c[0]" identifier = (subscript_expression "local_3c[0]" identifier [ number_literal ])) ;) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" identifier = identifier) ;) (if_statement "if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;" if (parenthesized_expression "(((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0))" ( (binary_expression "((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)" (parenthesized_expression "((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0))" ( (binary_expression "(local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)" (parenthesized_expression "(local_3c[0] != 0)" ( (binary_expression "local_3c[0] != 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(iVar2 = iVar7, iVar7 != 0)" ( (comma_expression "iVar2 = iVar7, iVar7 != 0" (assignment_expression "iVar2 = iVar7" identifier = identifier) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar2 = iVar8, iVar8 != 0)" ( (comma_expression "iVar2 = iVar8, iVar8 != 0" (assignment_expression "iVar2 = iVar8" identifier = identifier) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);" (assignment_expression "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 0x74) + iVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + iVar3)" ( (binary_expression "*(int *)(param_1 + 0x74) + iVar3" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + identifier) )))) ;) (goto_statement "goto LAB_0002ddac;" goto statement_identifier ;) })) }) (else_clause "else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }" else (compound_statement "{\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }" { (expression_statement "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);" (assignment_expression "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 100) + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 100) + iVar2)" ( (binary_expression "*(int *)(param_1 + 100) + iVar2" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar7 = *piVar14;" (assignment_expression "iVar7 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);" (assignment_expression "piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4)" identifier = (pointer_expression "*(int **)(piVar20[3] + (int)piVar19 * 4)" * (cast_expression "(int **)(piVar20[3] + (int)piVar19 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar20[3] + (int)piVar19 * 4)" ( (binary_expression "piVar20[3] + (int)piVar19 * 4" (subscript_expression "piVar20[3]" identifier [ number_literal ]) + (binary_expression "(int)piVar19 * 4" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (if_statement "if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }" { (expression_statement "local_3c[1] = 1;" (assignment_expression "local_3c[1] = 1" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c[2] = 1;" (assignment_expression "local_3c[2] = 1" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" identifier = identifier) ;) (expression_statement "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);" (assignment_expression "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(4)" (parenthesized_expression "(*(code *)PTR_malloc_00053474)" ( (pointer_expression "*(code *)PTR_malloc_00053474" * (cast_expression "(code *)PTR_malloc_00053474" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(4)" ( number_literal ))))) ;) (if_statement "if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }" if (parenthesized_expression "(local_30 == (int *)0x0)" ( (binary_expression "local_30 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }" { (labeled_statement "LAB_0002df78:\n                  iVar2 = 0xc;" statement_identifier : (expression_statement "iVar2 = 0xc;" (assignment_expression "iVar2 = 0xc" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (expression_statement "*local_30 = (int)piVar18;" (assignment_expression "*local_30 = (int)piVar18" (pointer_expression "*local_30" * identifier) = (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }" else (compound_statement "{\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }" { (expression_statement "piVar15 = (int *)(iVar7 + 0xc);" (assignment_expression "piVar15 = (int *)(iVar7 + 0xc)" identifier = (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) )))) ;) (expression_statement "piVar16 = piVar18;" (assignment_expression "piVar16 = piVar18" identifier = identifier) ;) (expression_statement "iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));" (assignment_expression "iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8))" identifier = (call_expression "FUN_0002b8c0(*(undefined4 *)(iVar7 + 8))" identifier (argument_list "(*(undefined4 *)(iVar7 + 8))" ( (pointer_expression "*(undefined4 *)(iVar7 + 8)" * (cast_expression "(undefined4 *)(iVar7 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar8 != 0) goto LAB_0002dda0;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002dda0;" goto statement_identifier ;)) (expression_statement "local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);" (assignment_expression "local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4)" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = (call_expression "(*pcVar5)(local_3c + 1,iVar7 + 4)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(local_3c + 1,iVar7 + 4)" ( (binary_expression "local_3c + 1" identifier + number_literal) , (binary_expression "iVar7 + 4" identifier + number_literal) )))) ;) (expression_statement "iVar7 = (*pcVar6)(local_3c + 1);" (assignment_expression "iVar7 = (*pcVar6)(local_3c + 1)" identifier = (call_expression "(*pcVar6)(local_3c + 1)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(local_3c + 1)" ( (binary_expression "local_3c + 1" identifier + number_literal) )))) ;) (if_statement "if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }" if (parenthesized_expression "((local_3c[0] != 0) || (iVar7 == 0))" ( (binary_expression "(local_3c[0] != 0) || (iVar7 == 0)" (parenthesized_expression "(local_3c[0] != 0)" ( (binary_expression "local_3c[0] != 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }" { (expression_statement "(*(code *)PTR_free_000534fc)(local_30);" (call_expression "(*(code *)PTR_free_000534fc)(local_30)" (parenthesized_expression "(*(code *)PTR_free_000534fc)" ( (pointer_expression "*(code *)PTR_free_000534fc" * (cast_expression "(code *)PTR_free_000534fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_30)" ( identifier ))) ;) (expression_statement "iVar2 = local_3c[0];" (assignment_expression "iVar2 = local_3c[0]" identifier = (subscript_expression "local_3c[0]" identifier [ number_literal ])) ;) (expression_statement "piVar15 = piVar18;" (assignment_expression "piVar15 = piVar18" identifier = identifier) ;) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" identifier = identifier) ;) (if_statement "if (local_3c[0] == 0) goto LAB_0002df78;" if (parenthesized_expression "(local_3c[0] == 0)" ( (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0002df78;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);" (assignment_expression "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 100) + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 100) + iVar2)" ( (binary_expression "*(int *)(param_1 + 100) + iVar2" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + identifier) )))) ;) }))) (expression_statement "piVar16 = local_3c + 1;" (assignment_expression "piVar16 = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar20;" (assignment_expression "piVar15 = piVar20" identifier = identifier) ;) (expression_statement "iVar7 = (*pcVar4)(local_3c);" (assignment_expression "iVar7 = (*pcVar4)(local_3c)" identifier = (call_expression "(*pcVar4)(local_3c)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(local_3c)" ( identifier )))) ;) (expression_statement "puVar1 = PTR_free_000534fc;" (assignment_expression "puVar1 = PTR_free_000534fc" identifier = identifier) ;) (expression_statement "*piVar14 = iVar7;" (assignment_expression "*piVar14 = iVar7" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "(*(code *)puVar1)(local_30);" (call_expression "(*(code *)puVar1)(local_30)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_30)" ( identifier ))) ;) (if_statement "if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;" if (parenthesized_expression "((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0))" ( (binary_expression "(*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)" (parenthesized_expression "(*(int *)(*(int *)(param_1 + 100) + iVar2) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 100) + iVar2) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 100) + iVar2)" * (cast_expression "(int *)(*(int *)(param_1 + 100) + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 100) + iVar2)" ( (binary_expression "*(int *)(param_1 + 100) + iVar2" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + identifier) )))) == number_literal) )) && (parenthesized_expression "(iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)" ( (comma_expression "iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0" (assignment_expression "iVar2 = local_3c[0]" identifier = (subscript_expression "local_3c[0]" identifier [ number_literal ])) , (comma_expression "piVar19 = piVar14, local_3c[0] != 0" (assignment_expression "piVar19 = piVar14" identifier = identifier) , (binary_expression "local_3c[0] != 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) != number_literal))) ))) )) (break_statement "break;" break ;)) }))) })) (labeled_statement "LAB_0002dda0:\n          piVar18 = piVar11 + 4;" statement_identifier : (expression_statement "piVar18 = piVar11 + 4;" (assignment_expression "piVar18 = piVar11 + 4" identifier = (binary_expression "piVar11 + 4" identifier + number_literal)) ;)) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" identifier = identifier) ;) (expression_statement "piVar11 = piVar11 + 5;" (assignment_expression "piVar11 = piVar11 + 5" identifier = (binary_expression "piVar11 + 5" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(char *)piVar18 != '\0')" ( (binary_expression "*(char *)piVar18 != '\0'" (pointer_expression "*(char *)piVar18" * (cast_expression "(char *)piVar18" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\0'" ' escape_sequence ')) )) ;)) }))) })) })) (if_statement "if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar21)" ( (binary_expression "local_2c == *(int *)puVar21" identifier == (pointer_expression "*(int *)puVar21" * (cast_expression "(int *)puVar21" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar2 = local_2c;" (assignment_expression "iVar2 = local_2c" identifier = identifier) ;) (expression_statement "puVar21 = PTR___stack_chk_fail_000534d4;" (assignment_expression "puVar21 = PTR___stack_chk_fail_000534d4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000534d4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000534d4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000534d4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000534d4" * (cast_expression "(code *)PTR___stack_chk_fail_000534d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = *piVar15;" (assignment_expression "iVar3 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "piVar11 = *(int **)(iVar2 + 0x54);" (assignment_expression "piVar11 = *(int **)(iVar2 + 0x54)" identifier = (pointer_expression "*(int **)(iVar2 + 0x54)" * (cast_expression "(int **)(iVar2 + 0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x54)" ( (binary_expression "iVar2 + 0x54" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (compound_statement "{\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);" do (compound_statement "{\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    }" { (while_statement "while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }" { (expression_statement "iVar8 = *(int *)(*piVar16 + iVar7 * 4);" (assignment_expression "iVar8 = *(int *)(*piVar16 + iVar7 * 4)" identifier = (pointer_expression "*(int *)(*piVar16 + iVar7 * 4)" * (cast_expression "(int *)(*piVar16 + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar16 + iVar7 * 4)" ( (binary_expression "*piVar16 + iVar7 * 4" (pointer_expression "*piVar16" * identifier) + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "puVar9 = (uint *)(*piVar11 + iVar8 * 8);" (assignment_expression "puVar9 = (uint *)(*piVar11 + iVar8 * 8)" identifier = (cast_expression "(uint *)(*piVar11 + iVar8 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + iVar8 * 8)" ( (binary_expression "*piVar11 + iVar8 * 8" (pointer_expression "*piVar11" * identifier) + (binary_expression "iVar8 * 8" identifier * number_literal)) )))) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;" if (parenthesized_expression "(((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0))" ( (binary_expression "((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)" (parenthesized_expression "((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20))" ( (binary_expression "(*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)" (parenthesized_expression "(*(char *)(puVar9 + 1) == '\b')" ( (binary_expression "*(char *)(puVar9 + 1) == '\b'" (pointer_expression "*(char *)(puVar9 + 1)" * (cast_expression "(char *)(puVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 1)" ( (binary_expression "puVar9 + 1" identifier + number_literal) )))) == (char_literal "'\b'" ' escape_sequence ')) )) && (parenthesized_expression "(uVar12 = *puVar9, (int)uVar12 < 0x20)" ( (comma_expression "uVar12 = *puVar9, (int)uVar12 < 0x20" (assignment_expression "uVar12 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) , (binary_expression "(int)uVar12 < 0x20" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) ))) )) && (parenthesized_expression "(((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)" ( (binary_expression "((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1)" ( (binary_expression "(uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1" (binary_expression "(uint)piVar11[0x14] >> (uVar12 & 0x1f)" (cast_expression "(uint)piVar11[0x14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar11[0x14]" identifier [ number_literal ])) >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (break_statement "break;" break ;)) (if_statement "if (iVar3 <= iVar7) {\n          return 0;\n        }" if (parenthesized_expression "(iVar3 <= iVar7)" ( (binary_expression "iVar3 <= iVar7" identifier <= identifier) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "iVar13 = *(int *)(iVar2 + 0x7c);" (assignment_expression "iVar13 = *(int *)(iVar2 + 0x7c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x7c)" * (cast_expression "(int *)(iVar2 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x7c)" ( (binary_expression "iVar2 + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(iVar2 + 0x84);" (assignment_expression "iVar3 = *(int *)(iVar2 + 0x84)" identifier = (pointer_expression "*(int *)(iVar2 + 0x84)" * (cast_expression "(int *)(iVar2 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x84)" ( (binary_expression "iVar2 + 0x84" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }" if (parenthesized_expression "(iVar13 == *(int *)(iVar2 + 0x80))" ( (binary_expression "iVar13 == *(int *)(iVar2 + 0x80)" identifier == (pointer_expression "*(int *)(iVar2 + 0x80)" * (cast_expression "(int *)(iVar2 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x80)" ( (binary_expression "iVar2 + 0x80" identifier + number_literal) ))))) )) (compound_statement "{\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }" { (expression_statement "iVar10 = iVar13 << 1;" (assignment_expression "iVar10 = iVar13 << 1" identifier = (binary_expression "iVar13 << 1" identifier << number_literal)) ;) (expression_statement "iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);" (assignment_expression "iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3)" identifier = (call_expression "(**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3)" (parenthesized_expression "(**(code **)(puVar21 + 0x254c4))" ( (pointer_expression "**(code **)(puVar21 + 0x254c4)" * (pointer_expression "*(code **)(puVar21 + 0x254c4)" * (cast_expression "(code **)(puVar21 + 0x254c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x254c4)" ( (binary_expression "puVar21 + 0x254c4" identifier + number_literal) ))))) )) (argument_list "(iVar3,iVar13 << 3)" ( identifier , (binary_expression "iVar13 << 3" identifier << number_literal) )))) ;) (if_statement "if (iVar3 == 0) {\n          return 0xc;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0xc;\n        }" { (return_statement "return 0xc;" return number_literal ;) })) (expression_statement "iVar13 = *(int *)(iVar2 + 0x7c);" (assignment_expression "iVar13 = *(int *)(iVar2 + 0x7c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x7c)" * (cast_expression "(int *)(iVar2 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x7c)" ( (binary_expression "iVar2 + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar2 + 0x84) = iVar3;" (assignment_expression "*(int *)(iVar2 + 0x84) = iVar3" (pointer_expression "*(int *)(iVar2 + 0x84)" * (cast_expression "(int *)(iVar2 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x84)" ( (binary_expression "iVar2 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar2 + 0x80) = iVar10;" (assignment_expression "*(int *)(iVar2 + 0x80) = iVar10" (pointer_expression "*(int *)(iVar2 + 0x80)" * (cast_expression "(int *)(iVar2 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x80)" ( (binary_expression "iVar2 + 0x80" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);" (assignment_expression "piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18)" identifier = (cast_expression "(int *)(**(code **)(puVar21 + 0x253bc))(1,0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar21 + 0x253bc))(1,0x18)" (parenthesized_expression "(**(code **)(puVar21 + 0x253bc))" ( (pointer_expression "**(code **)(puVar21 + 0x253bc)" * (pointer_expression "*(code **)(puVar21 + 0x253bc)" * (cast_expression "(code **)(puVar21 + 0x253bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x253bc)" ( (binary_expression "puVar21 + 0x253bc" identifier + number_literal) ))))) )) (argument_list "(1,0x18)" ( number_literal , number_literal ))))) ;) (expression_statement "*(int **)(iVar3 + iVar13 * 4) = piVar14;" (assignment_expression "*(int **)(iVar3 + iVar13 * 4) = piVar14" (pointer_expression "*(int **)(iVar3 + iVar13 * 4)" * (cast_expression "(int **)(iVar3 + iVar13 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + iVar13 * 4)" ( (binary_expression "iVar3 + iVar13 * 4" identifier + (binary_expression "iVar13 * 4" identifier * number_literal)) )))) = identifier) ;) (if_statement "if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0xc;\n      }" { (return_statement "return 0xc;" return number_literal ;) })) (expression_statement "*(int *)(iVar2 + 0x7c) = iVar13 + 1;" (assignment_expression "*(int *)(iVar2 + 0x7c) = iVar13 + 1" (pointer_expression "*(int *)(iVar2 + 0x7c)" * (cast_expression "(int *)(iVar2 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x7c)" ( (binary_expression "iVar2 + 0x7c" identifier + number_literal) )))) = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar14[1] = iVar8;" (assignment_expression "piVar14[1] = iVar8" (subscript_expression "piVar14[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar14 = (int)piVar19;" (assignment_expression "*piVar14 = (int)piVar19" (pointer_expression "*piVar14" * identifier) = (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = *piVar15;" (assignment_expression "iVar3 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) }) while (parenthesized_expression "(iVar7 < iVar3)" ( (binary_expression "iVar7 < iVar3" identifier < identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "reg_errcode_t\nexpand_bkref_cache(re_match_context_t *mctx,re_node_set *cur_nodes,Idx cur_str,Idx subexp_num,\n                  int type)\n\n{\n  char *pcVar1;\n  re_dfastate_t **pprVar2;\n  undefined *puVar3;\n  int iVar4;\n  bitset_word_t bVar5;\n  re_dfastate_t **pprVar6;\n  code *pcVar7;\n  code *pcVar8;\n  code *pcVar9;\n  Idx IVar10;\n  reg_errcode_t rVar11;\n  reg_errcode_t rVar12;\n  reg_errcode_t rVar13;\n  uint *puVar14;\n  int *piVar15;\n  int iVar16;\n  re_dfastate_t **pprVar17;\n  uint uVar18;\n  int iVar19;\n  re_dfastate_t **pprVar20;\n  re_dfa_t *prVar21;\n  re_dfa_t *elem;\n  re_token_t *prVar22;\n  re_dfastate_t *prVar23;\n  re_node_set *set;\n  int iVar24;\n  re_dfa_t *prVar25;\n  int iVar26;\n  int *piVar27;\n  Idx **elem_00;\n  re_backref_cache_entry *prVar28;\n  re_dfa_t *dfa;\n  undefined *puVar29;\n  int iVar30;\n  re_dfa_t *prStack_60;\n  reg_errcode_t err;\n  re_node_set new_dests;\n  \n  puVar29 = PTR___stack_chk_guard_000534f0;\n  iVar4 = *(int *)PTR___stack_chk_guard_000534f0;\n  prVar21 = (re_dfa_t *)0x0;\n  pprVar17 = (re_dfastate_t **)mctx->nbkref_ents;\n  prStack_60 = (re_dfa_t *)cur_str;\n  pprVar6 = (re_dfastate_t **)subexp_num;\n  while ((int)prVar21 < (int)pprVar17) {\n    prStack_60 = (re_dfa_t *)mctx->bkref_ents;\n    pprVar20 = (re_dfastate_t **)(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2);\n    bVar5 = prStack_60->word_char[(int)pprVar20 * 5 + -0x17];\n    while (pprVar2 = pprVar20, cur_str <= (int)bVar5) {\n      if ((int)pprVar2 <= (int)prVar21) goto LAB_0002dc5c;\n      pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2);\n      pprVar20 = pprVar6;\n      pprVar17 = pprVar2;\n      bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17];\n    }\n    pprVar6 = pprVar2;\n    prVar21 = (re_dfa_t *)((int)pprVar2 + 1);\n  }\nLAB_0002dc5c:\n  rVar13 = _REG_NOERROR;\n  prVar25 = prVar21;\n  if ((int)prVar21 < (int)mctx->nbkref_ents) {\n    prVar28 = mctx->bkref_ents + (int)prVar21;\n    rVar13 = _REG_NOERROR;\n    if (cur_str == prVar28->str_idx) {\n      elem_00 = &cur_nodes->elems;\n      if (prVar21 == (re_dfa_t *)0xffffffff) {\n        rVar13 = _REG_NOERROR;\n      }\n      else {\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }\n    }\n  }\n  if (iVar4 == *(int *)puVar29) {\n    return rVar13;\n  }\n  puVar29 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  prVar22 = prVar25->nodes;\n  piVar27 = *(int **)(iVar4 + 0x54);\n  if (0 < (int)prVar22) {\n    iVar24 = 0;\n    do {\n      while( true ) {\n        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;\n        puVar14 = (uint *)(*piVar27 + iVar26 * 8);\n        iVar24 = iVar24 + 1;\n        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;\n        if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }\n      }\n      iVar19 = *(int *)(iVar4 + 0x7c);\n      iVar30 = *(int *)(iVar4 + 0x84);\n      if (iVar19 == *(int *)(iVar4 + 0x80)) {\n        iVar16 = iVar19 << 1;\n        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);\n        if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }\n        iVar19 = *(int *)(iVar4 + 0x7c);\n        *(int *)(iVar4 + 0x84) = iVar30;\n        *(int *)(iVar4 + 0x80) = iVar16;\n      }\n      piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18);\n      *(int **)(iVar30 + iVar19 * 4) = piVar15;\n      if (piVar15 == (int *)0x0) {\n        return _REG_ESPACE;\n      }\n      *(int *)(iVar4 + 0x7c) = iVar19 + 1;\n      piVar15[1] = iVar26;\n      *piVar15 = (int)pprVar6;\n      prVar22 = prVar25->nodes;\n    } while (iVar24 < (int)prVar22);\n  }\n  return _REG_NOERROR;\n}\n\n" (function_definition "reg_errcode_t\nexpand_bkref_cache(re_match_context_t *mctx,re_node_set *cur_nodes,Idx cur_str,Idx subexp_num,\n                  int type)\n\n{\n  char *pcVar1;\n  re_dfastate_t **pprVar2;\n  undefined *puVar3;\n  int iVar4;\n  bitset_word_t bVar5;\n  re_dfastate_t **pprVar6;\n  code *pcVar7;\n  code *pcVar8;\n  code *pcVar9;\n  Idx IVar10;\n  reg_errcode_t rVar11;\n  reg_errcode_t rVar12;\n  reg_errcode_t rVar13;\n  uint *puVar14;\n  int *piVar15;\n  int iVar16;\n  re_dfastate_t **pprVar17;\n  uint uVar18;\n  int iVar19;\n  re_dfastate_t **pprVar20;\n  re_dfa_t *prVar21;\n  re_dfa_t *elem;\n  re_token_t *prVar22;\n  re_dfastate_t *prVar23;\n  re_node_set *set;\n  int iVar24;\n  re_dfa_t *prVar25;\n  int iVar26;\n  int *piVar27;\n  Idx **elem_00;\n  re_backref_cache_entry *prVar28;\n  re_dfa_t *dfa;\n  undefined *puVar29;\n  int iVar30;\n  re_dfa_t *prStack_60;\n  reg_errcode_t err;\n  re_node_set new_dests;\n  \n  puVar29 = PTR___stack_chk_guard_000534f0;\n  iVar4 = *(int *)PTR___stack_chk_guard_000534f0;\n  prVar21 = (re_dfa_t *)0x0;\n  pprVar17 = (re_dfastate_t **)mctx->nbkref_ents;\n  prStack_60 = (re_dfa_t *)cur_str;\n  pprVar6 = (re_dfastate_t **)subexp_num;\n  while ((int)prVar21 < (int)pprVar17) {\n    prStack_60 = (re_dfa_t *)mctx->bkref_ents;\n    pprVar20 = (re_dfastate_t **)(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2);\n    bVar5 = prStack_60->word_char[(int)pprVar20 * 5 + -0x17];\n    while (pprVar2 = pprVar20, cur_str <= (int)bVar5) {\n      if ((int)pprVar2 <= (int)prVar21) goto LAB_0002dc5c;\n      pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2);\n      pprVar20 = pprVar6;\n      pprVar17 = pprVar2;\n      bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17];\n    }\n    pprVar6 = pprVar2;\n    prVar21 = (re_dfa_t *)((int)pprVar2 + 1);\n  }\nLAB_0002dc5c:\n  rVar13 = _REG_NOERROR;\n  prVar25 = prVar21;\n  if ((int)prVar21 < (int)mctx->nbkref_ents) {\n    prVar28 = mctx->bkref_ents + (int)prVar21;\n    rVar13 = _REG_NOERROR;\n    if (cur_str == prVar28->str_idx) {\n      elem_00 = &cur_nodes->elems;\n      if (prVar21 == (re_dfa_t *)0xffffffff) {\n        rVar13 = _REG_NOERROR;\n      }\n      else {\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }\n    }\n  }\n  if (iVar4 == *(int *)puVar29) {\n    return rVar13;\n  }\n  puVar29 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  prVar22 = prVar25->nodes;\n  piVar27 = *(int **)(iVar4 + 0x54);\n  if (0 < (int)prVar22) {\n    iVar24 = 0;\n    do {\n      while( true ) {\n        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;\n        puVar14 = (uint *)(*piVar27 + iVar26 * 8);\n        iVar24 = iVar24 + 1;\n        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;\n        if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }\n      }\n      iVar19 = *(int *)(iVar4 + 0x7c);\n      iVar30 = *(int *)(iVar4 + 0x84);\n      if (iVar19 == *(int *)(iVar4 + 0x80)) {\n        iVar16 = iVar19 << 1;\n        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);\n        if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }\n        iVar19 = *(int *)(iVar4 + 0x7c);\n        *(int *)(iVar4 + 0x84) = iVar30;\n        *(int *)(iVar4 + 0x80) = iVar16;\n      }\n      piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18);\n      *(int **)(iVar30 + iVar19 * 4) = piVar15;\n      if (piVar15 == (int *)0x0) {\n        return _REG_ESPACE;\n      }\n      *(int *)(iVar4 + 0x7c) = iVar19 + 1;\n      piVar15[1] = iVar26;\n      *piVar15 = (int)pprVar6;\n      prVar22 = prVar25->nodes;\n    } while (iVar24 < (int)prVar22);\n  }\n  return _REG_NOERROR;\n}" type_identifier (function_declarator "expand_bkref_cache(re_match_context_t *mctx,re_node_set *cur_nodes,Idx cur_str,Idx subexp_num,\n                  int type)" identifier (parameter_list "(re_match_context_t *mctx,re_node_set *cur_nodes,Idx cur_str,Idx subexp_num,\n                  int type)" ( (parameter_declaration "re_match_context_t *mctx" type_identifier (pointer_declarator "*mctx" * identifier)) , (parameter_declaration "re_node_set *cur_nodes" type_identifier (pointer_declarator "*cur_nodes" * identifier)) , (parameter_declaration "Idx cur_str" type_identifier identifier) , (parameter_declaration "Idx subexp_num" type_identifier identifier) , (parameter_declaration "int type" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  re_dfastate_t **pprVar2;\n  undefined *puVar3;\n  int iVar4;\n  bitset_word_t bVar5;\n  re_dfastate_t **pprVar6;\n  code *pcVar7;\n  code *pcVar8;\n  code *pcVar9;\n  Idx IVar10;\n  reg_errcode_t rVar11;\n  reg_errcode_t rVar12;\n  reg_errcode_t rVar13;\n  uint *puVar14;\n  int *piVar15;\n  int iVar16;\n  re_dfastate_t **pprVar17;\n  uint uVar18;\n  int iVar19;\n  re_dfastate_t **pprVar20;\n  re_dfa_t *prVar21;\n  re_dfa_t *elem;\n  re_token_t *prVar22;\n  re_dfastate_t *prVar23;\n  re_node_set *set;\n  int iVar24;\n  re_dfa_t *prVar25;\n  int iVar26;\n  int *piVar27;\n  Idx **elem_00;\n  re_backref_cache_entry *prVar28;\n  re_dfa_t *dfa;\n  undefined *puVar29;\n  int iVar30;\n  re_dfa_t *prStack_60;\n  reg_errcode_t err;\n  re_node_set new_dests;\n  \n  puVar29 = PTR___stack_chk_guard_000534f0;\n  iVar4 = *(int *)PTR___stack_chk_guard_000534f0;\n  prVar21 = (re_dfa_t *)0x0;\n  pprVar17 = (re_dfastate_t **)mctx->nbkref_ents;\n  prStack_60 = (re_dfa_t *)cur_str;\n  pprVar6 = (re_dfastate_t **)subexp_num;\n  while ((int)prVar21 < (int)pprVar17) {\n    prStack_60 = (re_dfa_t *)mctx->bkref_ents;\n    pprVar20 = (re_dfastate_t **)(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2);\n    bVar5 = prStack_60->word_char[(int)pprVar20 * 5 + -0x17];\n    while (pprVar2 = pprVar20, cur_str <= (int)bVar5) {\n      if ((int)pprVar2 <= (int)prVar21) goto LAB_0002dc5c;\n      pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2);\n      pprVar20 = pprVar6;\n      pprVar17 = pprVar2;\n      bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17];\n    }\n    pprVar6 = pprVar2;\n    prVar21 = (re_dfa_t *)((int)pprVar2 + 1);\n  }\nLAB_0002dc5c:\n  rVar13 = _REG_NOERROR;\n  prVar25 = prVar21;\n  if ((int)prVar21 < (int)mctx->nbkref_ents) {\n    prVar28 = mctx->bkref_ents + (int)prVar21;\n    rVar13 = _REG_NOERROR;\n    if (cur_str == prVar28->str_idx) {\n      elem_00 = &cur_nodes->elems;\n      if (prVar21 == (re_dfa_t *)0xffffffff) {\n        rVar13 = _REG_NOERROR;\n      }\n      else {\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }\n    }\n  }\n  if (iVar4 == *(int *)puVar29) {\n    return rVar13;\n  }\n  puVar29 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  prVar22 = prVar25->nodes;\n  piVar27 = *(int **)(iVar4 + 0x54);\n  if (0 < (int)prVar22) {\n    iVar24 = 0;\n    do {\n      while( true ) {\n        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;\n        puVar14 = (uint *)(*piVar27 + iVar26 * 8);\n        iVar24 = iVar24 + 1;\n        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;\n        if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }\n      }\n      iVar19 = *(int *)(iVar4 + 0x7c);\n      iVar30 = *(int *)(iVar4 + 0x84);\n      if (iVar19 == *(int *)(iVar4 + 0x80)) {\n        iVar16 = iVar19 << 1;\n        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);\n        if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }\n        iVar19 = *(int *)(iVar4 + 0x7c);\n        *(int *)(iVar4 + 0x84) = iVar30;\n        *(int *)(iVar4 + 0x80) = iVar16;\n      }\n      piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18);\n      *(int **)(iVar30 + iVar19 * 4) = piVar15;\n      if (piVar15 == (int *)0x0) {\n        return _REG_ESPACE;\n      }\n      *(int *)(iVar4 + 0x7c) = iVar19 + 1;\n      piVar15[1] = iVar26;\n      *piVar15 = (int)pprVar6;\n      prVar22 = prVar25->nodes;\n    } while (iVar24 < (int)prVar22);\n  }\n  return _REG_NOERROR;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "re_dfastate_t **pprVar2;" type_identifier (pointer_declarator "**pprVar2" * (pointer_declarator "*pprVar2" * identifier)) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "bitset_word_t bVar5;" type_identifier identifier ;) (declaration "re_dfastate_t **pprVar6;" type_identifier (pointer_declarator "**pprVar6" * (pointer_declarator "*pprVar6" * identifier)) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "Idx IVar10;" type_identifier identifier ;) (declaration "reg_errcode_t rVar11;" type_identifier identifier ;) (declaration "reg_errcode_t rVar12;" type_identifier identifier ;) (declaration "reg_errcode_t rVar13;" type_identifier identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "re_dfastate_t **pprVar17;" type_identifier (pointer_declarator "**pprVar17" * (pointer_declarator "*pprVar17" * identifier)) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "re_dfastate_t **pprVar20;" type_identifier (pointer_declarator "**pprVar20" * (pointer_declarator "*pprVar20" * identifier)) ;) (declaration "re_dfa_t *prVar21;" type_identifier (pointer_declarator "*prVar21" * identifier) ;) (declaration "re_dfa_t *elem;" type_identifier (pointer_declarator "*elem" * identifier) ;) (declaration "re_token_t *prVar22;" type_identifier (pointer_declarator "*prVar22" * identifier) ;) (declaration "re_dfastate_t *prVar23;" type_identifier (pointer_declarator "*prVar23" * identifier) ;) (declaration "re_node_set *set;" type_identifier (pointer_declarator "*set" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "re_dfa_t *prVar25;" type_identifier (pointer_declarator "*prVar25" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "Idx **elem_00;" type_identifier (pointer_declarator "**elem_00" * (pointer_declarator "*elem_00" * identifier)) ;) (declaration "re_backref_cache_entry *prVar28;" type_identifier (pointer_declarator "*prVar28" * identifier) ;) (declaration "re_dfa_t *dfa;" type_identifier (pointer_declarator "*dfa" * identifier) ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "re_dfa_t *prStack_60;" type_identifier (pointer_declarator "*prStack_60" * identifier) ;) (declaration "reg_errcode_t err;" type_identifier identifier ;) (declaration "re_node_set new_dests;" type_identifier identifier ;) (expression_statement "puVar29 = PTR___stack_chk_guard_000534f0;" (assignment_expression "puVar29 = PTR___stack_chk_guard_000534f0" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_000534f0;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_000534f0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000534f0" * (cast_expression "(int *)PTR___stack_chk_guard_000534f0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "prVar21 = (re_dfa_t *)0x0;" (assignment_expression "prVar21 = (re_dfa_t *)0x0" identifier = (cast_expression "(re_dfa_t *)0x0" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pprVar17 = (re_dfastate_t **)mctx->nbkref_ents;" (assignment_expression "pprVar17 = (re_dfastate_t **)mctx->nbkref_ents" identifier = (cast_expression "(re_dfastate_t **)mctx->nbkref_ents" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "mctx->nbkref_ents" identifier -> field_identifier))) ;) (expression_statement "prStack_60 = (re_dfa_t *)cur_str;" (assignment_expression "prStack_60 = (re_dfa_t *)cur_str" identifier = (cast_expression "(re_dfa_t *)cur_str" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pprVar6 = (re_dfastate_t **)subexp_num;" (assignment_expression "pprVar6 = (re_dfastate_t **)subexp_num" identifier = (cast_expression "(re_dfastate_t **)subexp_num" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (while_statement "while ((int)prVar21 < (int)pprVar17) {\n    prStack_60 = (re_dfa_t *)mctx->bkref_ents;\n    pprVar20 = (re_dfastate_t **)(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2);\n    bVar5 = prStack_60->word_char[(int)pprVar20 * 5 + -0x17];\n    while (pprVar2 = pprVar20, cur_str <= (int)bVar5) {\n      if ((int)pprVar2 <= (int)prVar21) goto LAB_0002dc5c;\n      pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2);\n      pprVar20 = pprVar6;\n      pprVar17 = pprVar2;\n      bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17];\n    }\n    pprVar6 = pprVar2;\n    prVar21 = (re_dfa_t *)((int)pprVar2 + 1);\n  }" while (parenthesized_expression "((int)prVar21 < (int)pprVar17)" ( (binary_expression "(int)prVar21 < (int)pprVar17" (cast_expression "(int)prVar21" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pprVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    prStack_60 = (re_dfa_t *)mctx->bkref_ents;\n    pprVar20 = (re_dfastate_t **)(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2);\n    bVar5 = prStack_60->word_char[(int)pprVar20 * 5 + -0x17];\n    while (pprVar2 = pprVar20, cur_str <= (int)bVar5) {\n      if ((int)pprVar2 <= (int)prVar21) goto LAB_0002dc5c;\n      pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2);\n      pprVar20 = pprVar6;\n      pprVar17 = pprVar2;\n      bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17];\n    }\n    pprVar6 = pprVar2;\n    prVar21 = (re_dfa_t *)((int)pprVar2 + 1);\n  }" { (expression_statement "prStack_60 = (re_dfa_t *)mctx->bkref_ents;" (assignment_expression "prStack_60 = (re_dfa_t *)mctx->bkref_ents" identifier = (cast_expression "(re_dfa_t *)mctx->bkref_ents" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx->bkref_ents" identifier -> field_identifier))) ;) (expression_statement "pprVar20 = (re_dfastate_t **)(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2);" (assignment_expression "pprVar20 = (re_dfastate_t **)(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2)" identifier = (cast_expression "(re_dfastate_t **)(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2)" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2)" ( (binary_expression "((int)pprVar17 + (int)(prVar21->word_char + -0x18)) / 2" (parenthesized_expression "((int)pprVar17 + (int)(prVar21->word_char + -0x18))" ( (binary_expression "(int)pprVar17 + (int)(prVar21->word_char + -0x18)" (cast_expression "(int)pprVar17" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(prVar21->word_char + -0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(prVar21->word_char + -0x18)" ( (binary_expression "prVar21->word_char + -0x18" (field_expression "prVar21->word_char" identifier -> field_identifier) + number_literal) )))) )) / number_literal) )))) ;) (expression_statement "bVar5 = prStack_60->word_char[(int)pprVar20 * 5 + -0x17];" (assignment_expression "bVar5 = prStack_60->word_char[(int)pprVar20 * 5 + -0x17]" identifier = (subscript_expression "prStack_60->word_char[(int)pprVar20 * 5 + -0x17]" (field_expression "prStack_60->word_char" identifier -> field_identifier) [ (binary_expression "(int)pprVar20 * 5 + -0x17" (binary_expression "(int)pprVar20 * 5" (cast_expression "(int)pprVar20" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ])) ;) (while_statement "while (pprVar2 = pprVar20, cur_str <= (int)bVar5) {\n      if ((int)pprVar2 <= (int)prVar21) goto LAB_0002dc5c;\n      pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2);\n      pprVar20 = pprVar6;\n      pprVar17 = pprVar2;\n      bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17];\n    }" while (parenthesized_expression "(pprVar2 = pprVar20, cur_str <= (int)bVar5)" ( (comma_expression "pprVar2 = pprVar20, cur_str <= (int)bVar5" (assignment_expression "pprVar2 = pprVar20" identifier = identifier) , (binary_expression "cur_str <= (int)bVar5" identifier <= (cast_expression "(int)bVar5" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n      if ((int)pprVar2 <= (int)prVar21) goto LAB_0002dc5c;\n      pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2);\n      pprVar20 = pprVar6;\n      pprVar17 = pprVar2;\n      bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17];\n    }" { (if_statement "if ((int)pprVar2 <= (int)prVar21) goto LAB_0002dc5c;" if (parenthesized_expression "((int)pprVar2 <= (int)prVar21)" ( (binary_expression "(int)pprVar2 <= (int)prVar21" (cast_expression "(int)pprVar2" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)prVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002dc5c;" goto statement_identifier ;)) (expression_statement "pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2);" (assignment_expression "pprVar6 = (re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2)" identifier = (cast_expression "(re_dfastate_t **)(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2)" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2)" ( (binary_expression "((int)pprVar2 + (int)(prVar21->word_char + -0x18)) / 2" (parenthesized_expression "((int)pprVar2 + (int)(prVar21->word_char + -0x18))" ( (binary_expression "(int)pprVar2 + (int)(prVar21->word_char + -0x18)" (cast_expression "(int)pprVar2" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(prVar21->word_char + -0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(prVar21->word_char + -0x18)" ( (binary_expression "prVar21->word_char + -0x18" (field_expression "prVar21->word_char" identifier -> field_identifier) + number_literal) )))) )) / number_literal) )))) ;) (expression_statement "pprVar20 = pprVar6;" (assignment_expression "pprVar20 = pprVar6" identifier = identifier) ;) (expression_statement "pprVar17 = pprVar2;" (assignment_expression "pprVar17 = pprVar2" identifier = identifier) ;) (expression_statement "bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17];" (assignment_expression "bVar5 = prStack_60->word_char[(int)pprVar6 * 5 + -0x17]" identifier = (subscript_expression "prStack_60->word_char[(int)pprVar6 * 5 + -0x17]" (field_expression "prStack_60->word_char" identifier -> field_identifier) [ (binary_expression "(int)pprVar6 * 5 + -0x17" (binary_expression "(int)pprVar6 * 5" (cast_expression "(int)pprVar6" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ])) ;) })) (expression_statement "pprVar6 = pprVar2;" (assignment_expression "pprVar6 = pprVar2" identifier = identifier) ;) (expression_statement "prVar21 = (re_dfa_t *)((int)pprVar2 + 1);" (assignment_expression "prVar21 = (re_dfa_t *)((int)pprVar2 + 1)" identifier = (cast_expression "(re_dfa_t *)((int)pprVar2 + 1)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pprVar2 + 1)" ( (binary_expression "(int)pprVar2 + 1" (cast_expression "(int)pprVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (labeled_statement "LAB_0002dc5c:\n  rVar13 = _REG_NOERROR;" statement_identifier : (expression_statement "rVar13 = _REG_NOERROR;" (assignment_expression "rVar13 = _REG_NOERROR" identifier = identifier) ;)) (expression_statement "prVar25 = prVar21;" (assignment_expression "prVar25 = prVar21" identifier = identifier) ;) (if_statement "if ((int)prVar21 < (int)mctx->nbkref_ents) {\n    prVar28 = mctx->bkref_ents + (int)prVar21;\n    rVar13 = _REG_NOERROR;\n    if (cur_str == prVar28->str_idx) {\n      elem_00 = &cur_nodes->elems;\n      if (prVar21 == (re_dfa_t *)0xffffffff) {\n        rVar13 = _REG_NOERROR;\n      }\n      else {\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }\n    }\n  }" if (parenthesized_expression "((int)prVar21 < (int)mctx->nbkref_ents)" ( (binary_expression "(int)prVar21 < (int)mctx->nbkref_ents" (cast_expression "(int)prVar21" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)mctx->nbkref_ents" ( (type_descriptor "int" primitive_type) ) (field_expression "mctx->nbkref_ents" identifier -> field_identifier))) )) (compound_statement "{\n    prVar28 = mctx->bkref_ents + (int)prVar21;\n    rVar13 = _REG_NOERROR;\n    if (cur_str == prVar28->str_idx) {\n      elem_00 = &cur_nodes->elems;\n      if (prVar21 == (re_dfa_t *)0xffffffff) {\n        rVar13 = _REG_NOERROR;\n      }\n      else {\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }\n    }\n  }" { (expression_statement "prVar28 = mctx->bkref_ents + (int)prVar21;" (assignment_expression "prVar28 = mctx->bkref_ents + (int)prVar21" identifier = (binary_expression "mctx->bkref_ents + (int)prVar21" (field_expression "mctx->bkref_ents" identifier -> field_identifier) + (cast_expression "(int)prVar21" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "rVar13 = _REG_NOERROR;" (assignment_expression "rVar13 = _REG_NOERROR" identifier = identifier) ;) (if_statement "if (cur_str == prVar28->str_idx) {\n      elem_00 = &cur_nodes->elems;\n      if (prVar21 == (re_dfa_t *)0xffffffff) {\n        rVar13 = _REG_NOERROR;\n      }\n      else {\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }\n    }" if (parenthesized_expression "(cur_str == prVar28->str_idx)" ( (binary_expression "cur_str == prVar28->str_idx" identifier == (field_expression "prVar28->str_idx" identifier -> field_identifier)) )) (compound_statement "{\n      elem_00 = &cur_nodes->elems;\n      if (prVar21 == (re_dfa_t *)0xffffffff) {\n        rVar13 = _REG_NOERROR;\n      }\n      else {\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }\n    }" { (expression_statement "elem_00 = &cur_nodes->elems;" (assignment_expression "elem_00 = &cur_nodes->elems" identifier = (pointer_expression "&cur_nodes->elems" & (field_expression "cur_nodes->elems" identifier -> field_identifier))) ;) (if_statement "if (prVar21 == (re_dfa_t *)0xffffffff) {\n        rVar13 = _REG_NOERROR;\n      }\n      else {\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }" if (parenthesized_expression "(prVar21 == (re_dfa_t *)0xffffffff)" ( (binary_expression "prVar21 == (re_dfa_t *)0xffffffff" identifier == (cast_expression "(re_dfa_t *)0xffffffff" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        rVar13 = _REG_NOERROR;\n      }" { (expression_statement "rVar13 = _REG_NOERROR;" (assignment_expression "rVar13 = _REG_NOERROR" identifier = identifier) ;) }) (else_clause "else {\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }" else (compound_statement "{\n        dfa = mctx->dfa;\n        pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);\n        pprVar17 = pprVar6;\nLAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');\n      }" { (expression_statement "dfa = mctx->dfa;" (assignment_expression "dfa = mctx->dfa" identifier = (field_expression "mctx->dfa" identifier -> field_identifier)) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_0005332c + -0x28b4)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x28b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x28b4)" ( (binary_expression "PTR_LAB_0005332c + -0x28b4" identifier + number_literal) )))) ;) (expression_statement "pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_0005332c + -0x2f90)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x2f90)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x2f90)" ( (binary_expression "PTR_LAB_0005332c + -0x2f90" identifier + number_literal) )))) ;) (expression_statement "pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548);" (assignment_expression "pcVar9 = (code *)(PTR_LAB_0005332c + -0x6548)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x6548)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x6548)" ( (binary_expression "PTR_LAB_0005332c + -0x6548" identifier + number_literal) )))) ;) (expression_statement "pprVar17 = pprVar6;" (assignment_expression "pprVar17 = pprVar6" identifier = identifier) ;) (labeled_statement "LAB_0002ddac:\n        do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');" statement_identifier : (do_statement "do {\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        } while (*pcVar1 != '\0');" do (compound_statement "{\n          prStack_60 = (re_dfa_t *)prVar28->node;\n          set = (re_node_set *)cur_nodes->nelem;\n          elem = (re_dfa_t *)elem_00;\n          prVar25 = prStack_60;\n          IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);\n          if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }\nLAB_0002dda0:\n          pcVar1 = &prVar28->more;\n          rVar13 = _REG_NOERROR;\n          prVar25 = elem;\n          pprVar6 = pprVar17;\n          prVar28 = prVar28 + 1;\n        }" { (expression_statement "prStack_60 = (re_dfa_t *)prVar28->node;" (assignment_expression "prStack_60 = (re_dfa_t *)prVar28->node" identifier = (cast_expression "(re_dfa_t *)prVar28->node" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "prVar28->node" identifier -> field_identifier))) ;) (expression_statement "set = (re_node_set *)cur_nodes->nelem;" (assignment_expression "set = (re_node_set *)cur_nodes->nelem" identifier = (cast_expression "(re_node_set *)cur_nodes->nelem" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "cur_nodes->nelem" identifier -> field_identifier))) ;) (expression_statement "elem = (re_dfa_t *)elem_00;" (assignment_expression "elem = (re_dfa_t *)elem_00" identifier = (cast_expression "(re_dfa_t *)elem_00" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prVar25 = prStack_60;" (assignment_expression "prVar25 = prStack_60" identifier = identifier) ;) (expression_statement "IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60);" (assignment_expression "IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60)" identifier = (call_expression "re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prStack_60)" identifier (argument_list "(set,(Idx)elem_00,(re_node_set *)prStack_60)" ( identifier , (cast_expression "(Idx)elem_00" ( (type_descriptor "Idx" type_identifier) ) identifier) , (cast_expression "(re_node_set *)prStack_60" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (IVar10 != 0) {\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }" if (parenthesized_expression "(IVar10 != 0)" ( (binary_expression "IVar10 != 0" identifier != number_literal) )) (compound_statement "{\n            iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;\n            if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }\n          }" { (expression_statement "iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from;" (assignment_expression "iVar24 = (cur_str + prVar28->subexp_to) - prVar28->subexp_from" identifier = (binary_expression "(cur_str + prVar28->subexp_to) - prVar28->subexp_from" (parenthesized_expression "(cur_str + prVar28->subexp_to)" ( (binary_expression "cur_str + prVar28->subexp_to" identifier + (field_expression "prVar28->subexp_to" identifier -> field_identifier)) )) - (field_expression "prVar28->subexp_from" identifier -> field_identifier))) ;) (if_statement "if (cur_str == iVar24) {\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }" if (parenthesized_expression "(cur_str == iVar24)" ( (binary_expression "cur_str == iVar24" identifier == identifier) )) (compound_statement "{\n              prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;\n              elem = (re_dfa_t *)elem_00;\n              prStack_60 = prVar25;\n              IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);\n              if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }\n            }" { (expression_statement "prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems;" (assignment_expression "prVar25 = (re_dfa_t *)*dfa->edests[(int)prVar25].elems" identifier = (cast_expression "(re_dfa_t *)*dfa->edests[(int)prVar25].elems" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*dfa->edests[(int)prVar25].elems" * (field_expression "dfa->edests[(int)prVar25].elems" (subscript_expression "dfa->edests[(int)prVar25]" (field_expression "dfa->edests" identifier -> field_identifier) [ (cast_expression "(int)prVar25" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier)))) ;) (expression_statement "elem = (re_dfa_t *)elem_00;" (assignment_expression "elem = (re_dfa_t *)elem_00" identifier = (cast_expression "(re_dfa_t *)elem_00" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prStack_60 = prVar25;" (assignment_expression "prStack_60 = prVar25" identifier = identifier) ;) (expression_statement "IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25);" (assignment_expression "IVar10 = re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25)" identifier = (call_expression "re_node_set_contains(set,(Idx)elem_00,(re_node_set *)prVar25)" identifier (argument_list "(set,(Idx)elem_00,(re_node_set *)prVar25)" ( identifier , (cast_expression "(Idx)elem_00" ( (type_descriptor "Idx" type_identifier) ) identifier) , (cast_expression "(re_node_set *)prVar25" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (IVar10 == 0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }" if (parenthesized_expression "(IVar10 == 0)" ( (binary_expression "IVar10 == 0" identifier == number_literal) )) (compound_statement "{\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }\n                prVar25 = (re_dfa_t *)&new_dests;\n                prStack_60 = (re_dfa_t *)subexp_num;\n                pprVar17 = (re_dfastate_t **)type;\n                rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);\n                rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);\n                (*(code *)PTR_free_000534fc)(new_dests.elems);\n                rVar13 = err;\n                pprVar6 = pprVar17;\n                if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;\n                prVar28 = mctx->bkref_ents + (int)prVar21;\n                goto LAB_0002ddac;\n              }" { (expression_statement "new_dests.alloc = 1;" (assignment_expression "new_dests.alloc = 1" (field_expression "new_dests.alloc" identifier . field_identifier) = number_literal) ;) (expression_statement "new_dests.nelem = 1;" (assignment_expression "new_dests.nelem = 1" (field_expression "new_dests.nelem" identifier . field_identifier) = number_literal) ;) (expression_statement "new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);" (assignment_expression "new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4)" (field_expression "new_dests.elems" identifier . field_identifier) = (cast_expression "(Idx *)(*(code *)PTR_malloc_00053474)(4)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(4)" (parenthesized_expression "(*(code *)PTR_malloc_00053474)" ( (pointer_expression "*(code *)PTR_malloc_00053474" * (cast_expression "(code *)PTR_malloc_00053474" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(4)" ( number_literal ))))) ;) (if_statement "if (new_dests.elems == (Idx *)0x0) {\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }\n                else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }" if (parenthesized_expression "(new_dests.elems == (Idx *)0x0)" ( (binary_expression "new_dests.elems == (Idx *)0x0" (field_expression "new_dests.elems" identifier . field_identifier) == (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  new_dests.nelem = 0;\n                  err = _REG_ESPACE;\n                  new_dests.alloc = 0;\n                }" { (expression_statement "new_dests.nelem = 0;" (assignment_expression "new_dests.nelem = 0" (field_expression "new_dests.nelem" identifier . field_identifier) = number_literal) ;) (expression_statement "err = _REG_ESPACE;" (assignment_expression "err = _REG_ESPACE" identifier = identifier) ;) (expression_statement "new_dests.alloc = 0;" (assignment_expression "new_dests.alloc = 0" (field_expression "new_dests.alloc" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }" else (compound_statement "{\n                  *new_dests.elems = (Idx)prVar25;\n                  err = _REG_NOERROR;\n                }" { (expression_statement "*new_dests.elems = (Idx)prVar25;" (assignment_expression "*new_dests.elems = (Idx)prVar25" (pointer_expression "*new_dests.elems" * (field_expression "new_dests.elems" identifier . field_identifier)) = (cast_expression "(Idx)prVar25" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "err = _REG_NOERROR;" (assignment_expression "err = _REG_NOERROR" identifier = identifier) ;) }))) (expression_statement "prVar25 = (re_dfa_t *)&new_dests;" (assignment_expression "prVar25 = (re_dfa_t *)&new_dests" identifier = (cast_expression "(re_dfa_t *)&new_dests" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&new_dests" & identifier))) ;) (expression_statement "prStack_60 = (re_dfa_t *)subexp_num;" (assignment_expression "prStack_60 = (re_dfa_t *)subexp_num" identifier = (cast_expression "(re_dfa_t *)subexp_num" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pprVar17 = (re_dfastate_t **)type;" (assignment_expression "pprVar17 = (re_dfastate_t **)type" identifier = (cast_expression "(re_dfastate_t **)type" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type);" (assignment_expression "rVar11 = check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type)" identifier = (call_expression "check_arrival_expand_ecl(dfa,(re_node_set *)prVar25,subexp_num,type)" identifier (argument_list "(dfa,(re_node_set *)prVar25,subexp_num,type)" ( identifier , (cast_expression "(re_node_set *)prVar25" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (expression_statement "rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25);" (assignment_expression "rVar12 = re_node_set_merge(cur_nodes,(re_node_set *)prVar25)" identifier = (call_expression "re_node_set_merge(cur_nodes,(re_node_set *)prVar25)" identifier (argument_list "(cur_nodes,(re_node_set *)prVar25)" ( identifier , (cast_expression "(re_node_set *)prVar25" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(new_dests.elems);" (call_expression "(*(code *)PTR_free_000534fc)(new_dests.elems)" (parenthesized_expression "(*(code *)PTR_free_000534fc)" ( (pointer_expression "*(code *)PTR_free_000534fc" * (cast_expression "(code *)PTR_free_000534fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(new_dests.elems)" ( (field_expression "new_dests.elems" identifier . field_identifier) ))) ;) (expression_statement "rVar13 = err;" (assignment_expression "rVar13 = err" identifier = identifier) ;) (expression_statement "pprVar6 = pprVar17;" (assignment_expression "pprVar6 = pprVar17" identifier = identifier) ;) (if_statement "if (((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)) break;" if (parenthesized_expression "(((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR))" ( (binary_expression "((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)) ||\n                   (rVar13 = rVar12, rVar12 != _REG_NOERROR)" (parenthesized_expression "((err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR))" ( (binary_expression "(err != _REG_NOERROR) || (rVar13 = rVar11, rVar11 != _REG_NOERROR)" (parenthesized_expression "(err != _REG_NOERROR)" ( (binary_expression "err != _REG_NOERROR" identifier != identifier) )) || (parenthesized_expression "(rVar13 = rVar11, rVar11 != _REG_NOERROR)" ( (comma_expression "rVar13 = rVar11, rVar11 != _REG_NOERROR" (assignment_expression "rVar13 = rVar11" identifier = identifier) , (binary_expression "rVar11 != _REG_NOERROR" identifier != identifier)) ))) )) || (parenthesized_expression "(rVar13 = rVar12, rVar12 != _REG_NOERROR)" ( (comma_expression "rVar13 = rVar12, rVar12 != _REG_NOERROR" (assignment_expression "rVar13 = rVar12" identifier = identifier) , (binary_expression "rVar12 != _REG_NOERROR" identifier != identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "prVar28 = mctx->bkref_ents + (int)prVar21;" (assignment_expression "prVar28 = mctx->bkref_ents + (int)prVar21" identifier = (binary_expression "mctx->bkref_ents + (int)prVar21" (field_expression "mctx->bkref_ents" identifier -> field_identifier) + (cast_expression "(int)prVar21" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_0002ddac;" goto statement_identifier ;) })) }) (else_clause "else {\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }" else (compound_statement "{\n              pprVar17 = mctx->state_log + iVar24;\n              prVar23 = *pprVar17;\n              prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];\n              if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }\n              prStack_60 = (re_dfa_t *)&new_dests;\n              elem = dfa;\n              prVar23 = (re_dfastate_t *)(*pcVar7)(&err);\n              puVar3 = PTR_free_000534fc;\n              *pprVar17 = prVar23;\n              (*(code *)puVar3)(new_dests.elems);\n              if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;\n            }" { (expression_statement "pprVar17 = mctx->state_log + iVar24;" (assignment_expression "pprVar17 = mctx->state_log + iVar24" identifier = (binary_expression "mctx->state_log + iVar24" (field_expression "mctx->state_log" identifier -> field_identifier) + identifier)) ;) (expression_statement "prVar23 = *pprVar17;" (assignment_expression "prVar23 = *pprVar17" identifier = (pointer_expression "*pprVar17" * identifier)) ;) (expression_statement "prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25];" (assignment_expression "prVar25 = (re_dfa_t *)dfa->nexts[(int)prVar25]" identifier = (cast_expression "(re_dfa_t *)dfa->nexts[(int)prVar25]" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "dfa->nexts[(int)prVar25]" (field_expression "dfa->nexts" identifier -> field_identifier) [ (cast_expression "(int)prVar25" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;) (if_statement "if (prVar23 == (re_dfastate_t *)0x0) {\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }\n              else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }" if (parenthesized_expression "(prVar23 == (re_dfastate_t *)0x0)" ( (binary_expression "prVar23 == (re_dfastate_t *)0x0" identifier == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                new_dests.alloc = 1;\n                new_dests.nelem = 1;\n                pprVar6 = pprVar17;\n                new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);\n                if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }\n                *new_dests.elems = (Idx)prVar25;\n                err = _REG_NOERROR;\n              }" { (expression_statement "new_dests.alloc = 1;" (assignment_expression "new_dests.alloc = 1" (field_expression "new_dests.alloc" identifier . field_identifier) = number_literal) ;) (expression_statement "new_dests.nelem = 1;" (assignment_expression "new_dests.nelem = 1" (field_expression "new_dests.nelem" identifier . field_identifier) = number_literal) ;) (expression_statement "pprVar6 = pprVar17;" (assignment_expression "pprVar6 = pprVar17" identifier = identifier) ;) (expression_statement "new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4);" (assignment_expression "new_dests.elems = (Idx *)(*(code *)PTR_malloc_00053474)(4)" (field_expression "new_dests.elems" identifier . field_identifier) = (cast_expression "(Idx *)(*(code *)PTR_malloc_00053474)(4)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(4)" (parenthesized_expression "(*(code *)PTR_malloc_00053474)" ( (pointer_expression "*(code *)PTR_malloc_00053474" * (cast_expression "(code *)PTR_malloc_00053474" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(4)" ( number_literal ))))) ;) (if_statement "if (new_dests.elems == (Idx *)0x0) {\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }" if (parenthesized_expression "(new_dests.elems == (Idx *)0x0)" ( (binary_expression "new_dests.elems == (Idx *)0x0" (field_expression "new_dests.elems" identifier . field_identifier) == (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002df78:\n                  rVar13 = _REG_ESPACE;\n                  prVar25 = elem;\n                  break;\n                }" { (labeled_statement "LAB_0002df78:\n                  rVar13 = _REG_ESPACE;" statement_identifier : (expression_statement "rVar13 = _REG_ESPACE;" (assignment_expression "rVar13 = _REG_ESPACE" identifier = identifier) ;)) (expression_statement "prVar25 = elem;" (assignment_expression "prVar25 = elem" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "*new_dests.elems = (Idx)prVar25;" (assignment_expression "*new_dests.elems = (Idx)prVar25" (pointer_expression "*new_dests.elems" * (field_expression "new_dests.elems" identifier . field_identifier)) = (cast_expression "(Idx)prVar25" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "err = _REG_NOERROR;" (assignment_expression "err = _REG_NOERROR" identifier = identifier) ;) }) (else_clause "else {\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }" else (compound_statement "{\n                elem = (re_dfa_t *)&(prVar23->nodes).elems;\n                prStack_60 = prVar25;\n                IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);\n                if (IVar10 != 0) goto LAB_0002dda0;\n                err = (*pcVar8)(&new_dests,&prVar23->nodes);\n                iVar26 = (*pcVar9)(&new_dests);\n                if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }\n                pprVar17 = mctx->state_log + iVar24;\n              }" { (expression_statement "elem = (re_dfa_t *)&(prVar23->nodes).elems;" (assignment_expression "elem = (re_dfa_t *)&(prVar23->nodes).elems" identifier = (cast_expression "(re_dfa_t *)&(prVar23->nodes).elems" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(prVar23->nodes).elems" & (field_expression "(prVar23->nodes).elems" (parenthesized_expression "(prVar23->nodes)" ( (field_expression "prVar23->nodes" identifier -> field_identifier) )) . field_identifier)))) ;) (expression_statement "prStack_60 = prVar25;" (assignment_expression "prStack_60 = prVar25" identifier = identifier) ;) (expression_statement "IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25);" (assignment_expression "IVar10 = re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25)" identifier = (call_expression "re_node_set_contains\n                                   ((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25)" identifier (argument_list "((re_node_set *)(prVar23->nodes).nelem,(Idx)elem,\n                                    (re_node_set *)prVar25)" ( (cast_expression "(re_node_set *)(prVar23->nodes).nelem" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(prVar23->nodes).nelem" (parenthesized_expression "(prVar23->nodes)" ( (field_expression "prVar23->nodes" identifier -> field_identifier) )) . field_identifier)) , (cast_expression "(Idx)elem" ( (type_descriptor "Idx" type_identifier) ) identifier) , (cast_expression "(re_node_set *)prVar25" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (IVar10 != 0) goto LAB_0002dda0;" if (parenthesized_expression "(IVar10 != 0)" ( (binary_expression "IVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002dda0;" goto statement_identifier ;)) (expression_statement "err = (*pcVar8)(&new_dests,&prVar23->nodes);" (assignment_expression "err = (*pcVar8)(&new_dests,&prVar23->nodes)" identifier = (call_expression "(*pcVar8)(&new_dests,&prVar23->nodes)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(&new_dests,&prVar23->nodes)" ( (pointer_expression "&new_dests" & identifier) , (pointer_expression "&prVar23->nodes" & (field_expression "prVar23->nodes" identifier -> field_identifier)) )))) ;) (expression_statement "iVar26 = (*pcVar9)(&new_dests);" (assignment_expression "iVar26 = (*pcVar9)(&new_dests)" identifier = (call_expression "(*pcVar9)(&new_dests)" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "(&new_dests)" ( (pointer_expression "&new_dests" & identifier) )))) ;) (if_statement "if ((err != _REG_NOERROR) || (iVar26 == 0)) {\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }" if (parenthesized_expression "((err != _REG_NOERROR) || (iVar26 == 0))" ( (binary_expression "(err != _REG_NOERROR) || (iVar26 == 0)" (parenthesized_expression "(err != _REG_NOERROR)" ( (binary_expression "err != _REG_NOERROR" identifier != identifier) )) || (parenthesized_expression "(iVar26 == 0)" ( (binary_expression "iVar26 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                  (*(code *)PTR_free_000534fc)(new_dests.elems);\n                  rVar13 = err;\n                  elem = prVar25;\n                  pprVar6 = pprVar17;\n                  if (err == _REG_NOERROR) goto LAB_0002df78;\n                  break;\n                }" { (expression_statement "(*(code *)PTR_free_000534fc)(new_dests.elems);" (call_expression "(*(code *)PTR_free_000534fc)(new_dests.elems)" (parenthesized_expression "(*(code *)PTR_free_000534fc)" ( (pointer_expression "*(code *)PTR_free_000534fc" * (cast_expression "(code *)PTR_free_000534fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(new_dests.elems)" ( (field_expression "new_dests.elems" identifier . field_identifier) ))) ;) (expression_statement "rVar13 = err;" (assignment_expression "rVar13 = err" identifier = identifier) ;) (expression_statement "elem = prVar25;" (assignment_expression "elem = prVar25" identifier = identifier) ;) (expression_statement "pprVar6 = pprVar17;" (assignment_expression "pprVar6 = pprVar17" identifier = identifier) ;) (if_statement "if (err == _REG_NOERROR) goto LAB_0002df78;" if (parenthesized_expression "(err == _REG_NOERROR)" ( (binary_expression "err == _REG_NOERROR" identifier == identifier) )) (goto_statement "goto LAB_0002df78;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "pprVar17 = mctx->state_log + iVar24;" (assignment_expression "pprVar17 = mctx->state_log + iVar24" identifier = (binary_expression "mctx->state_log + iVar24" (field_expression "mctx->state_log" identifier -> field_identifier) + identifier)) ;) }))) (expression_statement "prStack_60 = (re_dfa_t *)&new_dests;" (assignment_expression "prStack_60 = (re_dfa_t *)&new_dests" identifier = (cast_expression "(re_dfa_t *)&new_dests" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&new_dests" & identifier))) ;) (expression_statement "elem = dfa;" (assignment_expression "elem = dfa" identifier = identifier) ;) (expression_statement "prVar23 = (re_dfastate_t *)(*pcVar7)(&err);" (assignment_expression "prVar23 = (re_dfastate_t *)(*pcVar7)(&err)" identifier = (cast_expression "(re_dfastate_t *)(*pcVar7)(&err)" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar7)(&err)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(&err)" ( (pointer_expression "&err" & identifier) ))))) ;) (expression_statement "puVar3 = PTR_free_000534fc;" (assignment_expression "puVar3 = PTR_free_000534fc" identifier = identifier) ;) (expression_statement "*pprVar17 = prVar23;" (assignment_expression "*pprVar17 = prVar23" (pointer_expression "*pprVar17" * identifier) = identifier) ;) (expression_statement "(*(code *)puVar3)(new_dests.elems);" (call_expression "(*(code *)puVar3)(new_dests.elems)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(new_dests.elems)" ( (field_expression "new_dests.elems" identifier . field_identifier) ))) ;) (if_statement "if ((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)) break;" if (parenthesized_expression "((mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR))" ( (binary_expression "(mctx->state_log[iVar24] == (re_dfastate_t *)0x0) &&\n                 (rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)" (parenthesized_expression "(mctx->state_log[iVar24] == (re_dfastate_t *)0x0)" ( (binary_expression "mctx->state_log[iVar24] == (re_dfastate_t *)0x0" (subscript_expression "mctx->state_log[iVar24]" (field_expression "mctx->state_log" identifier -> field_identifier) [ identifier ]) == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR)" ( (comma_expression "rVar13 = err, prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR" (assignment_expression "rVar13 = err" identifier = identifier) , (comma_expression "prVar25 = elem, pprVar6 = pprVar17, err != _REG_NOERROR" (assignment_expression "prVar25 = elem" identifier = identifier) , (comma_expression "pprVar6 = pprVar17, err != _REG_NOERROR" (assignment_expression "pprVar6 = pprVar17" identifier = identifier) , (binary_expression "err != _REG_NOERROR" identifier != identifier)))) ))) )) (break_statement "break;" break ;)) }))) })) (labeled_statement "LAB_0002dda0:\n          pcVar1 = &prVar28->more;" statement_identifier : (expression_statement "pcVar1 = &prVar28->more;" (assignment_expression "pcVar1 = &prVar28->more" identifier = (pointer_expression "&prVar28->more" & (field_expression "prVar28->more" identifier -> field_identifier))) ;)) (expression_statement "rVar13 = _REG_NOERROR;" (assignment_expression "rVar13 = _REG_NOERROR" identifier = identifier) ;) (expression_statement "prVar25 = elem;" (assignment_expression "prVar25 = elem" identifier = identifier) ;) (expression_statement "pprVar6 = pprVar17;" (assignment_expression "pprVar6 = pprVar17" identifier = identifier) ;) (expression_statement "prVar28 = prVar28 + 1;" (assignment_expression "prVar28 = prVar28 + 1" identifier = (binary_expression "prVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar1 != '\0')" ( (binary_expression "*pcVar1 != '\0'" (pointer_expression "*pcVar1" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) ;)) }))) })) })) (if_statement "if (iVar4 == *(int *)puVar29) {\n    return rVar13;\n  }" if (parenthesized_expression "(iVar4 == *(int *)puVar29)" ( (binary_expression "iVar4 == *(int *)puVar29" identifier == (pointer_expression "*(int *)puVar29" * (cast_expression "(int *)puVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return rVar13;\n  }" { (return_statement "return rVar13;" return identifier ;) })) (expression_statement "puVar29 = PTR___stack_chk_fail_000534d4;" (assignment_expression "puVar29 = PTR___stack_chk_fail_000534d4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000534d4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000534d4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000534d4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000534d4" * (cast_expression "(code *)PTR___stack_chk_fail_000534d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "prVar22 = prVar25->nodes;" (assignment_expression "prVar22 = prVar25->nodes" identifier = (field_expression "prVar25->nodes" identifier -> field_identifier)) ;) (expression_statement "piVar27 = *(int **)(iVar4 + 0x54);" (assignment_expression "piVar27 = *(int **)(iVar4 + 0x54)" identifier = (pointer_expression "*(int **)(iVar4 + 0x54)" * (cast_expression "(int **)(iVar4 + 0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x54)" ( (binary_expression "iVar4 + 0x54" identifier + number_literal) ))))) ;) (if_statement "if (0 < (int)prVar22) {\n    iVar24 = 0;\n    do {\n      while( true ) {\n        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;\n        puVar14 = (uint *)(*piVar27 + iVar26 * 8);\n        iVar24 = iVar24 + 1;\n        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;\n        if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }\n      }\n      iVar19 = *(int *)(iVar4 + 0x7c);\n      iVar30 = *(int *)(iVar4 + 0x84);\n      if (iVar19 == *(int *)(iVar4 + 0x80)) {\n        iVar16 = iVar19 << 1;\n        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);\n        if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }\n        iVar19 = *(int *)(iVar4 + 0x7c);\n        *(int *)(iVar4 + 0x84) = iVar30;\n        *(int *)(iVar4 + 0x80) = iVar16;\n      }\n      piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18);\n      *(int **)(iVar30 + iVar19 * 4) = piVar15;\n      if (piVar15 == (int *)0x0) {\n        return _REG_ESPACE;\n      }\n      *(int *)(iVar4 + 0x7c) = iVar19 + 1;\n      piVar15[1] = iVar26;\n      *piVar15 = (int)pprVar6;\n      prVar22 = prVar25->nodes;\n    } while (iVar24 < (int)prVar22);\n  }" if (parenthesized_expression "(0 < (int)prVar22)" ( (binary_expression "0 < (int)prVar22" number_literal < (cast_expression "(int)prVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    iVar24 = 0;\n    do {\n      while( true ) {\n        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;\n        puVar14 = (uint *)(*piVar27 + iVar26 * 8);\n        iVar24 = iVar24 + 1;\n        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;\n        if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }\n      }\n      iVar19 = *(int *)(iVar4 + 0x7c);\n      iVar30 = *(int *)(iVar4 + 0x84);\n      if (iVar19 == *(int *)(iVar4 + 0x80)) {\n        iVar16 = iVar19 << 1;\n        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);\n        if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }\n        iVar19 = *(int *)(iVar4 + 0x7c);\n        *(int *)(iVar4 + 0x84) = iVar30;\n        *(int *)(iVar4 + 0x80) = iVar16;\n      }\n      piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18);\n      *(int **)(iVar30 + iVar19 * 4) = piVar15;\n      if (piVar15 == (int *)0x0) {\n        return _REG_ESPACE;\n      }\n      *(int *)(iVar4 + 0x7c) = iVar19 + 1;\n      piVar15[1] = iVar26;\n      *piVar15 = (int)pprVar6;\n      prVar22 = prVar25->nodes;\n    } while (iVar24 < (int)prVar22);\n  }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;\n        puVar14 = (uint *)(*piVar27 + iVar26 * 8);\n        iVar24 = iVar24 + 1;\n        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;\n        if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }\n      }\n      iVar19 = *(int *)(iVar4 + 0x7c);\n      iVar30 = *(int *)(iVar4 + 0x84);\n      if (iVar19 == *(int *)(iVar4 + 0x80)) {\n        iVar16 = iVar19 << 1;\n        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);\n        if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }\n        iVar19 = *(int *)(iVar4 + 0x7c);\n        *(int *)(iVar4 + 0x84) = iVar30;\n        *(int *)(iVar4 + 0x80) = iVar16;\n      }\n      piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18);\n      *(int **)(iVar30 + iVar19 * 4) = piVar15;\n      if (piVar15 == (int *)0x0) {\n        return _REG_ESPACE;\n      }\n      *(int *)(iVar4 + 0x7c) = iVar19 + 1;\n      piVar15[1] = iVar26;\n      *piVar15 = (int)pprVar6;\n      prVar22 = prVar25->nodes;\n    } while (iVar24 < (int)prVar22);" do (compound_statement "{\n      while( true ) {\n        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;\n        puVar14 = (uint *)(*piVar27 + iVar26 * 8);\n        iVar24 = iVar24 + 1;\n        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;\n        if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }\n      }\n      iVar19 = *(int *)(iVar4 + 0x7c);\n      iVar30 = *(int *)(iVar4 + 0x84);\n      if (iVar19 == *(int *)(iVar4 + 0x80)) {\n        iVar16 = iVar19 << 1;\n        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);\n        if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }\n        iVar19 = *(int *)(iVar4 + 0x7c);\n        *(int *)(iVar4 + 0x84) = iVar30;\n        *(int *)(iVar4 + 0x80) = iVar16;\n      }\n      piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18);\n      *(int **)(iVar30 + iVar19 * 4) = piVar15;\n      if (piVar15 == (int *)0x0) {\n        return _REG_ESPACE;\n      }\n      *(int *)(iVar4 + 0x7c) = iVar19 + 1;\n      piVar15[1] = iVar26;\n      *piVar15 = (int)pprVar6;\n      prVar22 = prVar25->nodes;\n    }" { (while_statement "while( true ) {\n        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;\n        puVar14 = (uint *)(*piVar27 + iVar26 * 8);\n        iVar24 = iVar24 + 1;\n        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;\n        if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;\n        puVar14 = (uint *)(*piVar27 + iVar26 * 8);\n        iVar24 = iVar24 + 1;\n        if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;\n        if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }\n      }" { (expression_statement "iVar26 = (&prStack_60->nodes->opr)[iVar24].idx;" (assignment_expression "iVar26 = (&prStack_60->nodes->opr)[iVar24].idx" identifier = (field_expression "(&prStack_60->nodes->opr)[iVar24].idx" (subscript_expression "(&prStack_60->nodes->opr)[iVar24]" (parenthesized_expression "(&prStack_60->nodes->opr)" ( (pointer_expression "&prStack_60->nodes->opr" & (field_expression "prStack_60->nodes->opr" (field_expression "prStack_60->nodes" identifier -> field_identifier) -> field_identifier)) )) [ identifier ]) . field_identifier)) ;) (expression_statement "puVar14 = (uint *)(*piVar27 + iVar26 * 8);" (assignment_expression "puVar14 = (uint *)(*piVar27 + iVar26 * 8)" identifier = (cast_expression "(uint *)(*piVar27 + iVar26 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar27 + iVar26 * 8)" ( (binary_expression "*piVar27 + iVar26 * 8" (pointer_expression "*piVar27" * identifier) + (binary_expression "iVar26 * 8" identifier * number_literal)) )))) ;) (expression_statement "iVar24 = iVar24 + 1;" (assignment_expression "iVar24 = iVar24 + 1" identifier = (binary_expression "iVar24 + 1" identifier + number_literal)) ;) (if_statement "if (((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)) break;" if (parenthesized_expression "(((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0))" ( (binary_expression "((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)) &&\n           (((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)" (parenthesized_expression "((*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20))" ( (binary_expression "(*(char *)(puVar14 + 1) == '\b') && (uVar18 = *puVar14, (int)uVar18 < 0x20)" (parenthesized_expression "(*(char *)(puVar14 + 1) == '\b')" ( (binary_expression "*(char *)(puVar14 + 1) == '\b'" (pointer_expression "*(char *)(puVar14 + 1)" * (cast_expression "(char *)(puVar14 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 1)" ( (binary_expression "puVar14 + 1" identifier + number_literal) )))) == (char_literal "'\b'" ' escape_sequence ')) )) && (parenthesized_expression "(uVar18 = *puVar14, (int)uVar18 < 0x20)" ( (comma_expression "uVar18 = *puVar14, (int)uVar18 < 0x20" (assignment_expression "uVar18 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) , (binary_expression "(int)uVar18 < 0x20" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) ))) )) && (parenthesized_expression "(((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0)" ( (binary_expression "((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1) != 0" (parenthesized_expression "((uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1)" ( (binary_expression "(uint)piVar27[0x14] >> (uVar18 & 0x1f) & 1" (binary_expression "(uint)piVar27[0x14] >> (uVar18 & 0x1f)" (cast_expression "(uint)piVar27[0x14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar27[0x14]" identifier [ number_literal ])) >> (parenthesized_expression "(uVar18 & 0x1f)" ( (binary_expression "uVar18 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (break_statement "break;" break ;)) (if_statement "if ((int)prVar22 <= iVar24) {\n          return _REG_NOERROR;\n        }" if (parenthesized_expression "((int)prVar22 <= iVar24)" ( (binary_expression "(int)prVar22 <= iVar24" (cast_expression "(int)prVar22" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          return _REG_NOERROR;\n        }" { (return_statement "return _REG_NOERROR;" return identifier ;) })) })) (expression_statement "iVar19 = *(int *)(iVar4 + 0x7c);" (assignment_expression "iVar19 = *(int *)(iVar4 + 0x7c)" identifier = (pointer_expression "*(int *)(iVar4 + 0x7c)" * (cast_expression "(int *)(iVar4 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x7c)" ( (binary_expression "iVar4 + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "iVar30 = *(int *)(iVar4 + 0x84);" (assignment_expression "iVar30 = *(int *)(iVar4 + 0x84)" identifier = (pointer_expression "*(int *)(iVar4 + 0x84)" * (cast_expression "(int *)(iVar4 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x84)" ( (binary_expression "iVar4 + 0x84" identifier + number_literal) ))))) ;) (if_statement "if (iVar19 == *(int *)(iVar4 + 0x80)) {\n        iVar16 = iVar19 << 1;\n        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);\n        if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }\n        iVar19 = *(int *)(iVar4 + 0x7c);\n        *(int *)(iVar4 + 0x84) = iVar30;\n        *(int *)(iVar4 + 0x80) = iVar16;\n      }" if (parenthesized_expression "(iVar19 == *(int *)(iVar4 + 0x80))" ( (binary_expression "iVar19 == *(int *)(iVar4 + 0x80)" identifier == (pointer_expression "*(int *)(iVar4 + 0x80)" * (cast_expression "(int *)(iVar4 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x80)" ( (binary_expression "iVar4 + 0x80" identifier + number_literal) ))))) )) (compound_statement "{\n        iVar16 = iVar19 << 1;\n        iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);\n        if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }\n        iVar19 = *(int *)(iVar4 + 0x7c);\n        *(int *)(iVar4 + 0x84) = iVar30;\n        *(int *)(iVar4 + 0x80) = iVar16;\n      }" { (expression_statement "iVar16 = iVar19 << 1;" (assignment_expression "iVar16 = iVar19 << 1" identifier = (binary_expression "iVar19 << 1" identifier << number_literal)) ;) (expression_statement "iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3);" (assignment_expression "iVar30 = (**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3)" identifier = (call_expression "(**(code **)(puVar29 + 0x254c4))(iVar30,iVar19 << 3)" (parenthesized_expression "(**(code **)(puVar29 + 0x254c4))" ( (pointer_expression "**(code **)(puVar29 + 0x254c4)" * (pointer_expression "*(code **)(puVar29 + 0x254c4)" * (cast_expression "(code **)(puVar29 + 0x254c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x254c4)" ( (binary_expression "puVar29 + 0x254c4" identifier + number_literal) ))))) )) (argument_list "(iVar30,iVar19 << 3)" ( identifier , (binary_expression "iVar19 << 3" identifier << number_literal) )))) ;) (if_statement "if (iVar30 == 0) {\n          return _REG_ESPACE;\n        }" if (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) (compound_statement "{\n          return _REG_ESPACE;\n        }" { (return_statement "return _REG_ESPACE;" return identifier ;) })) (expression_statement "iVar19 = *(int *)(iVar4 + 0x7c);" (assignment_expression "iVar19 = *(int *)(iVar4 + 0x7c)" identifier = (pointer_expression "*(int *)(iVar4 + 0x7c)" * (cast_expression "(int *)(iVar4 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x7c)" ( (binary_expression "iVar4 + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar4 + 0x84) = iVar30;" (assignment_expression "*(int *)(iVar4 + 0x84) = iVar30" (pointer_expression "*(int *)(iVar4 + 0x84)" * (cast_expression "(int *)(iVar4 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x84)" ( (binary_expression "iVar4 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar4 + 0x80) = iVar16;" (assignment_expression "*(int *)(iVar4 + 0x80) = iVar16" (pointer_expression "*(int *)(iVar4 + 0x80)" * (cast_expression "(int *)(iVar4 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x80)" ( (binary_expression "iVar4 + 0x80" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18);" (assignment_expression "piVar15 = (int *)(**(code **)(puVar29 + 0x253bc))(1,0x18)" identifier = (cast_expression "(int *)(**(code **)(puVar29 + 0x253bc))(1,0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar29 + 0x253bc))(1,0x18)" (parenthesized_expression "(**(code **)(puVar29 + 0x253bc))" ( (pointer_expression "**(code **)(puVar29 + 0x253bc)" * (pointer_expression "*(code **)(puVar29 + 0x253bc)" * (cast_expression "(code **)(puVar29 + 0x253bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x253bc)" ( (binary_expression "puVar29 + 0x253bc" identifier + number_literal) ))))) )) (argument_list "(1,0x18)" ( number_literal , number_literal ))))) ;) (expression_statement "*(int **)(iVar30 + iVar19 * 4) = piVar15;" (assignment_expression "*(int **)(iVar30 + iVar19 * 4) = piVar15" (pointer_expression "*(int **)(iVar30 + iVar19 * 4)" * (cast_expression "(int **)(iVar30 + iVar19 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar30 + iVar19 * 4)" ( (binary_expression "iVar30 + iVar19 * 4" identifier + (binary_expression "iVar19 * 4" identifier * number_literal)) )))) = identifier) ;) (if_statement "if (piVar15 == (int *)0x0) {\n        return _REG_ESPACE;\n      }" if (parenthesized_expression "(piVar15 == (int *)0x0)" ( (binary_expression "piVar15 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return _REG_ESPACE;\n      }" { (return_statement "return _REG_ESPACE;" return identifier ;) })) (expression_statement "*(int *)(iVar4 + 0x7c) = iVar19 + 1;" (assignment_expression "*(int *)(iVar4 + 0x7c) = iVar19 + 1" (pointer_expression "*(int *)(iVar4 + 0x7c)" * (cast_expression "(int *)(iVar4 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x7c)" ( (binary_expression "iVar4 + 0x7c" identifier + number_literal) )))) = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) (expression_statement "piVar15[1] = iVar26;" (assignment_expression "piVar15[1] = iVar26" (subscript_expression "piVar15[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar15 = (int)pprVar6;" (assignment_expression "*piVar15 = (int)pprVar6" (pointer_expression "*piVar15" * identifier) = (cast_expression "(int)pprVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "prVar22 = prVar25->nodes;" (assignment_expression "prVar22 = prVar25->nodes" identifier = (field_expression "prVar25->nodes" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(iVar24 < (int)prVar22)" ( (binary_expression "iVar24 < (int)prVar22" identifier < (cast_expression "(int)prVar22" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (return_statement "return _REG_NOERROR;" return identifier ;) })))
(translation_unit "int FUN_0002db70(int param_1,int param_2,int *param_3,int *param_4,int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int *piVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  undefined4 uVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  undefined *puVar21;\n  int local_3c [3];\n  int *local_30;\n  int local_2c;\n  \n  puVar21 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar15 = (int *)0x0;\n  piVar11 = *(int **)(param_1 + 0x6c);\n  piVar16 = param_3;\n  piVar19 = param_4;\n  while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }\nLAB_0002dc5c:\n  iVar2 = 0;\n  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }\n  if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }\n  iVar2 = local_2c;\n  puVar21 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  iVar3 = *piVar15;\n  piVar11 = *(int **)(iVar2 + 0x54);\n  if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }\n  return 0;\n}\n\n" (function_definition "int FUN_0002db70(int param_1,int param_2,int *param_3,int *param_4,int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int *piVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  undefined4 uVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  undefined *puVar21;\n  int local_3c [3];\n  int *local_30;\n  int local_2c;\n  \n  puVar21 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar15 = (int *)0x0;\n  piVar11 = *(int **)(param_1 + 0x6c);\n  piVar16 = param_3;\n  piVar19 = param_4;\n  while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }\nLAB_0002dc5c:\n  iVar2 = 0;\n  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }\n  if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }\n  iVar2 = local_2c;\n  puVar21 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  iVar3 = *piVar15;\n  piVar11 = *(int **)(iVar2 + 0x54);\n  if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }\n  return 0;\n}" primitive_type (function_declarator "FUN_0002db70(int param_1,int param_2,int *param_3,int *param_4,int *param_5)" identifier (parameter_list "(int param_1,int param_2,int *param_3,int *param_4,int *param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int *piVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  undefined4 uVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  undefined *puVar21;\n  int local_3c [3];\n  int *local_30;\n  int local_2c;\n  \n  puVar21 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar15 = (int *)0x0;\n  piVar11 = *(int **)(param_1 + 0x6c);\n  piVar16 = param_3;\n  piVar19 = param_4;\n  while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }\nLAB_0002dc5c:\n  iVar2 = 0;\n  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }\n  if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }\n  iVar2 = local_2c;\n  puVar21 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  iVar3 = *piVar15;\n  piVar11 = *(int **)(iVar2 + 0x54);\n  if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "undefined4 uVar17;" type_identifier identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "undefined *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar21 = PTR___stack_chk_guard_000534f0;" (assignment_expression "puVar21 = PTR___stack_chk_guard_000534f0" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000534f0;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000534f0" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000534f0" * (cast_expression "(int *)PTR___stack_chk_guard_000534f0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar15 = (int *)0x0;" (assignment_expression "piVar15 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar11 = *(int **)(param_1 + 0x6c);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x6c)" identifier = (pointer_expression "*(int **)(param_1 + 0x6c)" * (cast_expression "(int **)(param_1 + 0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "piVar16 = param_3;" (assignment_expression "piVar16 = param_3" identifier = identifier) ;) (expression_statement "piVar19 = param_4;" (assignment_expression "piVar19 = param_4" identifier = identifier) ;) (while_statement "while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }" while (parenthesized_expression "((int)piVar15 < (int)piVar11)" ( (binary_expression "(int)piVar15 < (int)piVar11" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }" { (expression_statement "piVar16 = *(int **)(param_1 + 0x74);" (assignment_expression "piVar16 = *(int **)(param_1 + 0x74)" identifier = (pointer_expression "*(int **)(param_1 + 0x74)" * (cast_expression "(int **)(param_1 + 0x74)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) ))))) ;) (expression_statement "piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);" (assignment_expression "piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2)" identifier = (cast_expression "(int *)(((int)piVar15 + (int)piVar11) / 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)piVar15 + (int)piVar11) / 2)" ( (binary_expression "((int)piVar15 + (int)piVar11) / 2" (parenthesized_expression "((int)piVar15 + (int)piVar11)" ( (binary_expression "(int)piVar15 + (int)piVar11" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) / number_literal) )))) ;) (expression_statement "iVar2 = piVar16[(int)piVar14 * 5 + 1];" (assignment_expression "iVar2 = piVar16[(int)piVar14 * 5 + 1]" identifier = (subscript_expression "piVar16[(int)piVar14 * 5 + 1]" identifier [ (binary_expression "(int)piVar14 * 5 + 1" (binary_expression "(int)piVar14 * 5" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ])) ;) (while_statement "while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }" while (parenthesized_expression "(piVar20 = piVar14, (int)param_3 <= iVar2)" ( (comma_expression "piVar20 = piVar14, (int)param_3 <= iVar2" (assignment_expression "piVar20 = piVar14" identifier = identifier) , (binary_expression "(int)param_3 <= iVar2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier)) )) (compound_statement "{\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }" { (if_statement "if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;" if (parenthesized_expression "((int)piVar20 <= (int)piVar15)" ( (binary_expression "(int)piVar20 <= (int)piVar15" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002dc5c;" goto statement_identifier ;)) (expression_statement "piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);" (assignment_expression "piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2)" identifier = (cast_expression "(int *)(((int)piVar15 + (int)piVar20) / 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)piVar15 + (int)piVar20) / 2)" ( (binary_expression "((int)piVar15 + (int)piVar20) / 2" (parenthesized_expression "((int)piVar15 + (int)piVar20)" ( (binary_expression "(int)piVar15 + (int)piVar20" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) / number_literal) )))) ;) (expression_statement "piVar14 = piVar19;" (assignment_expression "piVar14 = piVar19" identifier = identifier) ;) (expression_statement "piVar11 = piVar20;" (assignment_expression "piVar11 = piVar20" identifier = identifier) ;) (expression_statement "iVar2 = piVar16[(int)piVar19 * 5 + 1];" (assignment_expression "iVar2 = piVar16[(int)piVar19 * 5 + 1]" identifier = (subscript_expression "piVar16[(int)piVar19 * 5 + 1]" identifier [ (binary_expression "(int)piVar19 * 5 + 1" (binary_expression "(int)piVar19 * 5" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ])) ;) })) (expression_statement "piVar19 = piVar20;" (assignment_expression "piVar19 = piVar20" identifier = identifier) ;) (expression_statement "piVar15 = (int *)((int)piVar20 + 1);" (assignment_expression "piVar15 = (int *)((int)piVar20 + 1)" identifier = (cast_expression "(int *)((int)piVar20 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 + 1)" ( (binary_expression "(int)piVar20 + 1" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) })) (labeled_statement "LAB_0002dc5c:\n  iVar2 = 0;" statement_identifier : (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;)) (if_statement "if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }" if (parenthesized_expression "((int)piVar15 < (int)*(int **)(param_1 + 0x6c))" ( (binary_expression "(int)piVar15 < (int)*(int **)(param_1 + 0x6c)" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*(int **)(param_1 + 0x6c)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(int **)(param_1 + 0x6c)" * (cast_expression "(int **)(param_1 + 0x6c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))))) )) (compound_statement "{\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }" { (expression_statement "iVar3 = (int)piVar15 * 0x14;" (assignment_expression "iVar3 = (int)piVar15 * 0x14" identifier = (binary_expression "(int)piVar15 * 0x14" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);" (assignment_expression "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 0x74) + iVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + iVar3)" ( (binary_expression "*(int *)(param_1 + 0x74) + iVar3" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }" if (parenthesized_expression "(param_3 == (int *)piVar11[1])" ( (binary_expression "param_3 == (int *)piVar11[1]" identifier == (cast_expression "(int *)piVar11[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar11[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }" { (if_statement "if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }" if (parenthesized_expression "(piVar15 == (int *)0xffffffff)" ( (binary_expression "piVar15 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar2 = 0;\n      }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }" else (compound_statement "{\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }" { (expression_statement "piVar20 = *(int **)(param_1 + 0x54);" (assignment_expression "piVar20 = *(int **)(param_1 + 0x54)" identifier = (pointer_expression "*(int **)(param_1 + 0x54)" * (cast_expression "(int **)(param_1 + 0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x28b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x28b4)" ( (binary_expression "PTR_LAB_0005332c + -0x28b4" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x2f90)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x2f90)" ( (binary_expression "PTR_LAB_0005332c + -0x2f90" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x6548)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x6548)" ( (binary_expression "PTR_LAB_0005332c + -0x6548" identifier + number_literal) )))) ;) (expression_statement "piVar14 = piVar19;" (assignment_expression "piVar14 = piVar19" identifier = identifier) ;) (labeled_statement "LAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');" statement_identifier : (do_statement "do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');" do (compound_statement "{\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        }" { (expression_statement "piVar16 = (int *)*piVar11;" (assignment_expression "piVar16 = (int *)*piVar11" identifier = (cast_expression "(int *)*piVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar11" * identifier))) ;) (expression_statement "uVar17 = *(undefined4 *)(param_2 + 4);" (assignment_expression "uVar17 = *(undefined4 *)(param_2 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "piVar15 = (int *)(param_2 + 8);" (assignment_expression "piVar15 = (int *)(param_2 + 8)" identifier = (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) ;) (expression_statement "piVar19 = piVar16;" (assignment_expression "piVar19 = piVar16" identifier = identifier) ;) (expression_statement "iVar2 = FUN_0002b8c0(uVar17);" (assignment_expression "iVar2 = FUN_0002b8c0(uVar17)" identifier = (call_expression "FUN_0002b8c0(uVar17)" identifier (argument_list "(uVar17)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }" { (expression_statement "piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));" (assignment_expression "piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]))" identifier = (cast_expression "(int *)((int)param_3 + (piVar11[3] - piVar11[2]))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 + (piVar11[3] - piVar11[2]))" ( (binary_expression "(int)param_3 + (piVar11[3] - piVar11[2])" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(piVar11[3] - piVar11[2])" ( (binary_expression "piVar11[3] - piVar11[2]" (subscript_expression "piVar11[3]" identifier [ number_literal ]) - (subscript_expression "piVar11[2]" identifier [ number_literal ])) ))) )))) ;) (expression_statement "iVar2 = (int)piVar18 * 4;" (assignment_expression "iVar2 = (int)piVar18 * 4" identifier = (binary_expression "(int)piVar18 * 4" (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }" if (parenthesized_expression "(param_3 == piVar18)" ( (binary_expression "param_3 == piVar18" identifier == identifier) )) (compound_statement "{\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }" { (expression_statement "piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);" (assignment_expression "piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" identifier = (cast_expression "(int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" * (pointer_expression "*(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" * (cast_expression "(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar20[5] + (int)piVar19 * 0xc + 8)" ( (binary_expression "piVar20[5] + (int)piVar19 * 0xc + 8" (binary_expression "piVar20[5] + (int)piVar19 * 0xc" (subscript_expression "piVar20[5]" identifier [ number_literal ]) + (binary_expression "(int)piVar19 * 0xc" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) ))))))) ;) (expression_statement "piVar15 = (int *)(param_2 + 8);" (assignment_expression "piVar15 = (int *)(param_2 + 8)" identifier = (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) ;) (expression_statement "piVar16 = piVar19;" (assignment_expression "piVar16 = piVar19" identifier = identifier) ;) (expression_statement "iVar2 = FUN_0002b8c0(uVar17);" (assignment_expression "iVar2 = FUN_0002b8c0(uVar17)" identifier = (call_expression "FUN_0002b8c0(uVar17)" identifier (argument_list "(uVar17)" ( identifier )))) ;) (if_statement "if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }" { (expression_statement "local_3c[1] = 1;" (assignment_expression "local_3c[1] = 1" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c[2] = 1;" (assignment_expression "local_3c[2] = 1" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);" (assignment_expression "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(4)" (parenthesized_expression "(*(code *)PTR_malloc_00053474)" ( (pointer_expression "*(code *)PTR_malloc_00053474" * (cast_expression "(code *)PTR_malloc_00053474" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(4)" ( number_literal ))))) ;) (if_statement "if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }" if (parenthesized_expression "(local_30 == (int *)0x0)" ( (binary_expression "local_30 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }" { (expression_statement "local_3c[2] = 0;" (assignment_expression "local_3c[2] = 0" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c[0] = 0xc;" (assignment_expression "local_3c[0] = 0xc" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c[1] = 0;" (assignment_expression "local_3c[1] = 0" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }" else (compound_statement "{\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }" { (expression_statement "*local_30 = (int)piVar19;" (assignment_expression "*local_30 = (int)piVar19" (pointer_expression "*local_30" * identifier) = (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "piVar15 = local_3c + 1;" (assignment_expression "piVar15 = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (expression_statement "piVar16 = param_4;" (assignment_expression "piVar16 = param_4" identifier = identifier) ;) (expression_statement "piVar14 = param_5;" (assignment_expression "piVar14 = param_5" identifier = identifier) ;) (expression_statement "iVar7 = FUN_0002c5d8(piVar20,piVar15);" (assignment_expression "iVar7 = FUN_0002c5d8(piVar20,piVar15)" identifier = (call_expression "FUN_0002c5d8(piVar20,piVar15)" identifier (argument_list "(piVar20,piVar15)" ( identifier , identifier )))) ;) (expression_statement "iVar8 = FUN_0002c03c(param_2);" (assignment_expression "iVar8 = FUN_0002c03c(param_2)" identifier = (call_expression "FUN_0002c03c(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_30);" (call_expression "(*(code *)PTR_free_000534fc)(local_30)" (parenthesized_expression "(*(code *)PTR_free_000534fc)" ( (pointer_expression "*(code *)PTR_free_000534fc" * (cast_expression "(code *)PTR_free_000534fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_30)" ( identifier ))) ;) (expression_statement "iVar2 = local_3c[0];" (assignment_expression "iVar2 = local_3c[0]" identifier = (subscript_expression "local_3c[0]" identifier [ number_literal ])) ;) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" identifier = identifier) ;) (if_statement "if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;" if (parenthesized_expression "(((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0))" ( (binary_expression "((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)" (parenthesized_expression "((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0))" ( (binary_expression "(local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)" (parenthesized_expression "(local_3c[0] != 0)" ( (binary_expression "local_3c[0] != 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(iVar2 = iVar7, iVar7 != 0)" ( (comma_expression "iVar2 = iVar7, iVar7 != 0" (assignment_expression "iVar2 = iVar7" identifier = identifier) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar2 = iVar8, iVar8 != 0)" ( (comma_expression "iVar2 = iVar8, iVar8 != 0" (assignment_expression "iVar2 = iVar8" identifier = identifier) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);" (assignment_expression "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 0x74) + iVar3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x74) + iVar3)" ( (binary_expression "*(int *)(param_1 + 0x74) + iVar3" (pointer_expression "*(int *)(param_1 + 0x74)" * (cast_expression "(int *)(param_1 + 0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) + identifier) )))) ;) (goto_statement "goto LAB_0002ddac;" goto statement_identifier ;) })) }) (else_clause "else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }" else (compound_statement "{\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }" { (expression_statement "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);" (assignment_expression "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 100) + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 100) + iVar2)" ( (binary_expression "*(int *)(param_1 + 100) + iVar2" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar7 = *piVar14;" (assignment_expression "iVar7 = *piVar14" identifier = (pointer_expression "*piVar14" * identifier)) ;) (expression_statement "piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);" (assignment_expression "piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4)" identifier = (pointer_expression "*(int **)(piVar20[3] + (int)piVar19 * 4)" * (cast_expression "(int **)(piVar20[3] + (int)piVar19 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar20[3] + (int)piVar19 * 4)" ( (binary_expression "piVar20[3] + (int)piVar19 * 4" (subscript_expression "piVar20[3]" identifier [ number_literal ]) + (binary_expression "(int)piVar19 * 4" (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (if_statement "if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }" { (expression_statement "local_3c[1] = 1;" (assignment_expression "local_3c[1] = 1" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_3c[2] = 1;" (assignment_expression "local_3c[2] = 1" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" identifier = identifier) ;) (expression_statement "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);" (assignment_expression "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(4)" (parenthesized_expression "(*(code *)PTR_malloc_00053474)" ( (pointer_expression "*(code *)PTR_malloc_00053474" * (cast_expression "(code *)PTR_malloc_00053474" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(4)" ( number_literal ))))) ;) (if_statement "if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }" if (parenthesized_expression "(local_30 == (int *)0x0)" ( (binary_expression "local_30 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }" { (labeled_statement "LAB_0002df78:\n                  iVar2 = 0xc;" statement_identifier : (expression_statement "iVar2 = 0xc;" (assignment_expression "iVar2 = 0xc" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (expression_statement "*local_30 = (int)piVar18;" (assignment_expression "*local_30 = (int)piVar18" (pointer_expression "*local_30" * identifier) = (cast_expression "(int)piVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }" else (compound_statement "{\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }" { (expression_statement "piVar15 = (int *)(iVar7 + 0xc);" (assignment_expression "piVar15 = (int *)(iVar7 + 0xc)" identifier = (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) )))) ;) (expression_statement "piVar16 = piVar18;" (assignment_expression "piVar16 = piVar18" identifier = identifier) ;) (expression_statement "iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));" (assignment_expression "iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8))" identifier = (call_expression "FUN_0002b8c0(*(undefined4 *)(iVar7 + 8))" identifier (argument_list "(*(undefined4 *)(iVar7 + 8))" ( (pointer_expression "*(undefined4 *)(iVar7 + 8)" * (cast_expression "(undefined4 *)(iVar7 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar8 != 0) goto LAB_0002dda0;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002dda0;" goto statement_identifier ;)) (expression_statement "local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);" (assignment_expression "local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4)" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = (call_expression "(*pcVar5)(local_3c + 1,iVar7 + 4)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(local_3c + 1,iVar7 + 4)" ( (binary_expression "local_3c + 1" identifier + number_literal) , (binary_expression "iVar7 + 4" identifier + number_literal) )))) ;) (expression_statement "iVar7 = (*pcVar6)(local_3c + 1);" (assignment_expression "iVar7 = (*pcVar6)(local_3c + 1)" identifier = (call_expression "(*pcVar6)(local_3c + 1)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(local_3c + 1)" ( (binary_expression "local_3c + 1" identifier + number_literal) )))) ;) (if_statement "if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }" if (parenthesized_expression "((local_3c[0] != 0) || (iVar7 == 0))" ( (binary_expression "(local_3c[0] != 0) || (iVar7 == 0)" (parenthesized_expression "(local_3c[0] != 0)" ( (binary_expression "local_3c[0] != 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }" { (expression_statement "(*(code *)PTR_free_000534fc)(local_30);" (call_expression "(*(code *)PTR_free_000534fc)(local_30)" (parenthesized_expression "(*(code *)PTR_free_000534fc)" ( (pointer_expression "*(code *)PTR_free_000534fc" * (cast_expression "(code *)PTR_free_000534fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_30)" ( identifier ))) ;) (expression_statement "iVar2 = local_3c[0];" (assignment_expression "iVar2 = local_3c[0]" identifier = (subscript_expression "local_3c[0]" identifier [ number_literal ])) ;) (expression_statement "piVar15 = piVar18;" (assignment_expression "piVar15 = piVar18" identifier = identifier) ;) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" identifier = identifier) ;) (if_statement "if (local_3c[0] == 0) goto LAB_0002df78;" if (parenthesized_expression "(local_3c[0] == 0)" ( (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0002df78;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);" (assignment_expression "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 100) + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 100) + iVar2)" ( (binary_expression "*(int *)(param_1 + 100) + iVar2" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + identifier) )))) ;) }))) (expression_statement "piVar16 = local_3c + 1;" (assignment_expression "piVar16 = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (expression_statement "piVar15 = piVar20;" (assignment_expression "piVar15 = piVar20" identifier = identifier) ;) (expression_statement "iVar7 = (*pcVar4)(local_3c);" (assignment_expression "iVar7 = (*pcVar4)(local_3c)" identifier = (call_expression "(*pcVar4)(local_3c)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(local_3c)" ( identifier )))) ;) (expression_statement "puVar1 = PTR_free_000534fc;" (assignment_expression "puVar1 = PTR_free_000534fc" identifier = identifier) ;) (expression_statement "*piVar14 = iVar7;" (assignment_expression "*piVar14 = iVar7" (pointer_expression "*piVar14" * identifier) = identifier) ;) (expression_statement "(*(code *)puVar1)(local_30);" (call_expression "(*(code *)puVar1)(local_30)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_30)" ( identifier ))) ;) (if_statement "if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;" if (parenthesized_expression "((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0))" ( (binary_expression "(*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)" (parenthesized_expression "(*(int *)(*(int *)(param_1 + 100) + iVar2) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 100) + iVar2) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 100) + iVar2)" * (cast_expression "(int *)(*(int *)(param_1 + 100) + iVar2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 100) + iVar2)" ( (binary_expression "*(int *)(param_1 + 100) + iVar2" (pointer_expression "*(int *)(param_1 + 100)" * (cast_expression "(int *)(param_1 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 100)" ( (binary_expression "param_1 + 100" identifier + number_literal) )))) + identifier) )))) == number_literal) )) && (parenthesized_expression "(iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)" ( (comma_expression "iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0" (assignment_expression "iVar2 = local_3c[0]" identifier = (subscript_expression "local_3c[0]" identifier [ number_literal ])) , (comma_expression "piVar19 = piVar14, local_3c[0] != 0" (assignment_expression "piVar19 = piVar14" identifier = identifier) , (binary_expression "local_3c[0] != 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) != number_literal))) ))) )) (break_statement "break;" break ;)) }))) })) (labeled_statement "LAB_0002dda0:\n          piVar18 = piVar11 + 4;" statement_identifier : (expression_statement "piVar18 = piVar11 + 4;" (assignment_expression "piVar18 = piVar11 + 4" identifier = (binary_expression "piVar11 + 4" identifier + number_literal)) ;)) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" identifier = identifier) ;) (expression_statement "piVar11 = piVar11 + 5;" (assignment_expression "piVar11 = piVar11 + 5" identifier = (binary_expression "piVar11 + 5" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(char *)piVar18 != '\0')" ( (binary_expression "*(char *)piVar18 != '\0'" (pointer_expression "*(char *)piVar18" * (cast_expression "(char *)piVar18" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) != (char_literal "'\0'" ' escape_sequence ')) )) ;)) }))) })) })) (if_statement "if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar21)" ( (binary_expression "local_2c == *(int *)puVar21" identifier == (pointer_expression "*(int *)puVar21" * (cast_expression "(int *)puVar21" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar2 = local_2c;" (assignment_expression "iVar2 = local_2c" identifier = identifier) ;) (expression_statement "puVar21 = PTR___stack_chk_fail_000534d4;" (assignment_expression "puVar21 = PTR___stack_chk_fail_000534d4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000534d4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000534d4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000534d4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000534d4" * (cast_expression "(code *)PTR___stack_chk_fail_000534d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar3 = *piVar15;" (assignment_expression "iVar3 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "piVar11 = *(int **)(iVar2 + 0x54);" (assignment_expression "piVar11 = *(int **)(iVar2 + 0x54)" identifier = (pointer_expression "*(int **)(iVar2 + 0x54)" * (cast_expression "(int **)(iVar2 + 0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x54)" ( (binary_expression "iVar2 + 0x54" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (compound_statement "{\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);" do (compound_statement "{\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    }" { (while_statement "while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }" { (expression_statement "iVar8 = *(int *)(*piVar16 + iVar7 * 4);" (assignment_expression "iVar8 = *(int *)(*piVar16 + iVar7 * 4)" identifier = (pointer_expression "*(int *)(*piVar16 + iVar7 * 4)" * (cast_expression "(int *)(*piVar16 + iVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar16 + iVar7 * 4)" ( (binary_expression "*piVar16 + iVar7 * 4" (pointer_expression "*piVar16" * identifier) + (binary_expression "iVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "puVar9 = (uint *)(*piVar11 + iVar8 * 8);" (assignment_expression "puVar9 = (uint *)(*piVar11 + iVar8 * 8)" identifier = (cast_expression "(uint *)(*piVar11 + iVar8 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + iVar8 * 8)" ( (binary_expression "*piVar11 + iVar8 * 8" (pointer_expression "*piVar11" * identifier) + (binary_expression "iVar8 * 8" identifier * number_literal)) )))) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;" if (parenthesized_expression "(((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0))" ( (binary_expression "((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)" (parenthesized_expression "((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20))" ( (binary_expression "(*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)" (parenthesized_expression "(*(char *)(puVar9 + 1) == '\b')" ( (binary_expression "*(char *)(puVar9 + 1) == '\b'" (pointer_expression "*(char *)(puVar9 + 1)" * (cast_expression "(char *)(puVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 1)" ( (binary_expression "puVar9 + 1" identifier + number_literal) )))) == (char_literal "'\b'" ' escape_sequence ')) )) && (parenthesized_expression "(uVar12 = *puVar9, (int)uVar12 < 0x20)" ( (comma_expression "uVar12 = *puVar9, (int)uVar12 < 0x20" (assignment_expression "uVar12 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) , (binary_expression "(int)uVar12 < 0x20" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) ))) )) && (parenthesized_expression "(((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)" ( (binary_expression "((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1)" ( (binary_expression "(uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1" (binary_expression "(uint)piVar11[0x14] >> (uVar12 & 0x1f)" (cast_expression "(uint)piVar11[0x14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar11[0x14]" identifier [ number_literal ])) >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (break_statement "break;" break ;)) (if_statement "if (iVar3 <= iVar7) {\n          return 0;\n        }" if (parenthesized_expression "(iVar3 <= iVar7)" ( (binary_expression "iVar3 <= iVar7" identifier <= identifier) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) })) (expression_statement "iVar13 = *(int *)(iVar2 + 0x7c);" (assignment_expression "iVar13 = *(int *)(iVar2 + 0x7c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x7c)" * (cast_expression "(int *)(iVar2 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x7c)" ( (binary_expression "iVar2 + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(iVar2 + 0x84);" (assignment_expression "iVar3 = *(int *)(iVar2 + 0x84)" identifier = (pointer_expression "*(int *)(iVar2 + 0x84)" * (cast_expression "(int *)(iVar2 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x84)" ( (binary_expression "iVar2 + 0x84" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }" if (parenthesized_expression "(iVar13 == *(int *)(iVar2 + 0x80))" ( (binary_expression "iVar13 == *(int *)(iVar2 + 0x80)" identifier == (pointer_expression "*(int *)(iVar2 + 0x80)" * (cast_expression "(int *)(iVar2 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x80)" ( (binary_expression "iVar2 + 0x80" identifier + number_literal) ))))) )) (compound_statement "{\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }" { (expression_statement "iVar10 = iVar13 << 1;" (assignment_expression "iVar10 = iVar13 << 1" identifier = (binary_expression "iVar13 << 1" identifier << number_literal)) ;) (expression_statement "iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);" (assignment_expression "iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3)" identifier = (call_expression "(**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3)" (parenthesized_expression "(**(code **)(puVar21 + 0x254c4))" ( (pointer_expression "**(code **)(puVar21 + 0x254c4)" * (pointer_expression "*(code **)(puVar21 + 0x254c4)" * (cast_expression "(code **)(puVar21 + 0x254c4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x254c4)" ( (binary_expression "puVar21 + 0x254c4" identifier + number_literal) ))))) )) (argument_list "(iVar3,iVar13 << 3)" ( identifier , (binary_expression "iVar13 << 3" identifier << number_literal) )))) ;) (if_statement "if (iVar3 == 0) {\n          return 0xc;\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          return 0xc;\n        }" { (return_statement "return 0xc;" return number_literal ;) })) (expression_statement "iVar13 = *(int *)(iVar2 + 0x7c);" (assignment_expression "iVar13 = *(int *)(iVar2 + 0x7c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x7c)" * (cast_expression "(int *)(iVar2 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x7c)" ( (binary_expression "iVar2 + 0x7c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar2 + 0x84) = iVar3;" (assignment_expression "*(int *)(iVar2 + 0x84) = iVar3" (pointer_expression "*(int *)(iVar2 + 0x84)" * (cast_expression "(int *)(iVar2 + 0x84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x84)" ( (binary_expression "iVar2 + 0x84" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar2 + 0x80) = iVar10;" (assignment_expression "*(int *)(iVar2 + 0x80) = iVar10" (pointer_expression "*(int *)(iVar2 + 0x80)" * (cast_expression "(int *)(iVar2 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x80)" ( (binary_expression "iVar2 + 0x80" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);" (assignment_expression "piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18)" identifier = (cast_expression "(int *)(**(code **)(puVar21 + 0x253bc))(1,0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar21 + 0x253bc))(1,0x18)" (parenthesized_expression "(**(code **)(puVar21 + 0x253bc))" ( (pointer_expression "**(code **)(puVar21 + 0x253bc)" * (pointer_expression "*(code **)(puVar21 + 0x253bc)" * (cast_expression "(code **)(puVar21 + 0x253bc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x253bc)" ( (binary_expression "puVar21 + 0x253bc" identifier + number_literal) ))))) )) (argument_list "(1,0x18)" ( number_literal , number_literal ))))) ;) (expression_statement "*(int **)(iVar3 + iVar13 * 4) = piVar14;" (assignment_expression "*(int **)(iVar3 + iVar13 * 4) = piVar14" (pointer_expression "*(int **)(iVar3 + iVar13 * 4)" * (cast_expression "(int **)(iVar3 + iVar13 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + iVar13 * 4)" ( (binary_expression "iVar3 + iVar13 * 4" identifier + (binary_expression "iVar13 * 4" identifier * number_literal)) )))) = identifier) ;) (if_statement "if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0xc;\n      }" { (return_statement "return 0xc;" return number_literal ;) })) (expression_statement "*(int *)(iVar2 + 0x7c) = iVar13 + 1;" (assignment_expression "*(int *)(iVar2 + 0x7c) = iVar13 + 1" (pointer_expression "*(int *)(iVar2 + 0x7c)" * (cast_expression "(int *)(iVar2 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x7c)" ( (binary_expression "iVar2 + 0x7c" identifier + number_literal) )))) = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar14[1] = iVar8;" (assignment_expression "piVar14[1] = iVar8" (subscript_expression "piVar14[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar14 = (int)piVar19;" (assignment_expression "*piVar14 = (int)piVar19" (pointer_expression "*piVar14" * identifier) = (cast_expression "(int)piVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = *piVar15;" (assignment_expression "iVar3 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) }) while (parenthesized_expression "(iVar7 < iVar3)" ( (binary_expression "iVar7 < iVar3" identifier < identifier) )) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) ])) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) / LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) ])) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ])) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (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 ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (break_statement break ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (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 ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (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 (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT))) ))) )) (break_statement break ;)) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) != (char_literal ' escape_sequence ')) )) ;)) }))) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (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) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT)) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) ))) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (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 , (binary_expression IDENT << LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 = (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 IDENT + LIT) ))))) )) (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return 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)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (return_statement return LIT ;) })))
(function_definition "int FUN_0002db70(int param_1,int param_2,int *param_3,int *param_4,int *param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int *piVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  undefined4 uVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  undefined *puVar21;\n  int local_3c [3];\n  int *local_30;\n  int local_2c;\n  \n  puVar21 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar15 = (int *)0x0;\n  piVar11 = *(int **)(param_1 + 0x6c);\n  piVar16 = param_3;\n  piVar19 = param_4;\n  while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }\nLAB_0002dc5c:\n  iVar2 = 0;\n  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }\n  if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }\n  iVar2 = local_2c;\n  puVar21 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  iVar3 = *piVar15;\n  piVar11 = *(int **)(iVar2 + 0x54);\n  if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }\n  return 0;\n}" (primitive_type "int") (function_declarator "FUN_0002db70(int param_1,int param_2,int *param_3,int *param_4,int *param_5)" (identifier "FUN_0002db70") (parameter_list "(int param_1,int param_2,int *param_3,int *param_4,int *param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  code *pcVar6;\n  int iVar7;\n  int iVar8;\n  uint *puVar9;\n  int iVar10;\n  int *piVar11;\n  uint uVar12;\n  int iVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  undefined4 uVar17;\n  int *piVar18;\n  int *piVar19;\n  int *piVar20;\n  undefined *puVar21;\n  int local_3c [3];\n  int *local_30;\n  int local_2c;\n  \n  puVar21 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar15 = (int *)0x0;\n  piVar11 = *(int **)(param_1 + 0x6c);\n  piVar16 = param_3;\n  piVar19 = param_4;\n  while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }\nLAB_0002dc5c:\n  iVar2 = 0;\n  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }\n  if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }\n  iVar2 = local_2c;\n  puVar21 = PTR___stack_chk_fail_000534d4;\n  (*(code *)PTR___stack_chk_fail_000534d4)();\n  iVar3 = *piVar15;\n  piVar11 = *(int **)(iVar2 + 0x54);\n  if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }\n  return 0;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "undefined4 uVar17;" (type_identifier "undefined4") (identifier "uVar17") (; ";")) (declaration "int *piVar18;" (primitive_type "int") (pointer_declarator "*piVar18" (* "*") (identifier "piVar18")) (; ";")) (declaration "int *piVar19;" (primitive_type "int") (pointer_declarator "*piVar19" (* "*") (identifier "piVar19")) (; ";")) (declaration "int *piVar20;" (primitive_type "int") (pointer_declarator "*piVar20" (* "*") (identifier "piVar20")) (; ";")) (declaration "undefined *puVar21;" (type_identifier "undefined") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "int local_3c [3];" (primitive_type "int") (array_declarator "local_3c [3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "int *local_30;" (primitive_type "int") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar21 = PTR___stack_chk_guard_000534f0;" (assignment_expression "puVar21 = PTR___stack_chk_guard_000534f0" (identifier "puVar21") (= "=") (identifier "PTR___stack_chk_guard_000534f0")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000534f0;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000534f0" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000534f0" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000534f0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000534f0")))) (; ";")) (expression_statement "piVar15 = (int *)0x0;" (assignment_expression "piVar15 = (int *)0x0" (identifier "piVar15") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar11 = *(int **)(param_1 + 0x6c);" (assignment_expression "piVar11 = *(int **)(param_1 + 0x6c)" (identifier "piVar11") (= "=") (pointer_expression "*(int **)(param_1 + 0x6c)" (* "*") (cast_expression "(int **)(param_1 + 0x6c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "piVar16 = param_3;" (assignment_expression "piVar16 = param_3" (identifier "piVar16") (= "=") (identifier "param_3")) (; ";")) (expression_statement "piVar19 = param_4;" (assignment_expression "piVar19 = param_4" (identifier "piVar19") (= "=") (identifier "param_4")) (; ";")) (while_statement "while ((int)piVar15 < (int)piVar11) {\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }" (while "while") (parenthesized_expression "((int)piVar15 < (int)piVar11)" (( "(") (binary_expression "(int)piVar15 < (int)piVar11" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (< "<") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) () ")")) (compound_statement "{\n    piVar16 = *(int **)(param_1 + 0x74);\n    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);\n    iVar2 = piVar16[(int)piVar14 * 5 + 1];\n    while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }\n    piVar19 = piVar20;\n    piVar15 = (int *)((int)piVar20 + 1);\n  }" ({ "{") (expression_statement "piVar16 = *(int **)(param_1 + 0x74);" (assignment_expression "piVar16 = *(int **)(param_1 + 0x74)" (identifier "piVar16") (= "=") (pointer_expression "*(int **)(param_1 + 0x74)" (* "*") (cast_expression "(int **)(param_1 + 0x74)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (expression_statement "piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);" (assignment_expression "piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2)" (identifier "piVar14") (= "=") (cast_expression "(int *)(((int)piVar15 + (int)piVar11) / 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((int)piVar15 + (int)piVar11) / 2)" (( "(") (binary_expression "((int)piVar15 + (int)piVar11) / 2" (parenthesized_expression "((int)piVar15 + (int)piVar11)" (( "(") (binary_expression "(int)piVar15 + (int)piVar11" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (cast_expression "(int)piVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar11"))) () ")")) (/ "/") (number_literal "2")) () ")")))) (; ";")) (expression_statement "iVar2 = piVar16[(int)piVar14 * 5 + 1];" (assignment_expression "iVar2 = piVar16[(int)piVar14 * 5 + 1]" (identifier "iVar2") (= "=") (subscript_expression "piVar16[(int)piVar14 * 5 + 1]" (identifier "piVar16") ([ "[") (binary_expression "(int)piVar14 * 5 + 1" (binary_expression "(int)piVar14 * 5" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (* "*") (number_literal "5")) (+ "+") (number_literal "1")) (] "]"))) (; ";")) (while_statement "while (piVar20 = piVar14, (int)param_3 <= iVar2) {\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }" (while "while") (parenthesized_expression "(piVar20 = piVar14, (int)param_3 <= iVar2)" (( "(") (comma_expression "piVar20 = piVar14, (int)param_3 <= iVar2" (assignment_expression "piVar20 = piVar14" (identifier "piVar20") (= "=") (identifier "piVar14")) (, ",") (binary_expression "(int)param_3 <= iVar2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (<= "<=") (identifier "iVar2"))) () ")")) (compound_statement "{\n      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;\n      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);\n      piVar14 = piVar19;\n      piVar11 = piVar20;\n      iVar2 = piVar16[(int)piVar19 * 5 + 1];\n    }" ({ "{") (if_statement "if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;" (if "if") (parenthesized_expression "((int)piVar20 <= (int)piVar15)" (( "(") (binary_expression "(int)piVar20 <= (int)piVar15" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (<= "<=") (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15"))) () ")")) (goto_statement "goto LAB_0002dc5c;" (goto "goto") (statement_identifier "LAB_0002dc5c") (; ";"))) (expression_statement "piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);" (assignment_expression "piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2)" (identifier "piVar19") (= "=") (cast_expression "(int *)(((int)piVar15 + (int)piVar20) / 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((int)piVar15 + (int)piVar20) / 2)" (( "(") (binary_expression "((int)piVar15 + (int)piVar20) / 2" (parenthesized_expression "((int)piVar15 + (int)piVar20)" (( "(") (binary_expression "(int)piVar15 + (int)piVar20" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20"))) () ")")) (/ "/") (number_literal "2")) () ")")))) (; ";")) (expression_statement "piVar14 = piVar19;" (assignment_expression "piVar14 = piVar19" (identifier "piVar14") (= "=") (identifier "piVar19")) (; ";")) (expression_statement "piVar11 = piVar20;" (assignment_expression "piVar11 = piVar20" (identifier "piVar11") (= "=") (identifier "piVar20")) (; ";")) (expression_statement "iVar2 = piVar16[(int)piVar19 * 5 + 1];" (assignment_expression "iVar2 = piVar16[(int)piVar19 * 5 + 1]" (identifier "iVar2") (= "=") (subscript_expression "piVar16[(int)piVar19 * 5 + 1]" (identifier "piVar16") ([ "[") (binary_expression "(int)piVar19 * 5 + 1" (binary_expression "(int)piVar19 * 5" (cast_expression "(int)piVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar19")) (* "*") (number_literal "5")) (+ "+") (number_literal "1")) (] "]"))) (; ";")) (} "}"))) (expression_statement "piVar19 = piVar20;" (assignment_expression "piVar19 = piVar20" (identifier "piVar19") (= "=") (identifier "piVar20")) (; ";")) (expression_statement "piVar15 = (int *)((int)piVar20 + 1);" (assignment_expression "piVar15 = (int *)((int)piVar20 + 1)" (identifier "piVar15") (= "=") (cast_expression "(int *)((int)piVar20 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar20 + 1)" (( "(") (binary_expression "(int)piVar20 + 1" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (labeled_statement "LAB_0002dc5c:\n  iVar2 = 0;" (statement_identifier "LAB_0002dc5c") (: ":") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";"))) (if_statement "if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }" (if "if") (parenthesized_expression "((int)piVar15 < (int)*(int **)(param_1 + 0x6c))" (( "(") (binary_expression "(int)piVar15 < (int)*(int **)(param_1 + 0x6c)" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (< "<") (cast_expression "(int)*(int **)(param_1 + 0x6c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(int **)(param_1 + 0x6c)" (* "*") (cast_expression "(int **)(param_1 + 0x6c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))))) () ")")) (compound_statement "{\n    iVar3 = (int)piVar15 * 0x14;\n    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n    iVar2 = 0;\n    if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }\n  }" ({ "{") (expression_statement "iVar3 = (int)piVar15 * 0x14;" (assignment_expression "iVar3 = (int)piVar15 * 0x14" (identifier "iVar3") (= "=") (binary_expression "(int)piVar15 * 0x14" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (* "*") (number_literal "0x14"))) (; ";")) (expression_statement "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);" (assignment_expression "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3)" (identifier "piVar11") (= "=") (cast_expression "(int *)(*(int *)(param_1 + 0x74) + iVar3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + iVar3)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + iVar3" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (identifier "iVar3")) () ")")))) (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_3 == (int *)piVar11[1]) {\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }" (if "if") (parenthesized_expression "(param_3 == (int *)piVar11[1])" (( "(") (binary_expression "param_3 == (int *)piVar11[1]" (identifier "param_3") (== "==") (cast_expression "(int *)piVar11[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n      if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }\n    }" ({ "{") (if_statement "if (piVar15 == (int *)0xffffffff) {\n        iVar2 = 0;\n      }\n      else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }" (if "if") (parenthesized_expression "(piVar15 == (int *)0xffffffff)" (( "(") (binary_expression "piVar15 == (int *)0xffffffff" (identifier "piVar15") (== "==") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n        iVar2 = 0;\n      }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }" (else "else") (compound_statement "{\n        piVar20 = *(int **)(param_1 + 0x54);\n        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);\n        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);\n        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);\n        piVar14 = piVar19;\nLAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');\n      }" ({ "{") (expression_statement "piVar20 = *(int **)(param_1 + 0x54);" (assignment_expression "piVar20 = *(int **)(param_1 + 0x54)" (identifier "piVar20") (= "=") (pointer_expression "*(int **)(param_1 + 0x54)" (* "*") (cast_expression "(int **)(param_1 + 0x54)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (expression_statement "pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_0005332c + -0x28b4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0005332c + -0x28b4)" (( "(") (binary_expression "PTR_LAB_0005332c + -0x28b4" (identifier "PTR_LAB_0005332c") (+ "+") (number_literal "-0x28b4")) () ")")))) (; ";")) (expression_statement "pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90)" (identifier "pcVar5") (= "=") (cast_expression "(code *)(PTR_LAB_0005332c + -0x2f90)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0005332c + -0x2f90)" (( "(") (binary_expression "PTR_LAB_0005332c + -0x2f90" (identifier "PTR_LAB_0005332c") (+ "+") (number_literal "-0x2f90")) () ")")))) (; ";")) (expression_statement "pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548)" (identifier "pcVar6") (= "=") (cast_expression "(code *)(PTR_LAB_0005332c + -0x6548)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0005332c + -0x6548)" (( "(") (binary_expression "PTR_LAB_0005332c + -0x6548" (identifier "PTR_LAB_0005332c") (+ "+") (number_literal "-0x6548")) () ")")))) (; ";")) (expression_statement "piVar14 = piVar19;" (assignment_expression "piVar14 = piVar19" (identifier "piVar14") (= "=") (identifier "piVar19")) (; ";")) (labeled_statement "LAB_0002ddac:\n        do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');" (statement_identifier "LAB_0002ddac") (: ":") (do_statement "do {\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        } while (*(char *)piVar18 != '\0');" (do "do") (compound_statement "{\n          piVar16 = (int *)*piVar11;\n          uVar17 = *(undefined4 *)(param_2 + 4);\n          piVar15 = (int *)(param_2 + 8);\n          piVar19 = piVar16;\n          iVar2 = FUN_0002b8c0(uVar17);\n          if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }\nLAB_0002dda0:\n          piVar18 = piVar11 + 4;\n          iVar2 = 0;\n          piVar19 = piVar14;\n          piVar11 = piVar11 + 5;\n        }" ({ "{") (expression_statement "piVar16 = (int *)*piVar11;" (assignment_expression "piVar16 = (int *)*piVar11" (identifier "piVar16") (= "=") (cast_expression "(int *)*piVar11" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar11" (* "*") (identifier "piVar11")))) (; ";")) (expression_statement "uVar17 = *(undefined4 *)(param_2 + 4);" (assignment_expression "uVar17 = *(undefined4 *)(param_2 + 4)" (identifier "uVar17") (= "=") (pointer_expression "*(undefined4 *)(param_2 + 4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar15 = (int *)(param_2 + 8);" (assignment_expression "piVar15 = (int *)(param_2 + 8)" (identifier "piVar15") (= "=") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "piVar19 = piVar16;" (assignment_expression "piVar19 = piVar16" (identifier "piVar19") (= "=") (identifier "piVar16")) (; ";")) (expression_statement "iVar2 = FUN_0002b8c0(uVar17);" (assignment_expression "iVar2 = FUN_0002b8c0(uVar17)" (identifier "iVar2") (= "=") (call_expression "FUN_0002b8c0(uVar17)" (identifier "FUN_0002b8c0") (argument_list "(uVar17)" (( "(") (identifier "uVar17") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));\n            iVar2 = (int)piVar18 * 4;\n            if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }\n          }" ({ "{") (expression_statement "piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));" (assignment_expression "piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]))" (identifier "piVar18") (= "=") (cast_expression "(int *)((int)param_3 + (piVar11[3] - piVar11[2]))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 + (piVar11[3] - piVar11[2]))" (( "(") (binary_expression "(int)param_3 + (piVar11[3] - piVar11[2])" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (parenthesized_expression "(piVar11[3] - piVar11[2])" (( "(") (binary_expression "piVar11[3] - piVar11[2]" (subscript_expression "piVar11[3]" (identifier "piVar11") ([ "[") (number_literal "3") (] "]")) (- "-") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]"))) () ")"))) () ")")))) (; ";")) (expression_statement "iVar2 = (int)piVar18 * 4;" (assignment_expression "iVar2 = (int)piVar18 * 4" (identifier "iVar2") (= "=") (binary_expression "(int)piVar18 * 4" (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (param_3 == piVar18) {\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }\n            else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }" (if "if") (parenthesized_expression "(param_3 == piVar18)" (( "(") (binary_expression "param_3 == piVar18" (identifier "param_3") (== "==") (identifier "piVar18")) () ")")) (compound_statement "{\n              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);\n              piVar15 = (int *)(param_2 + 8);\n              piVar16 = piVar19;\n              iVar2 = FUN_0002b8c0(uVar17);\n              if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }\n            }" ({ "{") (expression_statement "piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);" (assignment_expression "piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" (identifier "piVar19") (= "=") (cast_expression "(int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" (* "*") (pointer_expression "*(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" (* "*") (cast_expression "(int **)(piVar20[5] + (int)piVar19 * 0xc + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar20[5] + (int)piVar19 * 0xc + 8)" (( "(") (binary_expression "piVar20[5] + (int)piVar19 * 0xc + 8" (binary_expression "piVar20[5] + (int)piVar19 * 0xc" (subscript_expression "piVar20[5]" (identifier "piVar20") ([ "[") (number_literal "5") (] "]")) (+ "+") (binary_expression "(int)piVar19 * 0xc" (cast_expression "(int)piVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar19")) (* "*") (number_literal "0xc"))) (+ "+") (number_literal "8")) () ")"))))))) (; ";")) (expression_statement "piVar15 = (int *)(param_2 + 8);" (assignment_expression "piVar15 = (int *)(param_2 + 8)" (identifier "piVar15") (= "=") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "piVar16 = piVar19;" (assignment_expression "piVar16 = piVar19" (identifier "piVar16") (= "=") (identifier "piVar19")) (; ";")) (expression_statement "iVar2 = FUN_0002b8c0(uVar17);" (assignment_expression "iVar2 = FUN_0002b8c0(uVar17)" (identifier "iVar2") (= "=") (call_expression "FUN_0002b8c0(uVar17)" (identifier "FUN_0002b8c0") (argument_list "(uVar17)" (( "(") (identifier "uVar17") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }\n                piVar15 = local_3c + 1;\n                piVar16 = param_4;\n                piVar14 = param_5;\n                iVar7 = FUN_0002c5d8(piVar20,piVar15);\n                iVar8 = FUN_0002c03c(param_2);\n                (*(code *)PTR_free_000534fc)(local_30);\n                iVar2 = local_3c[0];\n                piVar19 = piVar14;\n                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;\n                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);\n                goto LAB_0002ddac;\n              }" ({ "{") (expression_statement "local_3c[1] = 1;" (assignment_expression "local_3c[1] = 1" (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_3c[2] = 1;" (assignment_expression "local_3c[2] = 1" (subscript_expression "local_3c[2]" (identifier "local_3c") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);" (assignment_expression "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4)" (identifier "local_30") (= "=") (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_malloc_00053474)(4)" (parenthesized_expression "(*(code *)PTR_malloc_00053474)" (( "(") (pointer_expression "*(code *)PTR_malloc_00053474" (* "*") (cast_expression "(code *)PTR_malloc_00053474" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_malloc_00053474"))) () ")")) (argument_list "(4)" (( "(") (number_literal "4") () ")"))))) (; ";")) (if_statement "if (local_30 == (int *)0x0) {\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }\n                else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }" (if "if") (parenthesized_expression "(local_30 == (int *)0x0)" (( "(") (binary_expression "local_30 == (int *)0x0" (identifier "local_30") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  local_3c[2] = 0;\n                  local_3c[0] = 0xc;\n                  local_3c[1] = 0;\n                }" ({ "{") (expression_statement "local_3c[2] = 0;" (assignment_expression "local_3c[2] = 0" (subscript_expression "local_3c[2]" (identifier "local_3c") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c[0] = 0xc;" (assignment_expression "local_3c[0] = 0xc" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0xc")) (; ";")) (expression_statement "local_3c[1] = 0;" (assignment_expression "local_3c[1] = 0" (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }" (else "else") (compound_statement "{\n                  *local_30 = (int)piVar19;\n                  local_3c[0] = 0;\n                }" ({ "{") (expression_statement "*local_30 = (int)piVar19;" (assignment_expression "*local_30 = (int)piVar19" (pointer_expression "*local_30" (* "*") (identifier "local_30")) (= "=") (cast_expression "(int)piVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar19"))) (; ";")) (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "piVar15 = local_3c + 1;" (assignment_expression "piVar15 = local_3c + 1" (identifier "piVar15") (= "=") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar16 = param_4;" (assignment_expression "piVar16 = param_4" (identifier "piVar16") (= "=") (identifier "param_4")) (; ";")) (expression_statement "piVar14 = param_5;" (assignment_expression "piVar14 = param_5" (identifier "piVar14") (= "=") (identifier "param_5")) (; ";")) (expression_statement "iVar7 = FUN_0002c5d8(piVar20,piVar15);" (assignment_expression "iVar7 = FUN_0002c5d8(piVar20,piVar15)" (identifier "iVar7") (= "=") (call_expression "FUN_0002c5d8(piVar20,piVar15)" (identifier "FUN_0002c5d8") (argument_list "(piVar20,piVar15)" (( "(") (identifier "piVar20") (, ",") (identifier "piVar15") () ")")))) (; ";")) (expression_statement "iVar8 = FUN_0002c03c(param_2);" (assignment_expression "iVar8 = FUN_0002c03c(param_2)" (identifier "iVar8") (= "=") (call_expression "FUN_0002c03c(param_2)" (identifier "FUN_0002c03c") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_free_000534fc)(local_30);" (call_expression "(*(code *)PTR_free_000534fc)(local_30)" (parenthesized_expression "(*(code *)PTR_free_000534fc)" (( "(") (pointer_expression "*(code *)PTR_free_000534fc" (* "*") (cast_expression "(code *)PTR_free_000534fc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000534fc"))) () ")")) (argument_list "(local_30)" (( "(") (identifier "local_30") () ")"))) (; ";")) (expression_statement "iVar2 = local_3c[0];" (assignment_expression "iVar2 = local_3c[0]" (identifier "iVar2") (= "=") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" (identifier "piVar19") (= "=") (identifier "piVar14")) (; ";")) (if_statement "if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)) break;" (if "if") (parenthesized_expression "(((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0))" (( "(") (binary_expression "((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||\n                   (iVar2 = iVar8, iVar8 != 0)" (parenthesized_expression "((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0))" (( "(") (binary_expression "(local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)" (parenthesized_expression "(local_3c[0] != 0)" (( "(") (binary_expression "local_3c[0] != 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar2 = iVar7, iVar7 != 0)" (( "(") (comma_expression "iVar2 = iVar7, iVar7 != 0" (assignment_expression "iVar2 = iVar7" (identifier "iVar2") (= "=") (identifier "iVar7")) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar2 = iVar8, iVar8 != 0)" (( "(") (comma_expression "iVar2 = iVar8, iVar8 != 0" (assignment_expression "iVar2 = iVar8" (identifier "iVar2") (= "=") (identifier "iVar8")) (, ",") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);" (assignment_expression "piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3)" (identifier "piVar11") (= "=") (cast_expression "(int *)(*(int *)(param_1 + 0x74) + iVar3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x74) + iVar3)" (( "(") (binary_expression "*(int *)(param_1 + 0x74) + iVar3" (pointer_expression "*(int *)(param_1 + 0x74)" (* "*") (cast_expression "(int *)(param_1 + 0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (+ "+") (identifier "iVar3")) () ")")))) (; ";")) (goto_statement "goto LAB_0002ddac;" (goto "goto") (statement_identifier "LAB_0002ddac") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }" (else "else") (compound_statement "{\n              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              iVar7 = *piVar14;\n              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);\n              if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }\n              piVar16 = local_3c + 1;\n              piVar15 = piVar20;\n              iVar7 = (*pcVar4)(local_3c);\n              puVar1 = PTR_free_000534fc;\n              *piVar14 = iVar7;\n              (*(code *)puVar1)(local_30);\n              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;\n            }" ({ "{") (expression_statement "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);" (assignment_expression "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2)" (identifier "piVar14") (= "=") (cast_expression "(int *)(*(int *)(param_1 + 100) + iVar2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 100) + iVar2)" (( "(") (binary_expression "*(int *)(param_1 + 100) + iVar2" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (expression_statement "iVar7 = *piVar14;" (assignment_expression "iVar7 = *piVar14" (identifier "iVar7") (= "=") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) (; ";")) (expression_statement "piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);" (assignment_expression "piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4)" (identifier "piVar18") (= "=") (pointer_expression "*(int **)(piVar20[3] + (int)piVar19 * 4)" (* "*") (cast_expression "(int **)(piVar20[3] + (int)piVar19 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar20[3] + (int)piVar19 * 4)" (( "(") (binary_expression "piVar20[3] + (int)piVar19 * 4" (subscript_expression "piVar20[3]" (identifier "piVar20") ([ "[") (number_literal "3") (] "]")) (+ "+") (binary_expression "(int)piVar19 * 4" (cast_expression "(int)piVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar19")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (iVar7 == 0) {\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }\n              else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_3c[1] = 1;\n                local_3c[2] = 1;\n                piVar19 = piVar14;\n                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);\n                if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }\n                *local_30 = (int)piVar18;\n                local_3c[0] = 0;\n              }" ({ "{") (expression_statement "local_3c[1] = 1;" (assignment_expression "local_3c[1] = 1" (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_3c[2] = 1;" (assignment_expression "local_3c[2] = 1" (subscript_expression "local_3c[2]" (identifier "local_3c") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" (identifier "piVar19") (= "=") (identifier "piVar14")) (; ";")) (expression_statement "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);" (assignment_expression "local_30 = (int *)(*(code *)PTR_malloc_00053474)(4)" (identifier "local_30") (= "=") (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_malloc_00053474)(4)" (parenthesized_expression "(*(code *)PTR_malloc_00053474)" (( "(") (pointer_expression "*(code *)PTR_malloc_00053474" (* "*") (cast_expression "(code *)PTR_malloc_00053474" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_malloc_00053474"))) () ")")) (argument_list "(4)" (( "(") (number_literal "4") () ")"))))) (; ";")) (if_statement "if (local_30 == (int *)0x0) {\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }" (if "if") (parenthesized_expression "(local_30 == (int *)0x0)" (( "(") (binary_expression "local_30 == (int *)0x0" (identifier "local_30") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0002df78:\n                  iVar2 = 0xc;\n                  break;\n                }" ({ "{") (labeled_statement "LAB_0002df78:\n                  iVar2 = 0xc;" (statement_identifier "LAB_0002df78") (: ":") (expression_statement "iVar2 = 0xc;" (assignment_expression "iVar2 = 0xc" (identifier "iVar2") (= "=") (number_literal "0xc")) (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "*local_30 = (int)piVar18;" (assignment_expression "*local_30 = (int)piVar18" (pointer_expression "*local_30" (* "*") (identifier "local_30")) (= "=") (cast_expression "(int)piVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar18"))) (; ";")) (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }" (else "else") (compound_statement "{\n                piVar15 = (int *)(iVar7 + 0xc);\n                piVar16 = piVar18;\n                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));\n                if (iVar8 != 0) goto LAB_0002dda0;\n                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);\n                iVar7 = (*pcVar6)(local_3c + 1);\n                if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }\n                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);\n              }" ({ "{") (expression_statement "piVar15 = (int *)(iVar7 + 0xc);" (assignment_expression "piVar15 = (int *)(iVar7 + 0xc)" (identifier "piVar15") (= "=") (cast_expression "(int *)(iVar7 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "piVar16 = piVar18;" (assignment_expression "piVar16 = piVar18" (identifier "piVar16") (= "=") (identifier "piVar18")) (; ";")) (expression_statement "iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));" (assignment_expression "iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8))" (identifier "iVar8") (= "=") (call_expression "FUN_0002b8c0(*(undefined4 *)(iVar7 + 8))" (identifier "FUN_0002b8c0") (argument_list "(*(undefined4 *)(iVar7 + 8))" (( "(") (pointer_expression "*(undefined4 *)(iVar7 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar7 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar8 != 0) goto LAB_0002dda0;" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002dda0;" (goto "goto") (statement_identifier "LAB_0002dda0") (; ";"))) (expression_statement "local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);" (assignment_expression "local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4)" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (call_expression "(*pcVar5)(local_3c + 1,iVar7 + 4)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(local_3c + 1,iVar7 + 4)" (( "(") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1")) (, ",") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "iVar7 = (*pcVar6)(local_3c + 1);" (assignment_expression "iVar7 = (*pcVar6)(local_3c + 1)" (identifier "iVar7") (= "=") (call_expression "(*pcVar6)(local_3c + 1)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(local_3c + 1)" (( "(") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if ((local_3c[0] != 0) || (iVar7 == 0)) {\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }" (if "if") (parenthesized_expression "((local_3c[0] != 0) || (iVar7 == 0))" (( "(") (binary_expression "(local_3c[0] != 0) || (iVar7 == 0)" (parenthesized_expression "(local_3c[0] != 0)" (( "(") (binary_expression "local_3c[0] != 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                  (*(code *)PTR_free_000534fc)(local_30);\n                  iVar2 = local_3c[0];\n                  piVar15 = piVar18;\n                  piVar19 = piVar14;\n                  if (local_3c[0] == 0) goto LAB_0002df78;\n                  break;\n                }" ({ "{") (expression_statement "(*(code *)PTR_free_000534fc)(local_30);" (call_expression "(*(code *)PTR_free_000534fc)(local_30)" (parenthesized_expression "(*(code *)PTR_free_000534fc)" (( "(") (pointer_expression "*(code *)PTR_free_000534fc" (* "*") (cast_expression "(code *)PTR_free_000534fc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000534fc"))) () ")")) (argument_list "(local_30)" (( "(") (identifier "local_30") () ")"))) (; ";")) (expression_statement "iVar2 = local_3c[0];" (assignment_expression "iVar2 = local_3c[0]" (identifier "iVar2") (= "=") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "piVar15 = piVar18;" (assignment_expression "piVar15 = piVar18" (identifier "piVar15") (= "=") (identifier "piVar18")) (; ";")) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" (identifier "piVar19") (= "=") (identifier "piVar14")) (; ";")) (if_statement "if (local_3c[0] == 0) goto LAB_0002df78;" (if "if") (parenthesized_expression "(local_3c[0] == 0)" (( "(") (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002df78;" (goto "goto") (statement_identifier "LAB_0002df78") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);" (assignment_expression "piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2)" (identifier "piVar14") (= "=") (cast_expression "(int *)(*(int *)(param_1 + 100) + iVar2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 100) + iVar2)" (( "(") (binary_expression "*(int *)(param_1 + 100) + iVar2" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (} "}")))) (expression_statement "piVar16 = local_3c + 1;" (assignment_expression "piVar16 = local_3c + 1" (identifier "piVar16") (= "=") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar15 = piVar20;" (assignment_expression "piVar15 = piVar20" (identifier "piVar15") (= "=") (identifier "piVar20")) (; ";")) (expression_statement "iVar7 = (*pcVar4)(local_3c);" (assignment_expression "iVar7 = (*pcVar4)(local_3c)" (identifier "iVar7") (= "=") (call_expression "(*pcVar4)(local_3c)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")")))) (; ";")) (expression_statement "puVar1 = PTR_free_000534fc;" (assignment_expression "puVar1 = PTR_free_000534fc" (identifier "puVar1") (= "=") (identifier "PTR_free_000534fc")) (; ";")) (expression_statement "*piVar14 = iVar7;" (assignment_expression "*piVar14 = iVar7" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "(*(code *)puVar1)(local_30);" (call_expression "(*(code *)puVar1)(local_30)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(local_30)" (( "(") (identifier "local_30") () ")"))) (; ";")) (if_statement "if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;" (if "if") (parenthesized_expression "((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0))" (( "(") (binary_expression "(*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&\n                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)" (parenthesized_expression "(*(int *)(*(int *)(param_1 + 100) + iVar2) == 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 100) + iVar2) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 100) + iVar2)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 100) + iVar2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 100) + iVar2)" (( "(") (binary_expression "*(int *)(param_1 + 100) + iVar2" (pointer_expression "*(int *)(param_1 + 100)" (* "*") (cast_expression "(int *)(param_1 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 100)" (( "(") (binary_expression "param_1 + 100" (identifier "param_1") (+ "+") (number_literal "100")) () ")")))) (+ "+") (identifier "iVar2")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)" (( "(") (comma_expression "iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0" (assignment_expression "iVar2 = local_3c[0]" (identifier "iVar2") (= "=") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]"))) (, ",") (comma_expression "piVar19 = piVar14, local_3c[0] != 0" (assignment_expression "piVar19 = piVar14" (identifier "piVar19") (= "=") (identifier "piVar14")) (, ",") (binary_expression "local_3c[0] != 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")))) (} "}"))) (labeled_statement "LAB_0002dda0:\n          piVar18 = piVar11 + 4;" (statement_identifier "LAB_0002dda0") (: ":") (expression_statement "piVar18 = piVar11 + 4;" (assignment_expression "piVar18 = piVar11 + 4" (identifier "piVar18") (= "=") (binary_expression "piVar11 + 4" (identifier "piVar11") (+ "+") (number_literal "4"))) (; ";"))) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar19 = piVar14;" (assignment_expression "piVar19 = piVar14" (identifier "piVar19") (= "=") (identifier "piVar14")) (; ";")) (expression_statement "piVar11 = piVar11 + 5;" (assignment_expression "piVar11 = piVar11 + 5" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 5" (identifier "piVar11") (+ "+") (number_literal "5"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(char *)piVar18 != '\0')" (( "(") (binary_expression "*(char *)piVar18 != '\0'" (pointer_expression "*(char *)piVar18" (* "*") (cast_expression "(char *)piVar18" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "piVar18"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";"))) (} "}")))) (} "}"))) (} "}"))) (if_statement "if (local_2c == *(int *)puVar21) {\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar21)" (( "(") (binary_expression "local_2c == *(int *)puVar21" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar21" (* "*") (cast_expression "(int *)puVar21" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar21")))) () ")")) (compound_statement "{\n    return iVar2;\n  }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "iVar2 = local_2c;" (assignment_expression "iVar2 = local_2c" (identifier "iVar2") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar21 = PTR___stack_chk_fail_000534d4;" (assignment_expression "puVar21 = PTR___stack_chk_fail_000534d4" (identifier "puVar21") (= "=") (identifier "PTR___stack_chk_fail_000534d4")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000534d4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000534d4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000534d4)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000534d4" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000534d4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000534d4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar3 = *piVar15;" (assignment_expression "iVar3 = *piVar15" (identifier "iVar3") (= "=") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) (; ";")) (expression_statement "piVar11 = *(int **)(iVar2 + 0x54);" (assignment_expression "piVar11 = *(int **)(iVar2 + 0x54)" (identifier "piVar11") (= "=") (pointer_expression "*(int **)(iVar2 + 0x54)" (* "*") (cast_expression "(int **)(iVar2 + 0x54)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0x54)" (( "(") (binary_expression "iVar2 + 0x54" (identifier "iVar2") (+ "+") (number_literal "0x54")) () ")"))))) (; ";")) (if_statement "if (0 < iVar3) {\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }" (if "if") (parenthesized_expression "(0 < iVar3)" (( "(") (binary_expression "0 < iVar3" (number_literal "0") (< "<") (identifier "iVar3")) () ")")) (compound_statement "{\n    iVar7 = 0;\n    do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);\n  }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    } while (iVar7 < iVar3);" (do "do") (compound_statement "{\n      while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }\n      iVar13 = *(int *)(iVar2 + 0x7c);\n      iVar3 = *(int *)(iVar2 + 0x84);\n      if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }\n      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);\n      *(int **)(iVar3 + iVar13 * 4) = piVar14;\n      if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }\n      *(int *)(iVar2 + 0x7c) = iVar13 + 1;\n      piVar14[1] = iVar8;\n      *piVar14 = (int)piVar19;\n      iVar3 = *piVar15;\n    }" ({ "{") (while_statement "while( true ) {\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar8 = *(int *)(*piVar16 + iVar7 * 4);\n        puVar9 = (uint *)(*piVar11 + iVar8 * 8);\n        iVar7 = iVar7 + 1;\n        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;\n        if (iVar3 <= iVar7) {\n          return 0;\n        }\n      }" ({ "{") (expression_statement "iVar8 = *(int *)(*piVar16 + iVar7 * 4);" (assignment_expression "iVar8 = *(int *)(*piVar16 + iVar7 * 4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(*piVar16 + iVar7 * 4)" (* "*") (cast_expression "(int *)(*piVar16 + iVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar16 + iVar7 * 4)" (( "(") (binary_expression "*piVar16 + iVar7 * 4" (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "puVar9 = (uint *)(*piVar11 + iVar8 * 8);" (assignment_expression "puVar9 = (uint *)(*piVar11 + iVar8 * 8)" (identifier "puVar9") (= "=") (cast_expression "(uint *)(*piVar11 + iVar8 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + iVar8 * 8)" (( "(") (binary_expression "*piVar11 + iVar8 * 8" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (binary_expression "iVar8 * 8" (identifier "iVar8") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;" (if "if") (parenthesized_expression "(((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0))" (( "(") (binary_expression "((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&\n           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)" (parenthesized_expression "((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20))" (( "(") (binary_expression "(*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)" (parenthesized_expression "(*(char *)(puVar9 + 1) == '\b')" (( "(") (binary_expression "*(char *)(puVar9 + 1) == '\b'" (pointer_expression "*(char *)(puVar9 + 1)" (* "*") (cast_expression "(char *)(puVar9 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 1)" (( "(") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1")) () ")")))) (== "==") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(uVar12 = *puVar9, (int)uVar12 < 0x20)" (( "(") (comma_expression "uVar12 = *puVar9, (int)uVar12 < 0x20" (assignment_expression "uVar12 = *puVar9" (identifier "uVar12") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (, ",") (binary_expression "(int)uVar12 < 0x20" (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12")) (< "<") (number_literal "0x20"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)" (( "(") (binary_expression "((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0" (parenthesized_expression "((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1)" (( "(") (binary_expression "(uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1" (binary_expression "(uint)piVar11[0x14] >> (uVar12 & 0x1f)" (cast_expression "(uint)piVar11[0x14]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar11[0x14]" (identifier "piVar11") ([ "[") (number_literal "0x14") (] "]"))) (>> ">>") (parenthesized_expression "(uVar12 & 0x1f)" (( "(") (binary_expression "uVar12 & 0x1f" (identifier "uVar12") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (iVar3 <= iVar7) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(iVar3 <= iVar7)" (( "(") (binary_expression "iVar3 <= iVar7" (identifier "iVar3") (<= "<=") (identifier "iVar7")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar13 = *(int *)(iVar2 + 0x7c);" (assignment_expression "iVar13 = *(int *)(iVar2 + 0x7c)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(iVar2 + 0x7c)" (* "*") (cast_expression "(int *)(iVar2 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x7c)" (( "(") (binary_expression "iVar2 + 0x7c" (identifier "iVar2") (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (expression_statement "iVar3 = *(int *)(iVar2 + 0x84);" (assignment_expression "iVar3 = *(int *)(iVar2 + 0x84)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar2 + 0x84)" (* "*") (cast_expression "(int *)(iVar2 + 0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x84)" (( "(") (binary_expression "iVar2 + 0x84" (identifier "iVar2") (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (if_statement "if (iVar13 == *(int *)(iVar2 + 0x80)) {\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }" (if "if") (parenthesized_expression "(iVar13 == *(int *)(iVar2 + 0x80))" (( "(") (binary_expression "iVar13 == *(int *)(iVar2 + 0x80)" (identifier "iVar13") (== "==") (pointer_expression "*(int *)(iVar2 + 0x80)" (* "*") (cast_expression "(int *)(iVar2 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x80)" (( "(") (binary_expression "iVar2 + 0x80" (identifier "iVar2") (+ "+") (number_literal "0x80")) () ")"))))) () ")")) (compound_statement "{\n        iVar10 = iVar13 << 1;\n        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);\n        if (iVar3 == 0) {\n          return 0xc;\n        }\n        iVar13 = *(int *)(iVar2 + 0x7c);\n        *(int *)(iVar2 + 0x84) = iVar3;\n        *(int *)(iVar2 + 0x80) = iVar10;\n      }" ({ "{") (expression_statement "iVar10 = iVar13 << 1;" (assignment_expression "iVar10 = iVar13 << 1" (identifier "iVar10") (= "=") (binary_expression "iVar13 << 1" (identifier "iVar13") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);" (assignment_expression "iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3)" (parenthesized_expression "(**(code **)(puVar21 + 0x254c4))" (( "(") (pointer_expression "**(code **)(puVar21 + 0x254c4)" (* "*") (pointer_expression "*(code **)(puVar21 + 0x254c4)" (* "*") (cast_expression "(code **)(puVar21 + 0x254c4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar21 + 0x254c4)" (( "(") (binary_expression "puVar21 + 0x254c4" (identifier "puVar21") (+ "+") (number_literal "0x254c4")) () ")"))))) () ")")) (argument_list "(iVar3,iVar13 << 3)" (( "(") (identifier "iVar3") (, ",") (binary_expression "iVar13 << 3" (identifier "iVar13") (<< "<<") (number_literal "3")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n          return 0xc;\n        }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return 0xc;\n        }" ({ "{") (return_statement "return 0xc;" (return "return") (number_literal "0xc") (; ";")) (} "}"))) (expression_statement "iVar13 = *(int *)(iVar2 + 0x7c);" (assignment_expression "iVar13 = *(int *)(iVar2 + 0x7c)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(iVar2 + 0x7c)" (* "*") (cast_expression "(int *)(iVar2 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x7c)" (( "(") (binary_expression "iVar2 + 0x7c" (identifier "iVar2") (+ "+") (number_literal "0x7c")) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar2 + 0x84) = iVar3;" (assignment_expression "*(int *)(iVar2 + 0x84) = iVar3" (pointer_expression "*(int *)(iVar2 + 0x84)" (* "*") (cast_expression "(int *)(iVar2 + 0x84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x84)" (( "(") (binary_expression "iVar2 + 0x84" (identifier "iVar2") (+ "+") (number_literal "0x84")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "*(int *)(iVar2 + 0x80) = iVar10;" (assignment_expression "*(int *)(iVar2 + 0x80) = iVar10" (pointer_expression "*(int *)(iVar2 + 0x80)" (* "*") (cast_expression "(int *)(iVar2 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x80)" (( "(") (binary_expression "iVar2 + 0x80" (identifier "iVar2") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (expression_statement "piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);" (assignment_expression "piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18)" (identifier "piVar14") (= "=") (cast_expression "(int *)(**(code **)(puVar21 + 0x253bc))(1,0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar21 + 0x253bc))(1,0x18)" (parenthesized_expression "(**(code **)(puVar21 + 0x253bc))" (( "(") (pointer_expression "**(code **)(puVar21 + 0x253bc)" (* "*") (pointer_expression "*(code **)(puVar21 + 0x253bc)" (* "*") (cast_expression "(code **)(puVar21 + 0x253bc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar21 + 0x253bc)" (( "(") (binary_expression "puVar21 + 0x253bc" (identifier "puVar21") (+ "+") (number_literal "0x253bc")) () ")"))))) () ")")) (argument_list "(1,0x18)" (( "(") (number_literal "1") (, ",") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*(int **)(iVar3 + iVar13 * 4) = piVar14;" (assignment_expression "*(int **)(iVar3 + iVar13 * 4) = piVar14" (pointer_expression "*(int **)(iVar3 + iVar13 * 4)" (* "*") (cast_expression "(int **)(iVar3 + iVar13 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + iVar13 * 4)" (( "(") (binary_expression "iVar3 + iVar13 * 4" (identifier "iVar3") (+ "+") (binary_expression "iVar13 * 4" (identifier "iVar13") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "piVar14")) (; ";")) (if_statement "if (piVar14 == (int *)0x0) {\n        return 0xc;\n      }" (if "if") (parenthesized_expression "(piVar14 == (int *)0x0)" (( "(") (binary_expression "piVar14 == (int *)0x0" (identifier "piVar14") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return 0xc;\n      }" ({ "{") (return_statement "return 0xc;" (return "return") (number_literal "0xc") (; ";")) (} "}"))) (expression_statement "*(int *)(iVar2 + 0x7c) = iVar13 + 1;" (assignment_expression "*(int *)(iVar2 + 0x7c) = iVar13 + 1" (pointer_expression "*(int *)(iVar2 + 0x7c)" (* "*") (cast_expression "(int *)(iVar2 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x7c)" (( "(") (binary_expression "iVar2 + 0x7c" (identifier "iVar2") (+ "+") (number_literal "0x7c")) () ")")))) (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar14[1] = iVar8;" (assignment_expression "piVar14[1] = iVar8" (subscript_expression "piVar14[1]" (identifier "piVar14") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "*piVar14 = (int)piVar19;" (assignment_expression "*piVar14 = (int)piVar19" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (= "=") (cast_expression "(int)piVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar19"))) (; ";")) (expression_statement "iVar3 = *piVar15;" (assignment_expression "iVar3 = *piVar15" (identifier "iVar3") (= "=") (pointer_expression "*piVar15" (* "*") (identifier "piVar15"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 < iVar3)" (( "(") (binary_expression "iVar7 < iVar3" (identifier "iVar7") (< "<") (identifier "iVar3")) () ")")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) 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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_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: (parenthesized_expression (binary_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: (parenthesized_expression (binary_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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_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))))) (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: (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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)))))) (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: (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)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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)))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)))))) (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: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (break_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (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))))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) consequence: (break_statement))))))) (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (char_literal (escape_sequence))))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))) (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) 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: (identifier)) right: (binary_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: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (cast_expression type: (type_descriptor type: (primitive_type) 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: (identifier) right: (number_literal))))))) arguments: (argument_list (number_literal) (number_literal)))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (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: (compound_statement (return_statement (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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (return_statement (number_literal)))))

/* WARNING: Type propagation algorithm not settling */

int MASKED(int param_1,int param_2,int *param_3,int *param_4,int *param_5)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  code *pcVar4;
  code *pcVar5;
  code *pcVar6;
  int iVar7;
  int iVar8;
  uint *puVar9;
  int iVar10;
  int *piVar11;
  uint uVar12;
  int iVar13;
  int *piVar14;
  int *piVar15;
  int *piVar16;
  undefined4 uVar17;
  int *piVar18;
  int *piVar19;
  int *piVar20;
  undefined *puVar21;
  int local_3c [3];
  int *local_30;
  int local_2c;
  
  puVar21 = PTR___stack_chk_guard_000534f0;
  local_2c = *(int *)PTR___stack_chk_guard_000534f0;
  piVar15 = (int *)0x0;
  piVar11 = *(int **)(param_1 + 0x6c);
  piVar16 = param_3;
  piVar19 = param_4;
  while ((int)piVar15 < (int)piVar11) {
    piVar16 = *(int **)(param_1 + 0x74);
    piVar14 = (int *)(((int)piVar15 + (int)piVar11) / 2);
    iVar2 = piVar16[(int)piVar14 * 5 + 1];
    while (piVar20 = piVar14, (int)param_3 <= iVar2) {
      if ((int)piVar20 <= (int)piVar15) goto LAB_0002dc5c;
      piVar19 = (int *)(((int)piVar15 + (int)piVar20) / 2);
      piVar14 = piVar19;
      piVar11 = piVar20;
      iVar2 = piVar16[(int)piVar19 * 5 + 1];
    }
    piVar19 = piVar20;
    piVar15 = (int *)((int)piVar20 + 1);
  }
LAB_0002dc5c:
  iVar2 = 0;
  if ((int)piVar15 < (int)*(int **)(param_1 + 0x6c)) {
    iVar3 = (int)piVar15 * 0x14;
    piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);
    iVar2 = 0;
    if (param_3 == (int *)piVar11[1]) {
      if (piVar15 == (int *)0xffffffff) {
        iVar2 = 0;
      }
      else {
        piVar20 = *(int **)(param_1 + 0x54);
        pcVar4 = (code *)(PTR_LAB_0005332c + -0x28b4);
        pcVar5 = (code *)(PTR_LAB_0005332c + -0x2f90);
        pcVar6 = (code *)(PTR_LAB_0005332c + -0x6548);
        piVar14 = piVar19;
LAB_0002ddac:
        do {
          piVar16 = (int *)*piVar11;
          uVar17 = *(undefined4 *)(param_2 + 4);
          piVar15 = (int *)(param_2 + 8);
          piVar19 = piVar16;
          iVar2 = FUN_0002b8c0(uVar17);
          if (iVar2 != 0) {
            piVar18 = (int *)((int)param_3 + (piVar11[3] - piVar11[2]));
            iVar2 = (int)piVar18 * 4;
            if (param_3 == piVar18) {
              piVar19 = (int *)**(int **)(piVar20[5] + (int)piVar19 * 0xc + 8);
              piVar15 = (int *)(param_2 + 8);
              piVar16 = piVar19;
              iVar2 = FUN_0002b8c0(uVar17);
              if (iVar2 == 0) {
                local_3c[1] = 1;
                local_3c[2] = 1;
                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);
                if (local_30 == (int *)0x0) {
                  local_3c[2] = 0;
                  local_3c[0] = 0xc;
                  local_3c[1] = 0;
                }
                else {
                  *local_30 = (int)piVar19;
                  local_3c[0] = 0;
                }
                piVar15 = local_3c + 1;
                piVar16 = param_4;
                piVar14 = param_5;
                iVar7 = FUN_0002c5d8(piVar20,piVar15);
                iVar8 = FUN_0002c03c(param_2);
                (*(code *)PTR_free_000534fc)(local_30);
                iVar2 = local_3c[0];
                piVar19 = piVar14;
                if (((local_3c[0] != 0) || (iVar2 = iVar7, iVar7 != 0)) ||
                   (iVar2 = iVar8, iVar8 != 0)) break;
                piVar11 = (int *)(*(int *)(param_1 + 0x74) + iVar3);
                goto LAB_0002ddac;
              }
            }
            else {
              piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);
              iVar7 = *piVar14;
              piVar18 = *(int **)(piVar20[3] + (int)piVar19 * 4);
              if (iVar7 == 0) {
                local_3c[1] = 1;
                local_3c[2] = 1;
                piVar19 = piVar14;
                local_30 = (int *)(*(code *)PTR_malloc_00053474)(4);
                if (local_30 == (int *)0x0) {
LAB_0002df78:
                  iVar2 = 0xc;
                  break;
                }
                *local_30 = (int)piVar18;
                local_3c[0] = 0;
              }
              else {
                piVar15 = (int *)(iVar7 + 0xc);
                piVar16 = piVar18;
                iVar8 = FUN_0002b8c0(*(undefined4 *)(iVar7 + 8));
                if (iVar8 != 0) goto LAB_0002dda0;
                local_3c[0] = (*pcVar5)(local_3c + 1,iVar7 + 4);
                iVar7 = (*pcVar6)(local_3c + 1);
                if ((local_3c[0] != 0) || (iVar7 == 0)) {
                  (*(code *)PTR_free_000534fc)(local_30);
                  iVar2 = local_3c[0];
                  piVar15 = piVar18;
                  piVar19 = piVar14;
                  if (local_3c[0] == 0) goto LAB_0002df78;
                  break;
                }
                piVar14 = (int *)(*(int *)(param_1 + 100) + iVar2);
              }
              piVar16 = local_3c + 1;
              piVar15 = piVar20;
              iVar7 = (*pcVar4)(local_3c);
              puVar1 = PTR_free_000534fc;
              *piVar14 = iVar7;
              (*(code *)puVar1)(local_30);
              if ((*(int *)(*(int *)(param_1 + 100) + iVar2) == 0) &&
                 (iVar2 = local_3c[0], piVar19 = piVar14, local_3c[0] != 0)) break;
            }
          }
LAB_0002dda0:
          piVar18 = piVar11 + 4;
          iVar2 = 0;
          piVar19 = piVar14;
          piVar11 = piVar11 + 5;
        } while (*(char *)piVar18 != '\0');
      }
    }
  }
  if (local_2c == *(int *)puVar21) {
    return iVar2;
  }
  iVar2 = local_2c;
  puVar21 = PTR___stack_chk_fail_000534d4;
  (*(code *)PTR___stack_chk_fail_000534d4)();
  iVar3 = *piVar15;
  piVar11 = *(int **)(iVar2 + 0x54);
  if (0 < iVar3) {
    iVar7 = 0;
    do {
      while( true ) {
        iVar8 = *(int *)(*piVar16 + iVar7 * 4);
        puVar9 = (uint *)(*piVar11 + iVar8 * 8);
        iVar7 = iVar7 + 1;
        if (((*(char *)(puVar9 + 1) == '\b') && (uVar12 = *puVar9, (int)uVar12 < 0x20)) &&
           (((uint)piVar11[0x14] >> (uVar12 & 0x1f) & 1) != 0)) break;
        if (iVar3 <= iVar7) {
          return 0;
        }
      }
      iVar13 = *(int *)(iVar2 + 0x7c);
      iVar3 = *(int *)(iVar2 + 0x84);
      if (iVar13 == *(int *)(iVar2 + 0x80)) {
        iVar10 = iVar13 << 1;
        iVar3 = (**(code **)(puVar21 + 0x254c4))(iVar3,iVar13 << 3);
        if (iVar3 == 0) {
          return 0xc;
        }
        iVar13 = *(int *)(iVar2 + 0x7c);
        *(int *)(iVar2 + 0x84) = iVar3;
        *(int *)(iVar2 + 0x80) = iVar10;
      }
      piVar14 = (int *)(**(code **)(puVar21 + 0x253bc))(1,0x18);
      *(int **)(iVar3 + iVar13 * 4) = piVar14;
      if (piVar14 == (int *)0x0) {
        return 0xc;
      }
      *(int *)(iVar2 + 0x7c) = iVar13 + 1;
      piVar14[1] = iVar8;
      *piVar14 = (int)piVar19;
      iVar3 = *piVar15;
    } while (iVar7 < iVar3);
  }
  return 0;
}

