
reg_errcode_t
re_search_internal(regex_t *preg,char *string,Idx length,Idx start,Idx last_start,Idx stop,
                  size_t nmatch,regmatch_t *pmatch,int eflags)

{
  bool bVar1;
  bool bVar2;
  re_dfa_t *prVar3;
  bool bVar4;
  bool bVar5;
  undefined *puVar6;
  undefined *puVar7;
  undefined *puVar8;
  undefined1 *puVar9;
  reg_errcode_t rVar10;
  int iVar11;
  uint uVar12;
  __re_long_size_t _Var13;
  re_backref_cache_entry *prVar14;
  uint uVar15;
  int *piVar16;
  int *piVar17;
  reg_errcode_t rVar18;
  code *pcVar19;
  code *pcVar20;
  Idx IVar21;
  re_dfastate_t **pprVar22;
  re_dfastate_t **pprVar23;
  char cVar29;
  Idx *pIVar24;
  code *pcVar25;
  code *pcVar26;
  regmatch_t *prVar27;
  regmatch_t *prVar28;
  bool bVar30;
  uint extraout_v1;
  reg_errcode_t *prVar31;
  code *pcVar32;
  int iVar33;
  uint uVar34;
  uint uVar35;
  int iVar36;
  re_dfastate_t *prVar37;
  re_node_set *src2;
  undefined4 uVar38;
  int iVar39;
  uchar *puVar40;
  re_dfastate_t *prVar41;
  int iVar42;
  Idx **nodes_1;
  undefined1 *puVar43;
  re_dfastate_t *prVar44;
  re_token_t *prVar45;
  re_dfa_t *prVar46;
  re_dfastate_t *prStack_160;
  re_dfastate_t **pprStack_15c;
  reg_errcode_t rStack_154;
  char *pcStack_150;
  int *piStack_14c;
  undefined1 *puStack_140;
  int iStack_f0;
  Idx match_first;
  reg_errcode_t err;
  reg_errcode_t err_1;
  re_node_set dest_nodes;
  re_dfastate_t *prStack_c4;
  re_match_context_t mctx;
  
  puVar8 = PTR___stack_chk_guard_000534f0;
  iVar11 = *(int *)PTR___stack_chk_guard_000534f0;
  prVar46 = preg->buffer;
  (*(code *)PTR_memset_00053430)(&mctx,0,0x88);
  pcStack_150 = preg->fastmap;
  if (pcStack_150 != (char *)0x0) {
    if (((preg->field_0x1c & 0x10) == 0) || (start == last_start)) {
      pcStack_150 = (char *)0x0;
    }
    else if ((char)preg->field_0x1c < '\0') {
      pcStack_150 = (char *)0x0;
    }
  }
  uVar12 = preg->re_nsub;
  if (uVar12 < nmatch) {
    iStack_f0 = (nmatch - 1) - uVar12;
    nmatch = nmatch + (uVar12 - (nmatch - 1));
    _Var13 = preg->used;
  }
  else {
    _Var13 = preg->used;
    iStack_f0 = 0;
  }
  mctx.dfa = prVar46;
  if ((((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)) ||
      (prVar46->init_state_word == (re_dfastate_t *)0x0)) ||
     ((prVar46->init_state_nl == (re_dfastate_t *)0x0 ||
      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0)))) {
LAB_000341d0:
    rStack_154 = _REG_NOMATCH;
    goto LAB_000341d4;
  }
  if ((((prVar46->init_state->nodes).nelem == 0) && ((prVar46->init_state_word->nodes).nelem == 0))
     && (((prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0)))) {
    if (start == 0) {
      last_start = 0;
    }
    else {
      if (last_start != 0) goto LAB_000341d0;
      start = 0;
    }
  }
  if (nmatch == 0) {
    bVar30 = prVar46->nbackref != 0;
  }
  else {
    bVar30 = true;
  }
  mctx.input.mb_cur_max = prVar46->mb_cur_max;
  iVar39 = prVar46->nodes_len + 1;
  puVar40 = preg->translate;
  if (iVar39 < mctx.input.mb_cur_max) {
    iVar39 = mctx.input.mb_cur_max;
  }
  mctx.input.icase = (uchar)((preg->syntax << 9) >> 0x1f);
  mctx.input.mbs_allocated = 1;
  if (puVar40 == (uchar *)0x0) {
    mctx.input.mbs_allocated = mctx.input.icase;
  }
  iVar42 = length + 1;
  if (iVar39 <= length + 1) {
    iVar42 = iVar39;
  }
  mctx.input.is_utf8 = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 2) >> 0x1f);
  mctx.input.map_notascii = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 3) >> 0x1f);
  mctx.input.raw_mbs = (uchar *)string;
  mctx.input.raw_len = length;
  mctx.input.len = length;
  mctx.input.raw_stop = length;
  mctx.input.stop = length;
  mctx.input.trans = puVar40;
  rStack_154 = re_string_realloc_buffers(&mctx.input,iVar42);
  pprVar22 = mctx.state_log;
  if (rStack_154 != _REG_NOERROR) {
LAB_0003423c:
    while( true ) {
      (*(code *)PTR_free_000534fc)(pprVar22);
      if (prVar46->nbackref != 0) {
LAB_00034290:
        match_ctx_clean(&mctx);
        (*(code *)PTR_free_000534fc)(mctx.sub_tops);
        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);
      }
LAB_00034250:
      re_string_destruct(&mctx.input);
LAB_000341d4:
      if (iVar11 == *(int *)puVar8) break;
      rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();
      pprVar22 = mctx.state_log;
    }
    return rStack_154;
  }
  mctx.input.word_char = prVar46->word_char;
  mctx.input.word_ops_used = (byte)((uint)(*(int *)&prVar46->field_0x58 << 4) >> 0x1f);
  if ((mctx.input.mbs_allocated != '\0') ||
     (mctx.input.mbs = (uchar *)string, mctx.input.valid_len = length, 1 < prVar46->mb_cur_max)) {
    mctx.input.valid_len = 0;
  }
  mctx.input.stop = stop;
  mctx.input.raw_stop = stop;
  mctx.input.valid_raw_len = mctx.input.valid_len;
  mctx.input.newline_anchor = (byte)((uint)(*(int *)&preg->field_0x1c << 7) >> 0x1f);
  iVar39 = prVar46->nbackref;
  iVar42 = iVar39 * 2;
  mctx.eflags = eflags;
  mctx.match_last = -1;
  if (0 < iVar42) {
    if (0xccccccc < iVar42) goto LAB_00034274;
    prVar14 = (re_backref_cache_entry *)(*(code *)PTR_malloc_00053474)(iVar39 * 0x28);
    mctx.bkref_ents = prVar14;
    mctx.sub_tops = (re_sub_match_top_t **)(*(code *)PTR_malloc_00053474)(iVar39 * 8);
    if ((prVar14 == (re_backref_cache_entry *)0x0) || (mctx.sub_tops == (re_sub_match_top_t **)0x0))
    goto LAB_00034274;
  }
  mctx.abkref_ents = iVar42;
  mctx.asub_tops = iVar42;
  bVar1 = 1 < nmatch;
  mctx.max_mb_elem_len = 1;
  if ((bVar1) || ((prVar46->field_0x58 & 0x40) != 0)) {
    if (0x3ffffffe < (uint)mctx.input.bufs_len) {
LAB_00034274:
      rStack_154 = _REG_ESPACE;
      (*(code *)PTR_free_000534fc)(mctx.state_log);
      if (prVar46->nbackref == 0) goto LAB_00034250;
      goto LAB_00034290;
    }
    mctx.state_log = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 4)
    ;
    pprVar22 = mctx.state_log;
    if (mctx.state_log == (re_dfastate_t **)0x0) {
LAB_00034230:
      rStack_154 = _REG_ESPACE;
      goto LAB_0003423c;
    }
  }
  else {
    mctx.state_log = (re_dfastate_t **)0x0;
  }
  iVar42 = prVar46->mb_cur_max;
  iVar39 = -1;
  match_first = start;
  mctx.input.tip_context = 6;
  if ((eflags & 1U) != 0) {
    mctx.input.tip_context = 4;
  }
  uVar12 = (uint)(last_start < start);
  prVar31 = (reg_errcode_t *)last_start;
  if (uVar12 == 0) {
    iVar39 = 1;
    prVar31 = (reg_errcode_t *)start;
  }
  if (last_start <= start) {
    last_start = start;
  }
  if (pcStack_150 == (char *)0x0) goto LAB_00035138;
  uVar15 = 4;
  if (((iVar42 != 1) && (uVar15 = 0, -1 < (int)(preg->syntax << 9))) &&
     (uVar15 = 4, puVar40 != (uchar *)0x0)) {
    uVar15 = 0;
  }
  uVar35 = 2;
  if (uVar12 != 0) {
    uVar35 = 0;
  }
  uVar35 = puVar40 != (uchar *)0x0 | uVar15 | uVar35;
LAB_0003412c:
  puVar6 = PTR_LAB_0005332c;
  if (((int)prVar31 <= start) && (start <= last_start)) {
    piVar16 = &match_first;
    if (uVar12 != 0) {
      piVar16 = (int *)0x0;
    }
    piVar17 = (int *)(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4);
    pcVar32 = (code *)(PTR_LAB_0005332c + -0xe80);
    iVar33 = mctx.input.raw_mbs_idx;
    do {
      if (uVar35 - 4 < 5) {
                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        rVar18 = (*(code *)(&_gp + *piVar17))();
        return rVar18;
      }
      mctx.input.raw_mbs_idx = iVar33;
      while( true ) {
        uVar12 = start - iVar33;
        if ((uint)mctx.input.valid_raw_len <= uVar12) {
          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);
          pprVar22 = mctx.state_log;
          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;
          uVar12 = start - mctx.input.raw_mbs_idx;
          iVar33 = mctx.input.raw_mbs_idx;
        }
        if (start < length) {
          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];
        }
        else {
          cVar29 = *pcStack_150;
        }
        if (cVar29 != '\0') break;
        start = start + iVar39;
        match_first = start;
        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;
      }
      rVar18 = re_string_reconstruct(&mctx.input,start,eflags);
      prVar3 = mctx.dfa;
      prVar37 = (re_dfastate_t *)mctx.input.cur_idx;
      pprVar22 = mctx.state_log;
      rStack_154 = rVar18;
      if (rVar18 != _REG_NOERROR) goto LAB_0003423c;
      if (((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)) {
        mctx.max_mb_elem_len = 0;
        mctx.nbkref_ents = 0;
        prVar44 = (mctx.dfa)->init_state;
        puStack_140 = (undefined1 *)mctx.input.cur_idx;
        mctx.state_log_top = 0;
        err = _REG_NOERROR;
        if ((prVar44->field_0x34 & 1) != 0) {
          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);
          if ((uVar12 & 1) == 0) {
            if (uVar12 == 0) goto LAB_000343a0;
            if ((uVar12 & 6) == 6) {
              prVar44 = prVar3->init_state_begbuf;
            }
            else if ((uVar12 & 2) == 0) {
              if ((uVar12 & 4) == 0) goto LAB_000343a0;
              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);
            }
            else {
              prVar44 = prVar3->init_state_nl;
            }
          }
          else {
            prVar44 = prVar3->init_state_word;
          }
          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;
        }
LAB_000343a0:
        bVar4 = piVar16 != (int *)0x0;
        if ((mctx.state_log == (re_dfastate_t **)0x0) ||
           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {
LAB_000343c4:
          if (*(int *)&prVar44->field_0x34 << 4 < 0) {
            if (((prVar44->field_0x34 & 1) == 0) ||
               (IVar21 = check_halt_state_context
                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,
                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {
              prStack_c4 = prVar37;
              bVar5 = bVar30;
              if (!bVar30) goto LAB_00034760;
            }
            else {
              prVar37 = (re_dfastate_t *)0xffffffff;
              bVar5 = false;
            }
          }
          else {
            prVar37 = (re_dfastate_t *)0xffffffff;
            bVar5 = false;
          }
          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);
          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);
          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;
          piStack_14c = piVar16;
          while ((int)prStack_c4 < mctx.input.stop) {
            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);
            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&
               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))
            {
              iVar33 = *(int *)&prVar44->field_0x34;
              prVar3 = mctx.dfa;
            }
            else {
              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));
              if (err != _REG_NOERROR) {
                if (err == _REG_ESPACE) goto LAB_00034274;
                uVar38 = 0x468;
                goto LAB_00035118;
              }
              iVar33 = *(int *)&prVar44->field_0x34;
              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;
              prVar3 = mctx.dfa;
            }
            mctx.dfa = prVar3;
            if (iVar33 << 5 < 0) {
              iVar33 = (prVar44->nodes).nelem;
              if (0 < iVar33) {
                start = 0;
                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);
                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);
                do {
                  prVar45 = prVar3->nodes;
                  iVar36 = (prVar44->nodes).elems[start];
                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;
                  if ((uVar12 & 0x800) != 0) {
                    if ((uVar12 & 0xffc000) != 0) {
                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);
                      uVar12 = (uVar12 << 8) >> 0x16;
                      if ((uVar12 & 4) == 0) {
                        uVar34 = uVar15 & 1;
                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;
                      }
                      else {
                        uVar34 = uVar12 & 8;
                        if ((uVar15 & 1) == 0) goto LAB_00034cec;
joined_r0x00034b90:
                        if (uVar34 != 0) goto LAB_00034cec;
                      }
                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||
                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;
                    }
                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);
                    if (iVar33 != 0) {
                      if (mctx.max_mb_elem_len < iVar33) {
                        mctx.max_mb_elem_len = iVar33;
                      }
                      iVar33 = iVar33 + mctx.input.cur_idx;
                      err_1 = (*pcVar25)(&mctx,iVar33);
                      rVar10 = err_1;
                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;
                      pprVar22 = mctx.state_log + iVar33;
                      prVar41 = *pprVar22;
                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];
                      if (prVar41 == (re_dfastate_t *)0x0) {
                        dest_nodes.alloc = src2->alloc;
                        dest_nodes.nelem = src2->nelem;
                        dest_nodes.elems = src2->elems;
                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);
                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);
                        *pprVar22 = prVar41;
                      }
                      else {
                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);
                        rVar10 = err_1;
                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;
                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);
                        pprVar22 = mctx.state_log + iVar33;
                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);
                        puVar7 = PTR_free_000534fc;
                        *pprVar22 = prVar41;
                        (*(code *)puVar7)(dest_nodes.elems);
                      }
                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&
                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;
                    }
                    iVar33 = (prVar44->nodes).nelem;
                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;
                  }
LAB_00034cec:
                  start = start + 1;
                } while (start < iVar33);
              }
              err = _REG_NOERROR;
            }
            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;
            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];
            do {
              if (prVar44->trtable != (re_dfastate_t **)0x0) {
                prVar41 = prVar44->trtable[uVar12];
LAB_0003446c:
                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;
                goto LAB_00034498;
              }
              pprVar22 = prVar44->word_trtable;
              if (pprVar22 != (re_dfastate_t **)0x0) {
                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);
                if ((uVar15 & 1) == 0) {
                  prVar41 = pprVar22[uVar12];
                }
                else {
                  prVar41 = pprVar22[uVar12 + 0x100];
                }
                goto LAB_0003446c;
              }
              iVar33 = (*pcVar32)(mctx.dfa,prVar44);
            } while (iVar33 != 0);
            err = _REG_ESPACE;
            rVar10 = err;
joined_r0x00034dec:
            err = rVar10;
            if (mctx.state_log == (re_dfastate_t **)0x0) {
              pprVar22 = (re_dfastate_t **)0x0;
              goto LAB_00034230;
            }
            prVar41 = (re_dfastate_t *)0x0;
LAB_00034478:
            prVar41 = merge_state_with_log(&err,&mctx,prVar41);
LAB_00034498:
            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;
            if (prVar41 == (re_dfastate_t *)0x0) {
              pprVar22 = mctx.state_log;
              if (err != _REG_NOERROR) goto LAB_00034230;
              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;
              start = (Idx)&err;
              do {
                bVar2 = false;
                pprVar22 = mctx.state_log + mctx.input.cur_idx;
                IVar21 = mctx.input.cur_idx;
                do {
                  iVar33 = IVar21 + 1;
                  pprVar22 = pprVar22 + 1;
                  if (mctx.state_log_top < iVar33) {
                    if (bVar2) {
                      mctx.input.cur_idx = IVar21;
                    }
                    goto LAB_00034748;
                  }
                  bVar2 = true;
                  IVar21 = iVar33;
                } while (*pprVar22 == (re_dfastate_t *)0x0);
                mctx.input.cur_idx = iVar33;
                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);
                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;
                if (err != _REG_NOERROR) {
                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;
                  break;
                }
              } while (prVar41 == (re_dfastate_t *)0x0);
            }
            puVar9 = puStack_140;
            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {
              bVar4 = false;
              puVar9 = puStack_140;
            }
            puStack_140 = puVar9;
            prVar44 = prVar41;
            mctx.input.cur_idx = (Idx)prStack_c4;
            if (((prVar41->field_0x34 & 8) != 0) &&
               (((prVar41->field_0x34 & 1) == 0 ||
                (IVar21 = check_halt_state_context
                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,
                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {
              if (!bVar30) goto LAB_00034760;
              piStack_14c = (int *)0x0;
              prVar37 = prStack_c4;
              bVar5 = bVar30;
            }
          }
LAB_00034748:
          prStack_c4 = prVar37;
          if (piStack_14c != (int *)0x0) {
            *piStack_14c = (int)(puStack_140 + *piStack_14c);
          }
        }
        else {
          pIVar24 = &(prVar44->nodes).nelem;
          nodes_1 = &(prVar44->nodes).elems;
          prStack_c4 = (re_dfastate_t *)
                       check_subexp_matching_top
                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);
          err = (reg_errcode_t)prStack_c4;
          if (prStack_c4 == (re_dfastate_t *)0x0) {
            if ((prVar44->field_0x34 & 2) == 0) {
              bVar4 = false;
            }
            else {
              prStack_c4 = (re_dfastate_t *)
                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);
              err = (reg_errcode_t)prStack_c4;
              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;
              bVar4 = false;
            }
            goto LAB_000343c4;
          }
        }
LAB_00034760:
        pprVar22 = mctx.state_log;
        puVar7 = PTR_LAB_0005332c;
        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {
          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;
          mctx.match_last = (Idx)prStack_c4;
          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {
            if (!bVar1) {
              iVar33 = prVar46->nbackref;
              goto joined_r0x00034fc8;
            }
            mctx.last_node =
                 check_halt_state_context
                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,
                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);
            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;
          }
          else {
            iVar33 = prVar46->nbackref;
joined_r0x00034fc8:
            if (iVar33 != 0) {
              mctx.last_node =
                   check_halt_state_context
                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,
                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);
LAB_000347ec:
              pIVar24 = (Idx *)mctx.last_node;
              prVar3 = mctx.dfa;
              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {
                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);
                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);
                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;
                if (prVar3->nbackref == 0) {
                  dest_nodes.nelem = 0;
                  dest_nodes.alloc = (Idx)pprVar22;
                  dest_nodes.elems = pIVar24;
                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);
                  (*(code *)PTR_free_000534fc)(0);
                  if (rStack_154 == _REG_NOERROR) {
                    if (*pprVar22 == (re_dfastate_t *)0x0) {
                      (*(code *)PTR_free_000534fc)(pprVar22);
                      goto LAB_00034950;
                    }
LAB_00035074:
                    (*(code *)PTR_free_000534fc)(mctx.state_log);
                    mctx.match_last = (Idx)prStack_c4;
                    mctx.last_node = (Idx)pIVar24;
                    mctx.state_log = pprVar22;
                    goto LAB_00034e5c;
                  }
LAB_00035394:
                  pprStack_15c = (re_dfastate_t **)0x0;
                }
                else {
                  pprStack_15c = (re_dfastate_t **)
                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);
                  if (pprStack_15c == (re_dfastate_t **)0x0) {
                    (*(code *)PTR_free_000534fc)(pprVar22);
                    rStack_154 = _REG_ESPACE;
                    pprVar22 = mctx.state_log;
                    goto LAB_0003423c;
                  }
                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);
                  while( true ) {
                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);
                    dest_nodes.alloc = (Idx)pprVar22;
                    dest_nodes.nelem = (Idx)pprStack_15c;
                    dest_nodes.elems = pIVar24;
                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);
                    (*(code *)PTR_free_000534fc)(0);
                    if (rStack_154 != _REG_NOERROR) break;
                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||
                       (*pprStack_15c != (re_dfastate_t *)0x0)) {
                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);
                      (*(code *)PTR_free_000534fc)(pprStack_15c);
                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;
                      goto LAB_00035074;
                    }
                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;
                    prStack_160 = prStack_c4;
                    while( true ) {
                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;
                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {
                        (*(code *)PTR_free_000534fc)(pprVar22);
                        (*(code *)PTR_free_000534fc)(pprStack_15c);
                        goto LAB_00034950;
                      }
                      prVar37 = pprVar23[-1];
                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))
                      break;
                      pprVar23 = pprVar23 + -1;
                      prStack_160 = prStack_c4;
                    }
                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))
                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems
                                                ,prStack_c4);
                  }
                }
                (*(code *)PTR_free_000534fc)(pprVar22);
                (*(code *)PTR_free_000534fc)(pprStack_15c);
                pprVar22 = mctx.state_log;
                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;
                goto LAB_0003423c;
              }
              rStack_154 = _REG_ESPACE;
              goto LAB_0003423c;
            }
          }
LAB_00034e5c:
          pprVar22 = mctx.state_log;
          rStack_154 = rVar18;
          if (nmatch == 0) goto LAB_0003423c;
          IVar21 = (((re_match_context_t *)preg)->input).valid_len;
          if (bVar1) {
            prVar28 = pmatch + 1;
            do {
              prVar28->rm_eo = -1;
              prVar27 = prVar28 + 1;
              prVar28->rm_so = -1;
              prVar28 = prVar27;
            } while (pmatch + nmatch != prVar27);
            pmatch->rm_so = 0;
            pmatch->rm_eo = mctx.match_last;
            if ((IVar21 & 0x8000000) == 0) {
              if ((char)prVar46->field_0x58 < '\0') {
                bVar30 = 0 < prVar46->nbackref;
              }
              else {
                bVar30 = false;
              }
              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);
              pprVar22 = mctx.state_log;
              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;
              iVar39 = pmatch->rm_so;
            }
            else {
LAB_00034eb4:
              iVar39 = 0;
            }
            uVar12 = 0;
            prVar28 = pmatch;
            while( true ) {
              if (iVar39 != -1) {
                iVar36 = prVar28->rm_eo;
                iVar42 = iVar39;
                iVar33 = iVar36;
                if (mctx.input.offsets_needed != '\0') {
                  iVar42 = mctx.input.valid_raw_len;
                  if (mctx.input.valid_len != iVar39) {
                    iVar42 = mctx.input.offsets[iVar39];
                  }
                  prVar28->rm_so = iVar42;
                  iVar33 = mctx.input.valid_raw_len;
                  if (mctx.input.valid_len != iVar36) {
                    iVar33 = mctx.input.offsets[iVar36];
                  }
                }
                prVar28->rm_so = match_first + iVar42;
                prVar28->rm_eo = match_first + iVar33;
              }
              uVar12 = uVar12 + 1;
              prVar28 = prVar28 + 1;
              if (uVar12 == nmatch) break;
              iVar39 = prVar28->rm_so;
            }
            if (0 < iStack_f0) {
              prVar28 = pmatch + nmatch;
              do {
                prVar28->rm_so = -1;
                prVar27 = prVar28 + 1;
                prVar28->rm_eo = -1;
                prVar28 = prVar27;
              } while (pmatch + iStack_f0 + nmatch != prVar27);
            }
            piVar16 = prVar46->subexp_map;
            pprVar22 = mctx.state_log;
            rStack_154 = rVar18;
            if (piVar16 != (int *)0x0) {
              prVar28 = pmatch;
              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {
                if (*piVar16 != iVar39) {
                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;
                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;
                }
                piVar16 = piVar16 + 1;
                prVar28 = prVar28 + 1;
              }
            }
            goto LAB_0003423c;
          }
          pmatch->rm_so = 0;
          pmatch->rm_eo = mctx.match_last;
          goto LAB_00034eb4;
        }
LAB_00034950:
        match_ctx_clean(&mctx);
        start = match_first;
      }
      start = start + iVar39;
      match_first = start;
      if ((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)) break;
    } while( true );
  }
LAB_000345e4:
  rStack_154 = _REG_NOMATCH;
  pprVar22 = mctx.state_log;
  goto LAB_0003423c;
code_r0x000350f8:
  rStack_154 = err;
  pprVar22 = mctx.state_log;
  if (err == _REG_ESPACE) goto LAB_0003423c;
  uVar38 = 0x431;
LAB_00035118:
  (*(code *)PTR___assert_fail_00053378)
            (PTR_DAT_00053118 + 0x2114,PTR_DAT_00053118 + 0x2098,uVar38,PTR_DAT_00053118 + 0x2620);
  uVar12 = extraout_v1;
  preg = (regex_t *)&mctx;
LAB_00035138:
  uVar35 = 8;
  goto LAB_0003412c;
}



uint FUN_00033d58(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,
                 uint param_7,uint *param_8,uint param_9)

{
  byte bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  undefined *puVar6;
  undefined *puVar7;
  undefined *puVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  uint **ppuVar13;
  int *piVar14;
  uint uVar15;
  code *pcVar16;
  code *pcVar17;
  int *piVar18;
  int *piVar19;
  char cVar26;
  code *pcVar20;
  code *pcVar21;
  uint uVar22;
  undefined4 uVar23;
  uint *puVar24;
  uint *puVar25;
  bool bVar27;
  uint extraout_v1;
  code *pcVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  int *piVar32;
  int iVar33;
  int iVar34;
  uint uVar35;
  int iVar36;
  int *piVar37;
  int iVar38;
  uint local_160;
  int *local_15c;
  uint local_154;
  char *local_150;
  uint **local_14c;
  uint local_140;
  int local_f0;
  uint *local_dc;
  uint local_d8;
  uint local_d4;
  int *local_d0;
  int *local_cc;
  int local_c8;
  uint local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  int local_b4;
  int local_b0;
  int *local_ac;
  int local_a8;
  int local_9c;
  uint local_98;
  uint local_94;
  uint local_90;
  uint local_8c;
  uint local_88;
  uint local_84;
  uint local_80;
  uint local_7c;
  undefined4 local_78;
  int local_74;
  int *local_70;
  byte local_6c;
  byte local_6b;
  byte local_6a;
  byte local_69;
  char local_68;
  byte local_67;
  byte local_66;
  int local_64;
  int *local_60;
  uint local_5c;
  uint local_58;
  int local_54;
  int *local_50;
  int local_4c;
  undefined4 local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_34;
  int local_30;
  int local_2c;
  
  puVar8 = PTR___stack_chk_guard_000534f0;
  local_2c = *(int *)PTR___stack_chk_guard_000534f0;
  piVar37 = (int *)*param_1;
  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);
  local_150 = (char *)param_1[4];
  if (local_150 != (char *)0x0) {
    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {
      local_150 = (char *)0x0;
    }
    else if ((char)*(byte *)(param_1 + 7) < '\0') {
      local_150 = (char *)0x0;
    }
  }
  uVar9 = param_1[6];
  if (uVar9 < param_7) {
    local_f0 = (param_7 - 1) - uVar9;
    param_7 = param_7 + (uVar9 - (param_7 - 1));
    iVar10 = param_1[2];
  }
  else {
    iVar10 = param_1[2];
    local_f0 = 0;
  }
  local_60 = piVar37;
  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||
     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {
LAB_000341d0:
    local_154 = 1;
    goto LAB_000341d4;
  }
  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&
     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {
    if (param_4 == (uint *)0x0) {
      param_5 = (uint *)0x0;
    }
    else {
      if (param_5 != (uint *)0x0) goto LAB_000341d0;
      param_4 = (uint *)0x0;
    }
  }
  if (param_7 == 0) {
    bVar27 = piVar37[0x13] != 0;
  }
  else {
    bVar27 = true;
  }
  local_64 = piVar37[0x17];
  iVar33 = param_1[5];
  iVar10 = piVar37[2] + 1;
  if (piVar37[2] + 1 < local_64) {
    iVar10 = local_64;
  }
  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);
  local_69 = 1;
  if (iVar33 == 0) {
    local_69 = local_6c >> 7;
  }
  iVar34 = param_3 + 1;
  if (iVar10 <= (int)(param_3 + 1)) {
    iVar34 = iVar10;
  }
  local_6c = local_6c >> 7;
  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);
  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);
  local_b4 = param_2;
  local_88 = param_3;
  local_84 = param_3;
  local_80 = param_3;
  local_7c = param_3;
  local_74 = iVar33;
  local_154 = FUN_00029938(&local_b4,iVar34);
  piVar18 = local_50;
  if (local_154 != 0) {
LAB_0003423c:
    while( true ) {
      (*(code *)PTR_free_000534fc)(piVar18);
      if (piVar37[0x13] != 0) {
LAB_00034290:
        FUN_0002b440(&local_b4);
        (*(code *)PTR_free_000534fc)(local_30);
        (*(code *)PTR_free_000534fc)(local_40);
      }
LAB_00034250:
      FUN_0002b3d0(&local_b4);
LAB_000341d4:
      if (local_2c == *(int *)puVar8) break;
      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();
      piVar18 = local_50;
    }
    return local_154;
  }
  local_70 = piVar37 + 0x18;
  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);
  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {
    local_98 = 0;
  }
  local_7c = param_6;
  local_80 = param_6;
  local_94 = local_98;
  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);
  iVar10 = piVar37[0x13];
  iVar34 = iVar10 * 2;
  local_5c = param_9;
  local_58 = 0xffffffff;
  if (0 < iVar34) {
    if (0xccccccc < iVar34) goto LAB_00034274;
    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);
    local_40 = iVar11;
    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);
    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;
  }
  local_44 = iVar34;
  local_34 = iVar34;
  bVar2 = 1 < param_7;
  local_3c = 1;
  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {
    if (0x3ffffffe < local_90) {
LAB_00034274:
      local_154 = 0xc;
      (*(code *)PTR_free_000534fc)(local_50);
      if (piVar37[0x13] == 0) goto LAB_00034250;
      goto LAB_00034290;
    }
    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);
    piVar18 = local_50;
    if (local_50 == (int *)0x0) {
LAB_00034230:
      local_154 = 0xc;
      goto LAB_0003423c;
    }
  }
  else {
    local_50 = (int *)0x0;
  }
  iVar34 = piVar37[0x17];
  iVar10 = -1;
  local_dc = param_4;
  local_78 = 6;
  if ((param_9 & 1) != 0) {
    local_78 = 4;
  }
  uVar9 = (uint)((int)param_5 < (int)param_4);
  puVar25 = param_5;
  if (uVar9 == 0) {
    iVar10 = 1;
    puVar25 = param_4;
  }
  if ((int)param_5 <= (int)param_4) {
    param_5 = param_4;
  }
  if (local_150 == (char *)0x0) goto LAB_00035138;
  uVar12 = 4;
  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {
    uVar12 = 0;
  }
  uVar30 = 2;
  if (uVar9 != 0) {
    uVar30 = 0;
  }
  uVar30 = iVar33 != 0 | uVar12 | uVar30;
LAB_0003412c:
  puVar6 = PTR_LAB_0005332c;
  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {
    ppuVar13 = &local_dc;
    if (uVar9 != 0) {
      ppuVar13 = (uint **)0x0;
    }
    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);
    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);
    iVar33 = local_9c;
    do {
      if (uVar30 - 4 < 5) {
                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar9 = (*(code *)(&_gp_1 + *piVar14))();
        return uVar9;
      }
      local_9c = iVar33;
      while( true ) {
        uVar9 = (int)param_4 - iVar33;
        if (local_94 <= uVar9) {
          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);
          piVar18 = local_50;
          if (local_154 != 0) goto LAB_0003423c;
          uVar9 = (int)param_4 - local_9c;
          iVar33 = local_9c;
        }
        if ((int)param_4 < (int)param_3) {
          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];
        }
        else {
          cVar26 = *local_150;
        }
        if (cVar26 != '\0') break;
        param_4 = (uint *)((int)param_4 + iVar10);
        local_dc = param_4;
        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;
      }
      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);
      piVar32 = local_60;
      uVar9 = local_8c;
      piVar18 = local_50;
      local_154 = uVar12;
      if (uVar12 != 0) goto LAB_0003423c;
      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {
        local_3c = 0;
        local_48 = 0;
        iVar33 = local_60[9];
        local_140 = local_8c;
        local_4c = 0;
        local_d8 = 0;
        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {
          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);
          if ((uVar15 & 1) == 0) {
            if (uVar15 == 0) goto LAB_000343a0;
            if ((uVar15 & 6) == 6) {
              iVar33 = piVar32[0xc];
            }
            else if ((uVar15 & 2) == 0) {
              if ((uVar15 & 4) == 0) goto LAB_000343a0;
              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);
            }
            else {
              iVar33 = piVar32[0xb];
            }
          }
          else {
            iVar33 = piVar32[10];
          }
          if (iVar33 == 0) goto code_r0x000350f8;
        }
LAB_000343a0:
        bVar4 = ppuVar13 != (uint **)0x0;
        if ((local_50 == (int *)0x0) ||
           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {
LAB_000343c4:
          if (*(int *)(iVar33 + 0x34) << 4 < 0) {
            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||
               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),
               iVar11 != 0)) {
              uVar15 = uVar9;
              bVar5 = bVar27;
              if (!bVar27) goto LAB_00034760;
            }
            else {
              uVar9 = 0xffffffff;
              bVar5 = false;
            }
          }
          else {
            uVar9 = 0xffffffff;
            bVar5 = false;
          }
          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);
          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);
          uVar15 = local_8c;
          local_14c = ppuVar13;
          while ((int)uVar15 < (int)local_7c) {
            uVar35 = uVar15 + 1;
            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&
               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {
              iVar11 = *(int *)(iVar33 + 0x34);
              piVar18 = local_60;
            }
            else {
              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);
              if (local_d8 != 0) {
                if (local_d8 == 0xc) goto LAB_00034274;
                uVar23 = 0x468;
                goto LAB_00035118;
              }
              iVar11 = *(int *)(iVar33 + 0x34);
              uVar15 = local_8c;
              piVar18 = local_60;
            }
            local_60 = piVar18;
            if (iVar11 << 5 < 0) {
              iVar11 = *(int *)(iVar33 + 8);
              if (0 < iVar11) {
                param_4 = (uint *)0x0;
                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);
                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);
                do {
                  iVar36 = *piVar18;
                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);
                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);
                  if ((uVar31 & 0x800) != 0) {
                    if ((uVar31 & 0xffc000) != 0) {
                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);
                      uVar31 = (uVar31 << 8) >> 0x16;
                      if ((uVar31 & 4) == 0) {
                        uVar29 = uVar22 & 1;
                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;
                      }
                      else {
                        uVar29 = uVar31 & 8;
                        if ((uVar22 & 1) == 0) goto LAB_00034cec;
joined_r0x00034b90:
                        if (uVar29 != 0) goto LAB_00034cec;
                      }
                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||
                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;
                    }
                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);
                    if (iVar11 != 0) {
                      if (local_3c < iVar11) {
                        local_3c = iVar11;
                      }
                      iVar11 = iVar11 + local_8c;
                      local_d4 = (*pcVar20)(&local_b4,iVar11);
                      uVar15 = local_d4;
                      if (local_d4 != 0) goto joined_r0x00034dec;
                      piVar19 = local_50 + iVar11;
                      iVar36 = *piVar19;
                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);
                      if (iVar36 == 0) {
                        local_d0 = (int *)*piVar32;
                        local_cc = (int *)piVar32[1];
                        local_c8 = piVar32[2];
                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);
                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);
                        *piVar19 = iVar36;
                      }
                      else {
                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));
                        uVar15 = local_d4;
                        if (local_d4 != 0) goto joined_r0x00034dec;
                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);
                        piVar32 = local_50 + iVar11;
                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);
                        puVar7 = PTR_free_000534fc;
                        *piVar32 = iVar36;
                        (*(code *)puVar7)(local_c8);
                      }
                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))
                      goto joined_r0x00034dec;
                    }
                    iVar11 = *(int *)(iVar33 + 8);
                    uVar15 = local_8c;
                  }
LAB_00034cec:
                  param_4 = (uint *)((int)param_4 + 1);
                } while ((int)param_4 < iVar11);
              }
              local_d8 = 0;
            }
            local_8c = uVar15 + 1;
            uVar15 = (uint)*(byte *)(local_b0 + uVar15);
            do {
              if (*(int *)(iVar33 + 0x2c) != 0) {
                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);
LAB_0003446c:
                if (local_50 != (int *)0x0) goto LAB_00034478;
                goto LAB_00034498;
              }
              iVar11 = *(int *)(iVar33 + 0x30);
              if (iVar11 != 0) {
                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);
                if ((uVar31 & 1) == 0) {
                  iVar11 = *(int *)(iVar11 + uVar15 * 4);
                }
                else {
                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);
                }
                goto LAB_0003446c;
              }
              iVar11 = (*pcVar28)(local_60,iVar33);
            } while (iVar11 != 0);
            local_d8 = 0xc;
            uVar15 = local_d8;
joined_r0x00034dec:
            local_d8 = uVar15;
            if (local_50 == (int *)0x0) {
              piVar18 = (int *)0x0;
              goto LAB_00034230;
            }
            iVar11 = 0;
LAB_00034478:
            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);
LAB_00034498:
            uVar15 = local_8c;
            if (iVar11 == 0) {
              piVar18 = local_50;
              if (local_d8 != 0) goto LAB_00034230;
              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;
              param_4 = &local_d8;
              do {
                bVar3 = false;
                piVar18 = local_50 + local_8c;
                uVar15 = local_8c;
                do {
                  uVar31 = uVar15 + 1;
                  piVar18 = piVar18 + 1;
                  if (local_4c < (int)uVar31) {
                    if (bVar3) {
                      local_8c = uVar15;
                    }
                    goto LAB_00034748;
                  }
                  bVar3 = true;
                  uVar15 = uVar31;
                } while (*piVar18 == 0);
                local_8c = uVar31;
                iVar11 = FUN_00033724(param_4,&local_b4,0);
                uVar15 = local_8c;
                if (local_d8 != 0) {
                  if (iVar11 == 0) goto LAB_00034748;
                  break;
                }
              } while (iVar11 == 0);
            }
            uVar31 = local_140;
            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {
              bVar4 = false;
              uVar31 = local_140;
            }
            local_140 = uVar31;
            iVar33 = iVar11;
            local_8c = uVar15;
            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&
               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||
                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),
                iVar11 != 0)))) {
              if (!bVar27) goto LAB_00034760;
              local_14c = (uint **)0x0;
              uVar9 = uVar15;
              bVar5 = bVar27;
            }
          }
LAB_00034748:
          uVar15 = uVar9;
          if (local_14c != (uint **)0x0) {
            *local_14c = (uint *)((int)*local_14c + local_140);
          }
        }
        else {
          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);
          local_d8 = uVar15;
          if (uVar15 == 0) {
            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {
              bVar4 = false;
            }
            else {
              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);
              local_d8 = uVar15;
              if (uVar15 != 0) goto LAB_00034760;
              bVar4 = false;
            }
            goto LAB_000343c4;
          }
        }
LAB_00034760:
        piVar18 = local_50;
        puVar7 = PTR_LAB_0005332c;
        if (uVar15 != 0xffffffff) {
          if (uVar15 == 0xfffffffe) goto LAB_00034274;
          local_58 = uVar15;
          if ((*(byte *)(param_1 + 7) & 8) == 0) {
            if (!bVar2) {
              iVar33 = piVar37[0x13];
              goto joined_r0x00034fc8;
            }
            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),
                                    local_50[uVar15] + 0xc,uVar15);
            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;
          }
          else {
            iVar33 = piVar37[0x13];
joined_r0x00034fc8:
            if (iVar33 != 0) {
              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),
                                      local_50[uVar15] + 0xc,uVar15);
LAB_000347ec:
              iVar33 = local_54;
              piVar32 = local_60;
              if (uVar15 < 0x3fffffff) {
                local_160 = uVar15 + 1;
                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);
                if (piVar18 == (int *)0x0) goto LAB_00034274;
                if (piVar32[0x13] == 0) {
                  local_cc = (int *)0x0;
                  local_c0 = 0;
                  local_bc = 0;
                  local_b8 = 0;
                  local_d0 = piVar18;
                  local_c8 = iVar33;
                  local_c4 = uVar15;
                  local_154 = FUN_00033988(&local_b4,&local_d0);
                  (*(code *)PTR_free_000534fc)(local_b8);
                  if (local_154 == 0) {
                    if (*piVar18 == 0) {
                      (*(code *)PTR_free_000534fc)(piVar18);
                      goto LAB_00034950;
                    }
LAB_00035074:
                    (*(code *)PTR_free_000534fc)(local_50);
                    local_58 = uVar15;
                    local_54 = iVar33;
                    local_50 = piVar18;
                    goto LAB_00034e5c;
                  }
LAB_00035394:
                  local_15c = (int *)0x0;
                }
                else {
                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);
                  if (local_15c == (int *)0x0) {
                    (*(code *)PTR_free_000534fc)(piVar18);
                    local_154 = 0xc;
                    piVar18 = local_50;
                    goto LAB_0003423c;
                  }
                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);
                  while( true ) {
                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);
                    local_c0 = 0;
                    local_bc = 0;
                    local_b8 = 0;
                    local_d0 = piVar18;
                    local_cc = local_15c;
                    local_c8 = iVar33;
                    local_c4 = uVar15;
                    local_154 = (*pcVar16)(&local_b4,&local_d0);
                    (*(code *)PTR_free_000534fc)(local_b8);
                    if (local_154 != 0) break;
                    if ((*piVar18 != 0) || (*local_15c != 0)) {
                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);
                      (*(code *)PTR_free_000534fc)(local_15c);
                      if (local_154 != 0) goto LAB_00035394;
                      goto LAB_00035074;
                    }
                    piVar19 = local_50 + (local_160 - 1);
                    local_160 = uVar15;
                    while( true ) {
                      uVar15 = local_160 - 1;
                      if (uVar15 == 0xffffffff) {
                        (*(code *)PTR_free_000534fc)(piVar18);
                        (*(code *)PTR_free_000534fc)(local_15c);
                        goto LAB_00034950;
                      }
                      iVar33 = piVar19[-1];
                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;
                      piVar19 = piVar19 + -1;
                      local_160 = uVar15;
                    }
                    iVar33 = (*(code *)(puVar7 + -0x1be4))
                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);
                  }
                }
                (*(code *)PTR_free_000534fc)(piVar18);
                (*(code *)PTR_free_000534fc)(local_15c);
                piVar18 = local_50;
                if (local_154 == 1) goto LAB_00034950;
                goto LAB_0003423c;
              }
              local_154 = 0xc;
              goto LAB_0003423c;
            }
          }
LAB_00034e5c:
          piVar18 = local_50;
          local_154 = uVar12;
          if (param_7 == 0) goto LAB_0003423c;
          bVar1 = *(byte *)(param_1 + 7);
          if (bVar2) {
            puVar25 = param_8 + 2;
            do {
              puVar25[1] = 0xffffffff;
              puVar24 = puVar25 + 2;
              *puVar25 = 0xffffffff;
              puVar25 = puVar24;
            } while (param_8 + param_7 * 2 != puVar24);
            *param_8 = 0;
            param_8[1] = local_58;
            if ((bVar1 & 8) == 0) {
              if (*(char *)(piVar37 + 0x16) < '\0') {
                bVar27 = 0 < piVar37[0x13];
              }
              else {
                bVar27 = false;
              }
              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);
              piVar18 = local_50;
              if (local_154 != 0) goto LAB_0003423c;
              uVar9 = *param_8;
            }
            else {
LAB_00034eb4:
              uVar9 = 0;
            }
            uVar30 = 0;
            puVar25 = param_8;
            while( true ) {
              if (uVar9 != 0xffffffff) {
                uVar31 = puVar25[1];
                uVar15 = uVar9;
                uVar35 = uVar31;
                if (local_68 != '\0') {
                  uVar15 = local_94;
                  if (local_98 != uVar9) {
                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);
                  }
                  *puVar25 = uVar15;
                  uVar35 = local_94;
                  if (local_98 != uVar31) {
                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);
                  }
                }
                *puVar25 = (int)local_dc + uVar15;
                puVar25[1] = (int)local_dc + uVar35;
              }
              uVar30 = uVar30 + 1;
              puVar25 = puVar25 + 2;
              if (uVar30 == param_7) break;
              uVar9 = *puVar25;
            }
            if (0 < local_f0) {
              puVar25 = param_8 + param_7 * 2;
              do {
                *puVar25 = 0xffffffff;
                puVar24 = puVar25 + 2;
                puVar25[1] = 0xffffffff;
                puVar25 = puVar24;
              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);
            }
            piVar14 = (int *)piVar37[0x21];
            piVar18 = local_50;
            local_154 = uVar12;
            if (piVar14 != (int *)0x0) {
              puVar25 = param_8;
              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {
                if (*piVar14 != iVar10) {
                  puVar25[2] = param_8[(*piVar14 + 1) * 2];
                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];
                }
                piVar14 = piVar14 + 1;
                puVar25 = puVar25 + 2;
              }
            }
            goto LAB_0003423c;
          }
          *param_8 = 0;
          param_8[1] = local_58;
          goto LAB_00034eb4;
        }
LAB_00034950:
        FUN_0002b440(&local_b4);
        param_4 = local_dc;
      }
      param_4 = (uint *)((int)param_4 + iVar10);
      local_dc = param_4;
      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;
    } while( true );
  }
LAB_000345e4:
  local_154 = 1;
  piVar18 = local_50;
  goto LAB_0003423c;
code_r0x000350f8:
  local_154 = local_d8;
  piVar18 = local_50;
  if (local_d8 == 0xc) goto LAB_0003423c;
  uVar23 = 0x431;
LAB_00035118:
  (*(code *)PTR___assert_fail_00053378)
            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620
            );
  uVar9 = extraout_v1;
  param_1 = &local_b4;
LAB_00035138:
  uVar30 = 8;
  goto LAB_0003412c;
}


lui gp,0x2
addiu gp,gp,0x7388
addu gp,gp,t9
lw v0,-0x7bf0(gp)
addiu sp,sp,-0x188
lw t9,-0x7cb0(gp)
lw v1,0x1a4(sp)
sw v0,0x64(sp)
sw s5,0x174(sp)
addiu s5,sp,0xd4
sw s8,0x180(sp)
or s8,a0,zero
sw a1,0x54(sp)
or a1,zero,zero
sw a2,0x190(sp)
li a2,0x88
sw gp,0x18(sp)
sw s6,0x178(sp)
sw s2,0x168(sp)
or s2,a3,zero
sw s1,0x164(sp)
sw s0,0x160(sp)
sw ra,0x184(sp)
sw s7,0x17c(sp)
sw s4,0x170(sp)
sw s3,0x16c(sp)
sw v1,0x90(sp)
lw v0,0x0(v0)
lw s6,0x0(a0)
or a0,s5,zero
lw s0,0x198(sp)
lw s1,0x19c(sp)
sw v0,0x15c(sp)
jalr t9
_nop
lw a0,0x10(s8)
lw gp,0x18(sp)
sw s6,0x128(sp)
beq a0,zero,0x00033e18
_sw a0,0x38(sp)
lbu v0,0x1c(s8)
andi v1,v0,0x10
beq v1,zero,0x00034218
_nop
beq s2,s0,0x00034218
_srl v0,v0,0x7
movn a0,zero,v0
sw a0,0x38(sp)
lw v0,0x18(s8)
lw v1,0x1a0(sp)
sltu v1,v0,v1
beq v1,zero,0x000341c0
_lw v1,0x1a0(sp)
addiu v1,v1,-0x1
subu a0,v0,v1
subu v0,v1,v0
sw v0,0x98(sp)
lw v0,0x1a0(sp)
addu v0,v0,a0
sw v0,0x1a0(sp)
lw v0,0x8(s8)
beq v0,zero,0x000341d0
_li v0,0x1
lw v0,0x24(s6)
beq v0,zero,0x000341cc
_nop
lw v1,0x28(s6)
beq v1,zero,0x000341cc
_nop
lw a0,0x2c(s6)
beq a0,zero,0x000341cc
_nop
lw a1,0x30(s6)
beq a1,zero,0x000341cc
_nop
lw v0,0x8(v0)
bne v0,zero,0x00033ed0
_lw v0,0x1a0(sp)
lw v0,0x8(v1)
bne v0,zero,0x00033ed0
_lw v0,0x1a0(sp)
lw v0,0x8(a0)
beq v0,zero,0x00033eb8
_nop
lbu v0,0x1c(s8)
andi v0,v0,0x1
bne v0,zero,0x00033ed0
_lw v0,0x1a0(sp)
beq s2,zero,0x000351bc
_nop
bne s0,zero,0x000341d0
_li v0,0x1
or s2,zero,zero
lw v0,0x1a0(sp)
bne v0,zero,0x00034220
_li v0,0x1
lw v0,0x4c(s6)
sltu v0,zero,v0
sw v0,0x24(sp)
lw a2,0x8(s6)
or a0,s5,zero
lw t0,0x5c(s6)
lw v0,0x190(sp)
addiu a3,a2,0x1
lw v1,0xc(s8)
lw t3,0x14(s8)
slt a2,a3,t0
lw t9,-0x7db4(gp)
movn a3,t0,a2
addiu a1,v0,0x1
ext v1,v1,0x16,0x1
lw v0,0x58(s6)
addiu t9,t9,-0x66c8
lw t4,0x54(sp)
or a2,a3,zero
sw t3,0x68(sp)
li a3,0x1
sw t3,0x114(sp)
slt t2,a1,a2
sw t4,0xd4(sp)
movz a3,v1,t3
ext t1,v0,0x1d,0x1
ext v0,v0,0x1c,0x1
movz a1,a2,t2
sb v1,0x11c(sp)
sb a3,0x11f(sp)
sw t0,0x124(sp)
sb t1,0x11d(sp)
sb v0,0x11e(sp)
lw a2,0x190(sp)
sw a2,0x104(sp)
sw a2,0x100(sp)
sw a2,0x10c(sp)
bal 0x00029938
_sw a2,0x108(sp)
lw gp,0x18(sp)
bne v0,zero,0x00035014
_sw v0,0x34(sp)
lw v0,0x58(s6)
addiu a0,s6,0x60
lbu v1,0x11f(sp)
sw a0,0x118(sp)
ext v0,v0,0x1b,0x1
bne v1,zero,0x00033fb0
_sb v0,0x122(sp)
lw v0,0x5c(s6)
lw v1,0x54(sp)
slti v0,v0,0x2
bne v0,zero,0x000346d0
_sw v1,0xd8(sp)
or v1,zero,zero
lw v0,0x1c(s8)
sw s1,0x10c(sp)
sw s1,0x108(sp)
ext v0,v0,0x18,0x1
sw v1,0xf0(sp)
sw v1,0xf4(sp)
sb v0,0x121(sp)
lw a0,0x4c(s6)
lw v0,0x1a8(sp)
sll s1,a0,0x1
sw v0,0x12c(sp)
li v0,-0x1
blez s1,0x0003403c
_sw v0,0x130(sp)
lui v0,0xccc
ori v0,v0,0xcccd
slt v0,s1,v0
beq v0,zero,0x00034270
_sll s3,a0,0x3
lw t9,-0x7c6c(gp)
addu a0,s3,s1
jalr t9
_sll a0,a0,0x2
or a0,s3,zero
lw gp,0x18(sp)
or s3,v0,zero
lw t9,-0x7c6c(gp)
jalr t9
_sw v0,0x148(sp)
lw gp,0x18(sp)
beq s3,zero,0x00034270
_sw v0,0x158(sp)
beq v0,zero,0x00034274
_li v0,0xc
lw v0,0x1a0(sp)
sw s1,0x144(sp)
sw s1,0x154(sp)
sltiu v1,v0,0x2
li v0,0x1
sw v1,0xa0(sp)
bne v1,zero,0x000350d4
_sw v0,0x14c(sp)
lw a0,0xf8(sp)
lui v0,0x3fff
ori v0,v0,0xffff
sltu v0,a0,v0
beq v0,zero,0x00034270
_addiu a0,a0,0x1
lw t9,-0x7c6c(gp)
jalr t9
_sll a0,a0,0x2
lw gp,0x18(sp)
or a0,v0,zero
beq v0,zero,0x00034230
_sw v0,0x138(sp)
lw v1,0x1a8(sp)
li v0,0x4
li a1,0x1
lw t0,0x5c(s6)
li a3,-0x1
sw s2,0xac(sp)
andi a0,v1,0x1
li v1,0x6
sw t0,0x8c(sp)
slt a2,s2,s0
movn v1,v0,a0
or a0,v1,zero
sw a0,0x110(sp)
slt v1,s0,s2
or a0,s0,zero
movz a3,a1,v1
movz a0,s2,v1
movz s0,s2,a2
sw a0,0x60(sp)
sw a3,0x80(sp)
sw s0,0x4c(sp)
lw a0,0x38(sp)
beq a0,zero,0x00035138
_nop
beq t0,a1,0x00034114
_li a0,0x4
lw a0,0xc(s8)
ext a0,a0,0x16,0x1
bne a0,zero,0x00034114
_or a0,zero,zero
lw a0,0x68(sp)
movn v0,zero,a0
or a0,v0,zero
li a1,0x2
lw v0,0x68(sp)
movn a1,zero,v1
sltu v0,zero,v0
or v0,v0,a0
or v0,v0,a1
lw a0,0x60(sp)
slt a0,s2,a0
bne a0,zero,0x000345e4
_nop
lw a0,0x4c(sp)
slt a0,a0,s2
bne a0,zero,0x000345e4
_nop
addiu a0,v0,-0x4
sw s8,0x84(sp)
addiu v0,sp,0xac
sw s6,0x58(sp)
sw a0,0x78(sp)
movn v0,zero,v1
sll v1,a0,0x2
lw a0,-0x7db4(gp)
or a1,v0,zero
sw v0,0x9c(sp)
lw v0,-0x7fc8(gp)
sw a0,0x74(sp)
lw a0,-0x7db4(gp)
addiu v0,v0,0x21d4
addu v0,v0,v1
addiu a0,a0,-0xe80
sw v0,0x88(sp)
sw a0,0xa4(sp)
sltu a0,zero,a1
sw a0,0x94(sp)
lw v0,0x78(sp)
sltiu v0,v0,0x5
beq v0,zero,0x0003499c
_or s8,s5,zero
lw v0,0x88(sp)
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
lw v0,0x8(s8)
bne v0,zero,0x00033e54
_sw zero,0x98(sp)
li v0,0x1
sw v0,0x34(sp)
lw v1,0x64(sp)
lw a0,0x15c(sp)
lw v0,0x34(sp)
lw v1,0x0(v1)
bne a0,v1,0x0003541c
_lw ra,0x184(sp)
lw s8,0x180(sp)
lw s7,0x17c(sp)
lw s6,0x178(sp)
lw s5,0x174(sp)
lw s4,0x170(sp)
lw s3,0x16c(sp)
lw s2,0x168(sp)
lw s1,0x164(sp)
lw s0,0x160(sp)
jr ra
_addiu sp,sp,0x188
b 0x00033e18
_sw zero,0x38(sp)
b 0x00033ee4
_sw v0,0x24(sp)
lw s6,0x58(sp)
or s5,s8,zero
li v0,0xc
sw v0,0x34(sp)
lw t9,-0x7be4(gp)
jalr t9
_nop
lw v0,0x4c(s6)
bne v0,zero,0x00034290
_lw gp,0x18(sp)
lw t9,-0x7db4(gp)
addiu t9,t9,-0x4c30
bal 0x0002b3d0
_or a0,s5,zero
b 0x000341d4
_lw gp,0x18(sp)
lw s6,0x58(sp)
or s5,s8,zero
li v0,0xc
lw t9,-0x7be4(gp)
lw a0,0x138(sp)
jalr t9
_sw v0,0x34(sp)
lw v0,0x4c(s6)
beq v0,zero,0x00034250
_lw gp,0x18(sp)
lw t9,-0x7db4(gp)
addiu t9,t9,-0x4bc0
bal 0x0002b440
_or a0,s5,zero
lw gp,0x18(sp)
lw t9,-0x7be4(gp)
jalr t9
_lw a0,0x158(sp)
lw gp,0x18(sp)
lw t9,-0x7be4(gp)
jalr t9
_lw a0,0x148(sp)
b 0x00034250
_lw gp,0x18(sp)
or a1,s2,zero
lw a2,0x1a8(sp)
addiu t9,v0,-0x1ac4
bal 0x0002e53c
_or a0,s8,zero
lw gp,0x18(sp)
bne v0,zero,0x00035164
_sw v0,0x34(sp)
lw v1,0x8c(sp)
li v0,0x1
beq v1,v0,0x00034328
_lw v0,0xf0(sp)
beq v0,zero,0x0003432c
_lw s0,0x128(sp)
lw v1,0xdc(sp)
li v0,-0x1
lw v1,0x0(v1)
beq v1,v0,0x0003496c
_lw v0,0x80(sp)
lw s0,0x128(sp)
lw v1,0xfc(sp)
sw zero,0x14c(sp)
sw zero,0x140(sp)
lw s4,0x24(s0)
sw v1,0x48(sp)
sw zero,0x13c(sp)
sw zero,0xb0(sp)
lbu v0,0x34(s4)
andi v0,v0,0x1
beq v0,zero,0x0003439c
_lw t9,-0x7db4(gp)
addiu a1,v1,-0x1
lw a2,0x12c(sp)
addiu t9,t9,-0x1ec0
bal 0x0002e140
_or a0,s8,zero
andi v1,v0,0x1
bne v1,zero,0x000350ec
_lw gp,0x18(sp)
beq v0,zero,0x0003439c
_li v1,0x6
andi a0,v0,0x6
beq a0,v1,0x000352d4
_andi v1,v0,0x2
bne v1,zero,0x000351c4
_andi v1,v0,0x4
bne v1,zero,0x000352dc
_lw t9,-0x7db4(gp)
lw v0,0x138(sp)
beq v0,zero,0x000350c8
_lw v1,0x48(sp)
lw a0,0x4c(s0)
lw a1,0x94(sp)
sll v1,v1,0x2
addu v0,v0,v1
sw a1,0x30(sp)
bne a0,zero,0x0003525c
_sw s4,0x0(v0)
lw v0,0x34(s4)
ext v0,v0,0x1b,0x1
bne v0,zero,0x0003518c
_li s5,-0x1
sw zero,0x2c(sp)
lw v0,0x9c(sp)
lw s6,0xfc(sp)
sw v0,0x3c(sp)
lw v0,-0x7db4(gp)
or s7,s6,zero
addiu v0,v0,-0x576c
sw v0,0x7c(sp)
lw v0,-0x7db4(gp)
addiu v0,v0,0x17e0
sw v0,0x50(sp)
lw v0,0x10c(sp)
slt v0,s7,v0
beq v0,zero,0x00034748
_lw v0,0xf8(sp)
addiu s3,s7,0x1
slt v1,s3,v0
beq v1,zero,0x00034aac
_lw v1,0x104(sp)
lw v0,0xf0(sp)
slt v1,s3,v0
beq v1,zero,0x00034dcc
_lw v1,0x104(sp)
lw v0,0x34(s4)
ext v0,v0,0x1a,0x1
bne v0,zero,0x00034ae4
_nop
addiu v0,s7,0x1
sw v0,0xfc(sp)
lw v0,0xd8(sp)
addu t0,v0,s7
lbu s0,0x0(t0)
lw v0,0x2c(s4)
beq v0,zero,0x00034d88
_nop
sll s0,s0,0x2
addu s0,v0,s0
lw s0,0x0(s0)
lw v0,0x138(sp)
beq v0,zero,0x00034498
_nop
lw t9,-0x7db4(gp)
addiu a0,sp,0xb0
or a2,s0,zero
addiu t9,t9,0x3724
bal 0x00033724
_or a1,s8,zero
lw gp,0x18(sp)
or s0,v0,zero
beq s0,zero,0x000346d8
_lw v0,0xb0(sp)
lw v0,0x30(sp)
bne v0,zero,0x00034a90
_nop
lbu v0,0x34(s0)
andi v1,v0,0x8
beq v1,zero,0x00034504
_lw s7,0xfc(sp)
andi v0,v0,0x1
beq v0,zero,0x000344f0
_lw v0,0x24(sp)
lw t9,-0x7db4(gp)
addiu a2,s0,0xc
lw a1,0x8(s0)
or a3,s7,zero
addiu t9,t9,-0x1be4
bal 0x0002e41c
_or a0,s8,zero
beq v0,zero,0x00034504
_lw gp,0x18(sp)
lw v0,0x24(sp)
beq v0,zero,0x000351cc
_lw v0,0x24(sp)
or s5,s7,zero
sw zero,0x3c(sp)
sw v0,0x2c(sp)
b 0x00034400
_or s4,s0,zero
lw s6,0x58(sp)
or s5,s8,zero
li v0,0x1
lw a0,0x138(sp)
b 0x00034238
_sw v0,0x34(sp)
b 0x00033fb4
_lw v1,0x190(sp)
bne v0,zero,0x00034228
_lw a0,0x138(sp)
beq a0,zero,0x00034748
_lw v0,0x2c(sp)
beq v0,zero,0x000346f8
_lw v0,0x24(sp)
beq v0,zero,0x00034748
_nop
lw s1,-0x7db4(gp)
addiu s2,sp,0xb0
addiu s1,s1,0x3724
lw v1,0xfc(sp)
or a1,zero,zero
lw a2,0x13c(sp)
sll v0,v1,0x2
b 0x0003472c
_addu a0,a0,v0
lw a3,0x0(a0)
or v1,v0,zero
bne a3,zero,0x00034a48
_li a1,0x1
addiu v0,v1,0x1
slt a3,a2,v0
beq a3,zero,0x0003471c
_addiu a0,a0,0x4
beq a1,zero,0x00034748
_addiu a0,a0,-0x4
sw v1,0xfc(sp)
lw v1,0x3c(sp)
beq v1,zero,0x00034760
_lw a0,0x48(sp)
lw v0,0x0(v1)
addu v0,v0,a0
sw v0,0x0(v1)
li v0,-0x1
beq s5,v0,0x00034950
_li v0,-0x2
beq s5,v0,0x00034268
_lw v0,0x84(sp)
sw s5,0x130(sp)
lbu v0,0x1c(v0)
andi v0,v0,0x8
bne v0,zero,0x00034e44
_lw v0,0x58(sp)
lw v0,0xa0(sp)
bne v0,zero,0x00034fc0
_lw s0,0x138(sp)
sll v0,s5,0x2
lw v1,-0x7db4(gp)
or a3,s5,zero
or a0,s8,zero
addu v0,s0,v0
addiu s7,v1,-0x1be4
lw v0,0x0(v0)
or t9,s7,zero
addiu a2,v0,0xc
bal 0x0002e41c
_lw a1,0x8(v0)
lw v1,0x58(sp)
or s1,v0,zero
lw gp,0x18(sp)
lb v1,0x58(v1)
bltz v1,0x000347ec
_sw v0,0x134(sp)
lw v0,0x58(sp)
lw v0,0x4c(v0)
beq v0,zero,0x00034e50
_nop
lw s1,0x134(sp)
lui v0,0x3fff
ori v0,v0,0xffff
sltu v0,s5,v0
beq v0,zero,0x000351d4
_lw s6,0x128(sp)
addiu v0,s5,0x1
lw t9,-0x7c6c(gp)
sll s0,v0,0x2
sw v0,0x28(sp)
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
beq v0,zero,0x00034268
_or s2,v0,zero
lw v0,0x4c(s6)
beq v0,zero,0x0003501c
_addiu a1,sp,0xb8
lw t9,-0x7c6c(gp)
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
or s3,v0,zero
beq v0,zero,0x0003539c
_sw v0,0x2c(sp)
lw s0,-0x7db4(gp)
addiu v0,sp,0xc8
addiu s4,sp,0xb8
sw s6,0x40(sp)
sw s7,0x3c(sp)
or s6,s3,zero
addiu s0,s0,0x3988
or s3,s5,zero
sw s0,0x30(sp)
or s5,s1,zero
or s0,v0,zero
lw v0,0x28(sp)
or a1,zero,zero
lw t9,-0x7cb0(gp)
or a0,s6,zero
sll s7,v0,0x2
jalr t9
_or a2,s7,zero
or a0,s8,zero
lw t9,0x30(sp)
or a1,s4,zero
sw s2,0xb8(sp)
sw s6,0xbc(sp)
sw s5,0xc0(sp)
sw s3,0xc4(sp)
sw zero,0x0(s0)
sw zero,0x4(s0)
jalr t9
_sw zero,0x8(s0)
lw gp,0x18(sp)
or s1,v0,zero
lw t9,-0x7be4(gp)
jalr t9
_lw a0,0xd0(sp)
bne s1,zero,0x00035310
_lw gp,0x18(sp)
lw v0,0x0(s2)
bne v0,zero,0x00035350
_lw t9,-0x7db4(gp)
lw v0,0x0(s6)
bne v0,zero,0x00035350
_lw v0,0x138(sp)
addiu a3,s7,-0x4
li t0,-0x1
addiu s3,s3,-0x1
beq s3,t0,0x00034930
_addu v0,v0,a3
lw a2,-0x4(v0)
beq a2,zero,0x00034924
_nop
lbu v1,0x34(a2)
andi v1,v1,0x8
bne v1,zero,0x00034a20
_lw t9,0x3c(sp)
addiu s3,s3,-0x1
bne s3,t0,0x00034908
_addiu v0,v0,-0x4
lw t9,-0x7be4(gp)
jalr t9
_or a0,s2,zero
lw gp,0x18(sp)
lw t9,-0x7be4(gp)
jalr t9
_or a0,s6,zero
lw gp,0x18(sp)
lw t9,-0x7db4(gp)
addiu t9,t9,-0x4bc0
bal 0x0002b440
_or a0,s8,zero
lw gp,0x18(sp)
lw s2,0xac(sp)
lw v0,0x80(sp)
addu s2,s2,v0
lw v0,0x60(sp)
slt v0,s2,v0
bne v0,zero,0x000345dc
_sw s2,0xac(sp)
lw v0,0x4c(sp)
slt v0,v0,s2
bne v0,zero,0x000345dc
_lw v0,0x78(sp)
sltiu v0,v0,0x5
bne v0,zero,0x000341b0
_lw v0,0x88(sp)
lw v0,0x74(sp)
lw a0,0xec(sp)
lw s3,0x38(sp)
addiu s0,v0,-0x1ac4
lw s4,0x80(sp)
lw s5,0x60(sp)
lw s6,0x4c(sp)
b 0x000349f8
_lw s1,0x190(sp)
lw v0,0xd8(sp)
addu v1,v0,v1
lbu v0,0x0(v1)
addu v0,s3,v0
lb v0,0x0(v0)
bne v0,zero,0x000342dc
_lw v0,0x74(sp)
addu s2,s2,s4
slt v0,s2,s5
bne v0,zero,0x000345dc
_sw s2,0xac(sp)
slt v0,s6,s2
bne v0,zero,0x000345dc
_nop
lw v0,0xf4(sp)
subu v1,s2,a0
sltu v0,v1,v0
beq v0,zero,0x000350a4
_lw a2,0x1a8(sp)
slt v0,s2,s1
bne v0,zero,0x000349c0
_or v0,s3,zero
b 0x000349d4
_lb v0,0x0(v0)
lw a1,0x8(a2)
addiu a2,a2,0xc
or a3,s3,zero
jalr t9
_or a0,s8,zero
addiu v1,s3,0x1
lw gp,0x18(sp)
or s5,v0,zero
b 0x00034878
_sw v1,0x28(sp)
or a2,zero,zero
sw v0,0xfc(sp)
or a1,s8,zero
or t9,s1,zero
bal 0x00033724
_or a0,s2,zero
lw v1,0xb0(sp)
bne v1,zero,0x00034a7c
_lw gp,0x18(sp)
bne v0,zero,0x000351b4
_lw a0,0x138(sp)
b 0x00034708
_lw v1,0xfc(sp)
beq v0,zero,0x00034748
_or s0,v0,zero
lw v0,0x30(sp)
beq v0,zero,0x000344ac
_nop
xor s4,s4,s0
movn v0,zero,s4
sw v0,0x30(sp)
lw v0,0x48(sp)
movz v0,s3,s4
b 0x000344ac
_sw v0,0x48(sp)
slt v0,v0,v1
beq v0,zero,0x00034424
_lw v0,0xf0(sp)
lw t9,0x7c(sp)
addiu a1,s7,0x2
jalr t9
_or a0,s8,zero
lw gp,0x18(sp)
bne v0,zero,0x00035174
_sw v0,0xb0(sp)
lw v0,0x34(s4)
ext v0,v0,0x1a,0x1
beq v0,zero,0x00034440
_lw s7,0xfc(sp)
lw a3,0x8(s4)
blez a3,0x00034cfc
_lw s1,0x128(sp)
lw v0,-0x7db4(gp)
or s2,zero,zero
sw s3,0x6c(sp)
or s3,a3,zero
sw s5,0x70(sp)
sw v0,0x5c(sp)
lw v0,-0x7db4(gp)
sw v0,0x40(sp)
lw v0,-0x7db4(gp)
addiu v0,v0,-0x55a0
sw v0,0x44(sp)
lw v0,-0x7db4(gp)
addiu v0,v0,-0x1ec0
sw v0,0x28(sp)
lw v1,0xc(s4)
sll v0,s2,0x2
lw s5,0x0(s1)
addu v0,v1,v0
lw s6,0x0(v0)
sll v0,s6,0x3
addu v0,s5,v0
lw s0,0x4(v0)
andi v0,s0,0x800
beq v0,zero,0x00034ce8
_lui v0,0xff
ori v0,v0,0xc000
and v0,s0,v0
beq v0,zero,0x00034bc4
_lw a2,0x12c(sp)
or a0,s8,zero
lw t9,0x28(sp)
jalr t9
_or a1,s7,zero
ext v1,s0,0xe,0xa
andi a0,v1,0x4
beq a0,zero,0x00034d18
_lw gp,0x18(sp)
andi a0,v0,0x1
beq a0,zero,0x00034ce8
_andi a0,v1,0x8
bne a0,zero,0x00034ce8
_nop
andi a0,v1,0x20
beq a0,zero,0x00034bac
_andi a0,v0,0x2
beq a0,zero,0x00034ce8
_nop
andi v1,v1,0x80
beq v1,zero,0x00034bc8
_lw t9,0x50(sp)
andi v0,v0,0x8
beq v0,zero,0x00034ce8
_nop
lw t9,0x50(sp)
addiu a1,s1,0x80
sw s7,0x10(sp)
or a3,s8,zero
or a2,s6,zero
jalr t9
_or a0,s5,zero
beq v0,zero,0x00034ce0
_lw gp,0x18(sp)
lw a1,0x14c(sp)
or a0,s8,zero
lw s7,0xfc(sp)
lw t9,0x44(sp)
slt v1,a1,v0
movn a1,v0,v1
addu s7,v0,s7
or v1,a1,zero
sw v1,0x14c(sp)
jalr t9
_or a1,s7,zero
lw gp,0x18(sp)
bne v0,zero,0x00034de0
_sw v0,0xb4(sp)
lw v0,0xc(s1)
sll s6,s6,0x2
sll s0,s7,0x2
lw v1,0x18(s1)
addu v0,v0,s6
lw s6,0x138(sp)
lw v0,0x0(v0)
addu s6,s6,s0
sll a2,v0,0x1
lw a0,0x0(s6)
addu a2,a2,v0
sll a2,a2,0x2
beq a0,zero,0x00034d34
_addu a2,v1,a2
lw v0,0x5c(sp)
addiu s6,sp,0xb8
lw a1,0x28(a0)
addiu t9,v0,-0x2ec0
bal 0x0002d140
_or a0,s6,zero
lw gp,0x18(sp)
bne v0,zero,0x00034de0
_sw v0,0xb4(sp)
lw a2,0x12c(sp)
addiu a1,s7,-0x1
lw t9,0x28(sp)
jalr t9
_or a0,s8,zero
addiu a0,sp,0xb4
lw v1,0x40(sp)
or a2,s6,zero
or a3,v0,zero
lw s6,0x138(sp)
or a1,s1,zero
addiu t9,v1,-0x2cc4
bal 0x0002d33c
_addu s6,s6,s0
lw gp,0x18(sp)
lw a0,0xc0(sp)
lw t9,-0x7be4(gp)
jalr t9
_sw v0,0x0(s6)
lw gp,0x18(sp)
lw v1,0x138(sp)
addu s0,v1,s0
lw v0,0x0(s0)
beq v0,zero,0x00034d04
_lw v0,0xb4(sp)
lw s7,0xfc(sp)
lw s3,0x8(s4)
addiu s2,s2,0x1
slt v0,s2,s3
bne v0,zero,0x00034b28
_lw s5,0x70(sp)
lw s3,0x6c(sp)
b 0x00034440
_sw zero,0xb0(sp)
beq v0,zero,0x00034ce4
_lw s7,0xfc(sp)
lw s3,0x6c(sp)
b 0x00034dec
_lw s5,0x70(sp)
andi a0,v1,0x8
beq a0,zero,0x00034b98
_andi a0,v0,0x1
beq a0,zero,0x00034b9c
_andi a0,v1,0x20
b 0x00034cec
_addiu s2,s2,0x1
lw a3,0x0(a2)
addiu a1,s7,-0x1
lw v1,0x4(a2)
or a0,s8,zero
lw v0,0x8(a2)
lw t9,0x28(sp)
lw a2,0x12c(sp)
sw a3,0xb8(sp)
sw v1,0xbc(sp)
jalr t9
_sw v0,0xc0(sp)
addiu a2,sp,0xb8
lw v1,0x40(sp)
addiu a0,sp,0xb4
or a3,v0,zero
addiu t9,v1,-0x2cc4
bal 0x0002d33c
_or a1,s1,zero
lw gp,0x18(sp)
b 0x00034ccc
_sw v0,0x0(s6)
lw s1,0x30(s4)
beq s1,zero,0x00034dfc
_lw t9,-0x7db4(gp)
or a0,s8,zero
lw a1,0xfc(sp)
lw a2,0x12c(sp)
addiu t9,t9,-0x1ec0
bal 0x0002e140
_addiu a1,a1,-0x1
andi v0,v0,0x1
beq v0,zero,0x00034e34
_lw gp,0x18(sp)
addiu v0,s0,0x100
sll v0,v0,0x2
addu v0,s1,v0
b 0x0003446c
_lw s0,0x0(v0)
slt v0,v0,v1
beq v0,zero,0x00034430
_lw t9,0x7c(sp)
b 0x00034ac0
_addiu a1,s7,0x2
lw s3,0x6c(sp)
lw s5,0x70(sp)
lw v1,0x138(sp)
beq v1,zero,0x00034e24
_sw v0,0xb0(sp)
b 0x00034478
_or s0,zero,zero
lw a0,0x128(sp)
lw t9,0xa4(sp)
jalr t9
_or a1,s4,zero
bne v0,zero,0x00034454
_lw gp,0x18(sp)
lw v0,0x138(sp)
li v1,0xc
bne v0,zero,0x00034df4
_sw v1,0xb0(sp)
lw s6,0x58(sp)
or s5,s8,zero
b 0x00034230
_or a0,zero,zero
sll s0,s0,0x2
addu s0,s1,s0
b 0x0003446c
_lw s0,0x0(s0)
lw v0,0x4c(v0)
bne v0,zero,0x00034fd0
_lw s0,0x138(sp)
lw s6,0x58(sp)
or s5,s8,zero
lw s8,0x84(sp)
lw v0,0x1a0(sp)
beq v0,zero,0x00034238
_lw a0,0x138(sp)
lbu v0,0x1c(s8)
andi a1,v0,0x8
lw v0,0xa0(sp)
bne v0,zero,0x0003540c
_lw a2,0x130(sp)
lw v0,0x1a0(sp)
lw v1,0x90(sp)
sll a0,v0,0x3
addiu v0,v1,0x8
addu a0,v1,a0
li v1,-0x1
sw v1,0x4(v0)
addiu v0,v0,0x8
bne a0,v0,0x00034e94
_sw v1,-0x8(v0)
lw v0,0x90(sp)
sw zero,0x0(v0)
beq a1,zero,0x00035218
_sw a2,0x4(v0)
or v1,zero,zero
lbu t0,0x120(sp)
or a0,zero,zero
lw v0,0x90(sp)
li a3,-0x1
lw t1,0xf0(sp)
lw t3,0xe0(sp)
lw t2,0xf4(sp)
lw a2,0xac(sp)
b 0x00034ee4
_lw t4,0x1a0(sp)
lw v1,0x0(v0)
beq v1,a3,0x00034f04
_nop
bne t0,zero,0x000353c4
_lw a1,0x4(v0)
addu v1,a2,v1
addu a1,a2,a1
sw v1,0x0(v0)
sw a1,0x4(v0)
addiu a0,a0,0x1
bne a0,t4,0x00034ee0
_addiu v0,v0,0x8
lw v0,0x98(sp)
blez v0,0x00034f4c
_lw v1,0x1a0(sp)
lw v0,0x98(sp)
addu a0,v0,v1
sll v0,v1,0x3
lw v1,0x90(sp)
sll a0,a0,0x3
addu v0,v1,v0
addu a0,v1,a0
li v1,-0x1
sw v1,0x0(v0)
addiu v0,v0,0x8
bne a0,v0,0x00034f3c
_sw v1,-0x4(v0)
lw a1,0x84(s6)
beq a1,zero,0x00034238
_lw a0,0x138(sp)
lw t0,0x90(sp)
or v1,zero,zero
lw v0,0x1a0(sp)
addiu a2,t0,0x8
b 0x00034fb0
_addiu a3,v0,-0x1
lw v0,0x0(a1)
beq v0,v1,0x00034fa4
_addiu v0,v0,0x1
sll v0,v0,0x3
addu v0,t0,v0
lw v0,0x0(v0)
sw v0,0x0(a2)
lw v0,0x0(a1)
addiu v0,v0,0x1
sll v0,v0,0x3
addu v0,t0,v0
lw v0,0x4(v0)
sw v0,0x4(a2)
addiu v1,v1,0x1
addiu a2,a2,0x8
addiu a1,a1,0x4
bne v1,a3,0x00034f70
_lw t9,-0x7be4(gp)
b 0x0003423c
_nop
lw s6,0x58(sp)
lw v0,0x4c(s6)
beq v0,zero,0x00034e54
_nop
sll v0,s5,0x2
lw v1,-0x7db4(gp)
or a3,s5,zero
or a0,s8,zero
addu v0,s0,v0
addiu s7,v1,-0x1be4
lw v0,0x0(v0)
or t9,s7,zero
addiu a2,v0,0xc
bal 0x0002e41c
_lw a1,0x8(v0)
lw gp,0x18(sp)
b 0x000347e8
_sw v0,0x134(sp)
lw s6,0x58(sp)
or s5,s8,zero
sw v0,0x34(sp)
b 0x00034238
_lw a0,0x138(sp)
lw s0,-0x7db4(gp)
or a0,s8,zero
sw s2,0xb8(sp)
sw s1,0xc0(sp)
addiu s0,s0,0x3988
sw s5,0xc4(sp)
sw zero,0xbc(sp)
or t9,s0,zero
sw zero,0xc8(sp)
sw zero,0xcc(sp)
bal 0x00033988
_sw zero,0xd0(sp)
lw gp,0x18(sp)
or s0,v0,zero
lw t9,-0x7be4(gp)
jalr t9
_lw a0,0xd0(sp)
bne s0,zero,0x00035394
_lw gp,0x18(sp)
lw v0,0x0(s2)
beq v0,zero,0x00035300
_lw t9,-0x7be4(gp)
lw t9,-0x7be4(gp)
or s4,s5,zero
lw a0,0x138(sp)
or s5,s8,zero
lw s6,0x58(sp)
jalr t9
_lw s8,0x84(sp)
lw gp,0x18(sp)
sw s2,0x138(sp)
sw s1,0x134(sp)
b 0x00034e5c
_sw s4,0x130(sp)
or a1,s2,zero
or t9,s0,zero
jalr t9
_or a0,s8,zero
bne v0,zero,0x00035008
_lw gp,0x18(sp)
lw a0,0xec(sp)
b 0x00034a0c
_subu v1,s2,a0
lw v0,0x94(sp)
b 0x000343c4
_sw v0,0x30(sp)
lbu v0,0x58(s6)
andi v0,v0,0x40
bne v0,zero,0x00034060
_lw a0,0xf8(sp)
b 0x00034090
_sw zero,0x138(sp)
lw s4,0x28(s0)
bne s4,zero,0x000343a0
_lw v0,0x138(sp)
lw v0,0xb0(sp)
lw s6,0x58(sp)
or v1,v0,zero
sw v0,0x34(sp)
li v0,0xc
beq v1,v0,0x00035014
_or s5,s8,zero
li a2,0x431
lw a3,-0x7fc8(gp)
lw a1,-0x7fc8(gp)
lw a0,-0x7fc8(gp)
lw t9,-0x7d68(gp)
addiu a3,a3,0x2620
addiu a1,a1,0x2098
jalr t9
_addiu a0,a0,0x2114
b 0x0003412c
_li v0,0x8
lw s6,0x58(sp)
or s5,s8,zero
b 0x00034238
_lw a0,0x138(sp)
li v1,0xc
lw s6,0x58(sp)
beq v0,v1,0x00034270
_or s5,s8,zero
b 0x00035118
_li a2,0x468
lbu v0,0x34(s4)
andi v0,v0,0x1
bne v0,zero,0x000351ec
_lw t9,-0x7db4(gp)
lw v0,0x24(sp)
beq v0,zero,0x00034760
_lw s5,0x48(sp)
lw v0,0x24(sp)
b 0x000343d8
_sw v0,0x2c(sp)
b 0x000344a0
_or s0,v0,zero
b 0x00033ecc
_or s0,zero,zero
b 0x000350f0
_lw s4,0x2c(s0)
b 0x00034760
_or s5,s7,zero
li v0,0xc
lw s6,0x58(sp)
or s5,s8,zero
or a0,s0,zero
b 0x00034238
_sw v0,0x34(sp)
addiu a2,s4,0xc
lw a1,0x8(s4)
or a0,s8,zero
addiu t9,t9,-0x1be4
bal 0x0002e41c
_lw a3,0x48(sp)
lw gp,0x18(sp)
bne v0,zero,0x0003519c
_sw v0,0x2c(sp)
b 0x000343d8
_li s5,-0x1
lb v0,0x58(s6)
bltz v0,0x00035400
_nop
or v0,zero,zero
lw t9,-0x7db4(gp)
or a1,s5,zero
lw s0,0x90(sp)
or a0,s8,zero
lw a2,0x1a0(sp)
addiu t9,t9,0x2290
sw v0,0x10(sp)
bal 0x00032290
_or a3,s0,zero
bne v0,zero,0x00035428
_lw gp,0x18(sp)
b 0x00034eb8
_lw v1,0x0(s0)
lw t9,-0x7db4(gp)
addiu s0,s4,0x8
addiu s1,s4,0xc
or a3,zero,zero
addiu t9,t9,-0x204c
or a2,s1,zero
or a1,s0,zero
bal 0x0002dfb4
_or a0,s8,zero
lw gp,0x18(sp)
or s5,v0,zero
bne v0,zero,0x00034760
_sw v0,0xb0(sp)
lbu v0,0x34(s4)
andi v0,v0,0x2
bne v0,zero,0x000352a8
_lw t9,-0x7db4(gp)
b 0x000343c4
_sw zero,0x30(sp)
or a2,s1,zero
or a1,s0,zero
addiu t9,t9,0x2d38
bal 0x00032d38
_or a0,s8,zero
lw gp,0x18(sp)
or s5,v0,zero
bne v0,zero,0x00034760
_sw v0,0xb0(sp)
b 0x000343c4
_sw zero,0x30(sp)
b 0x000350f0
_lw s4,0x30(s0)
addiu a0,sp,0xb0
lw a2,0x28(s4)
or a3,v0,zero
addiu t9,t9,-0x2cc4
bal 0x0002d33c
_or a1,s0,zero
lw gp,0x18(sp)
b 0x000350f0
_or s4,v0,zero
jalr t9
_or a0,s2,zero
b 0x00034950
_lw gp,0x18(sp)
or s0,s1,zero
lw t9,-0x7be4(gp)
jalr t9
_or a0,s2,zero
lw gp,0x18(sp)
lw t9,-0x7be4(gp)
jalr t9
_lw a0,0x2c(sp)
li v1,0x1
beq s0,v1,0x00034950
_lw gp,0x18(sp)
lw s6,0x58(sp)
or s5,s8,zero
lw a0,0x138(sp)
b 0x00034238
_sw s0,0x34(sp)
or s1,s5,zero
or s5,s3,zero
lw a3,0x28(sp)
or s3,s6,zero
lw s6,0x40(sp)
addiu t9,t9,-0x25e0
or a2,s3,zero
or a0,s6,zero
bal 0x0002da20
_or a1,s2,zero
or a0,s3,zero
lw gp,0x18(sp)
lw t9,-0x7be4(gp)
jalr t9
_or s0,v0,zero
beq s0,zero,0x00035074
_lw gp,0x18(sp)
b 0x00035314
_sw zero,0x2c(sp)
lw t9,-0x7be4(gp)
or a0,s2,zero
lw s6,0x58(sp)
jalr t9
_or s5,s8,zero
li v0,0xc
lw gp,0x18(sp)
lw a0,0x138(sp)
b 0x00034238
_sw v0,0x34(sp)
beq t1,v1,0x000353f0
_nop
sll v1,v1,0x2
addu v1,t3,v1
lw v1,0x0(v1)
beq t1,a1,0x000353f8
_sw v1,0x0(v0)
sll a1,a1,0x2
addu a1,t3,a1
b 0x00034ef4
_lw a1,0x0(a1)
b 0x000353d8
_or v1,t2,zero
b 0x00034ef4
_or a1,t2,zero
lw v0,0x4c(s6)
b 0x00035228
_slt v0,zero,v0
lw v0,0x90(sp)
sw zero,0x0(v0)
b 0x00034eb4
_sw a2,0x4(v0)
lw t9,-0x7c0c(gp)
jalr t9
_nop
lw a0,0x138(sp)
b 0x00034238
_sw v0,0x34(sp)
(translation_unit "uint FUN_00033d58(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint **ppuVar13;\n  int *piVar14;\n  uint uVar15;\n  code *pcVar16;\n  code *pcVar17;\n  int *piVar18;\n  int *piVar19;\n  char cVar26;\n  code *pcVar20;\n  code *pcVar21;\n  uint uVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  uint *puVar25;\n  bool bVar27;\n  uint extraout_v1;\n  code *pcVar28;\n  uint uVar29;\n  uint uVar30;\n  uint uVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  uint uVar35;\n  int iVar36;\n  int *piVar37;\n  int iVar38;\n  uint local_160;\n  int *local_15c;\n  uint local_154;\n  char *local_150;\n  uint **local_14c;\n  uint local_140;\n  int local_f0;\n  uint *local_dc;\n  uint local_d8;\n  uint local_d4;\n  int *local_d0;\n  int *local_cc;\n  int local_c8;\n  uint local_c4;\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  int local_b4;\n  int local_b0;\n  int *local_ac;\n  int local_a8;\n  int local_9c;\n  uint local_98;\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint local_7c;\n  undefined4 local_78;\n  int local_74;\n  int *local_70;\n  byte local_6c;\n  byte local_6b;\n  byte local_6a;\n  byte local_69;\n  char local_68;\n  byte local_67;\n  byte local_66;\n  int local_64;\n  int *local_60;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int *local_50;\n  int local_4c;\n  undefined4 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar37 = (int *)*param_1;\n  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);\n  local_150 = (char *)param_1[4];\n  if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }\n  uVar9 = param_1[6];\n  if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }\n  local_60 = piVar37;\n  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }\n  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }\n  if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }\n  local_64 = piVar37[0x17];\n  iVar33 = param_1[5];\n  iVar10 = piVar37[2] + 1;\n  if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }\n  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);\n  local_69 = 1;\n  if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }\n  iVar34 = param_3 + 1;\n  if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }\n  local_6c = local_6c >> 7;\n  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);\n  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);\n  local_b4 = param_2;\n  local_88 = param_3;\n  local_84 = param_3;\n  local_80 = param_3;\n  local_7c = param_3;\n  local_74 = iVar33;\n  local_154 = FUN_00029938(&local_b4,iVar34);\n  piVar18 = local_50;\n  if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }\n  local_70 = piVar37 + 0x18;\n  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);\n  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }\n  local_7c = param_6;\n  local_80 = param_6;\n  local_94 = local_98;\n  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);\n  iVar10 = piVar37[0x13];\n  iVar34 = iVar10 * 2;\n  local_5c = param_9;\n  local_58 = 0xffffffff;\n  if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }\n  local_44 = iVar34;\n  local_34 = iVar34;\n  bVar2 = 1 < param_7;\n  local_3c = 1;\n  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }\n  iVar34 = piVar37[0x17];\n  iVar10 = -1;\n  local_dc = param_4;\n  local_78 = 6;\n  if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }\n  uVar9 = (uint)((int)param_5 < (int)param_4);\n  puVar25 = param_5;\n  if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }\n  if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }\n  if (local_150 == (char *)0x0) goto LAB_00035138;\n  uVar12 = 4;\n  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }\n  uVar30 = 2;\n  if (uVar9 != 0) {\n    uVar30 = 0;\n  }\n  uVar30 = iVar33 != 0 | uVar12 | uVar30;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  local_154 = 1;\n  piVar18 = local_50;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  local_154 = local_d8;\n  piVar18 = local_50;\n  if (local_d8 == 0xc) goto LAB_0003423c;\n  uVar23 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );\n  uVar9 = extraout_v1;\n  param_1 = &local_b4;\nLAB_00035138:\n  uVar30 = 8;\n  goto LAB_0003412c;\n}\n\n" (function_definition "uint FUN_00033d58(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint **ppuVar13;\n  int *piVar14;\n  uint uVar15;\n  code *pcVar16;\n  code *pcVar17;\n  int *piVar18;\n  int *piVar19;\n  char cVar26;\n  code *pcVar20;\n  code *pcVar21;\n  uint uVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  uint *puVar25;\n  bool bVar27;\n  uint extraout_v1;\n  code *pcVar28;\n  uint uVar29;\n  uint uVar30;\n  uint uVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  uint uVar35;\n  int iVar36;\n  int *piVar37;\n  int iVar38;\n  uint local_160;\n  int *local_15c;\n  uint local_154;\n  char *local_150;\n  uint **local_14c;\n  uint local_140;\n  int local_f0;\n  uint *local_dc;\n  uint local_d8;\n  uint local_d4;\n  int *local_d0;\n  int *local_cc;\n  int local_c8;\n  uint local_c4;\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  int local_b4;\n  int local_b0;\n  int *local_ac;\n  int local_a8;\n  int local_9c;\n  uint local_98;\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint local_7c;\n  undefined4 local_78;\n  int local_74;\n  int *local_70;\n  byte local_6c;\n  byte local_6b;\n  byte local_6a;\n  byte local_69;\n  char local_68;\n  byte local_67;\n  byte local_66;\n  int local_64;\n  int *local_60;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int *local_50;\n  int local_4c;\n  undefined4 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar37 = (int *)*param_1;\n  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);\n  local_150 = (char *)param_1[4];\n  if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }\n  uVar9 = param_1[6];\n  if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }\n  local_60 = piVar37;\n  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }\n  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }\n  if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }\n  local_64 = piVar37[0x17];\n  iVar33 = param_1[5];\n  iVar10 = piVar37[2] + 1;\n  if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }\n  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);\n  local_69 = 1;\n  if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }\n  iVar34 = param_3 + 1;\n  if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }\n  local_6c = local_6c >> 7;\n  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);\n  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);\n  local_b4 = param_2;\n  local_88 = param_3;\n  local_84 = param_3;\n  local_80 = param_3;\n  local_7c = param_3;\n  local_74 = iVar33;\n  local_154 = FUN_00029938(&local_b4,iVar34);\n  piVar18 = local_50;\n  if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }\n  local_70 = piVar37 + 0x18;\n  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);\n  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }\n  local_7c = param_6;\n  local_80 = param_6;\n  local_94 = local_98;\n  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);\n  iVar10 = piVar37[0x13];\n  iVar34 = iVar10 * 2;\n  local_5c = param_9;\n  local_58 = 0xffffffff;\n  if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }\n  local_44 = iVar34;\n  local_34 = iVar34;\n  bVar2 = 1 < param_7;\n  local_3c = 1;\n  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }\n  iVar34 = piVar37[0x17];\n  iVar10 = -1;\n  local_dc = param_4;\n  local_78 = 6;\n  if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }\n  uVar9 = (uint)((int)param_5 < (int)param_4);\n  puVar25 = param_5;\n  if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }\n  if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }\n  if (local_150 == (char *)0x0) goto LAB_00035138;\n  uVar12 = 4;\n  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }\n  uVar30 = 2;\n  if (uVar9 != 0) {\n    uVar30 = 0;\n  }\n  uVar30 = iVar33 != 0 | uVar12 | uVar30;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  local_154 = 1;\n  piVar18 = local_50;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  local_154 = local_d8;\n  piVar18 = local_50;\n  if (local_d8 == 0xc) goto LAB_0003423c;\n  uVar23 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );\n  uVar9 = extraout_v1;\n  param_1 = &local_b4;\nLAB_00035138:\n  uVar30 = 8;\n  goto LAB_0003412c;\n}" type_identifier (function_declarator "FUN_00033d58(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)" identifier (parameter_list "(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "uint *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "uint param_9" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint **ppuVar13;\n  int *piVar14;\n  uint uVar15;\n  code *pcVar16;\n  code *pcVar17;\n  int *piVar18;\n  int *piVar19;\n  char cVar26;\n  code *pcVar20;\n  code *pcVar21;\n  uint uVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  uint *puVar25;\n  bool bVar27;\n  uint extraout_v1;\n  code *pcVar28;\n  uint uVar29;\n  uint uVar30;\n  uint uVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  uint uVar35;\n  int iVar36;\n  int *piVar37;\n  int iVar38;\n  uint local_160;\n  int *local_15c;\n  uint local_154;\n  char *local_150;\n  uint **local_14c;\n  uint local_140;\n  int local_f0;\n  uint *local_dc;\n  uint local_d8;\n  uint local_d4;\n  int *local_d0;\n  int *local_cc;\n  int local_c8;\n  uint local_c4;\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  int local_b4;\n  int local_b0;\n  int *local_ac;\n  int local_a8;\n  int local_9c;\n  uint local_98;\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint local_7c;\n  undefined4 local_78;\n  int local_74;\n  int *local_70;\n  byte local_6c;\n  byte local_6b;\n  byte local_6a;\n  byte local_69;\n  char local_68;\n  byte local_67;\n  byte local_66;\n  int local_64;\n  int *local_60;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int *local_50;\n  int local_4c;\n  undefined4 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar37 = (int *)*param_1;\n  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);\n  local_150 = (char *)param_1[4];\n  if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }\n  uVar9 = param_1[6];\n  if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }\n  local_60 = piVar37;\n  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }\n  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }\n  if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }\n  local_64 = piVar37[0x17];\n  iVar33 = param_1[5];\n  iVar10 = piVar37[2] + 1;\n  if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }\n  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);\n  local_69 = 1;\n  if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }\n  iVar34 = param_3 + 1;\n  if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }\n  local_6c = local_6c >> 7;\n  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);\n  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);\n  local_b4 = param_2;\n  local_88 = param_3;\n  local_84 = param_3;\n  local_80 = param_3;\n  local_7c = param_3;\n  local_74 = iVar33;\n  local_154 = FUN_00029938(&local_b4,iVar34);\n  piVar18 = local_50;\n  if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }\n  local_70 = piVar37 + 0x18;\n  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);\n  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }\n  local_7c = param_6;\n  local_80 = param_6;\n  local_94 = local_98;\n  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);\n  iVar10 = piVar37[0x13];\n  iVar34 = iVar10 * 2;\n  local_5c = param_9;\n  local_58 = 0xffffffff;\n  if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }\n  local_44 = iVar34;\n  local_34 = iVar34;\n  bVar2 = 1 < param_7;\n  local_3c = 1;\n  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }\n  iVar34 = piVar37[0x17];\n  iVar10 = -1;\n  local_dc = param_4;\n  local_78 = 6;\n  if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }\n  uVar9 = (uint)((int)param_5 < (int)param_4);\n  puVar25 = param_5;\n  if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }\n  if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }\n  if (local_150 == (char *)0x0) goto LAB_00035138;\n  uVar12 = 4;\n  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }\n  uVar30 = 2;\n  if (uVar9 != 0) {\n    uVar30 = 0;\n  }\n  uVar30 = iVar33 != 0 | uVar12 | uVar30;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  local_154 = 1;\n  piVar18 = local_50;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  local_154 = local_d8;\n  piVar18 = local_50;\n  if (local_d8 == 0xc) goto LAB_0003423c;\n  uVar23 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );\n  uVar9 = extraout_v1;\n  param_1 = &local_b4;\nLAB_00035138:\n  uVar30 = 8;\n  goto LAB_0003412c;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint **ppuVar13;" type_identifier (pointer_declarator "**ppuVar13" * (pointer_declarator "*ppuVar13" * identifier)) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "char cVar26;" primitive_type identifier ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "undefined4 uVar23;" type_identifier identifier ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "bool bVar27;" primitive_type identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "uint uVar30;" type_identifier identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int iVar34;" primitive_type identifier ;) (declaration "uint uVar35;" type_identifier identifier ;) (declaration "int iVar36;" primitive_type identifier ;) (declaration "int *piVar37;" primitive_type (pointer_declarator "*piVar37" * identifier) ;) (declaration "int iVar38;" primitive_type identifier ;) (declaration "uint local_160;" type_identifier identifier ;) (declaration "int *local_15c;" primitive_type (pointer_declarator "*local_15c" * identifier) ;) (declaration "uint local_154;" type_identifier identifier ;) (declaration "char *local_150;" primitive_type (pointer_declarator "*local_150" * identifier) ;) (declaration "uint **local_14c;" type_identifier (pointer_declarator "**local_14c" * (pointer_declarator "*local_14c" * identifier)) ;) (declaration "uint local_140;" type_identifier identifier ;) (declaration "int local_f0;" primitive_type identifier ;) (declaration "uint *local_dc;" type_identifier (pointer_declarator "*local_dc" * identifier) ;) (declaration "uint local_d8;" type_identifier identifier ;) (declaration "uint local_d4;" type_identifier identifier ;) (declaration "int *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "int *local_cc;" primitive_type (pointer_declarator "*local_cc" * identifier) ;) (declaration "int local_c8;" primitive_type identifier ;) (declaration "uint local_c4;" type_identifier identifier ;) (declaration "undefined4 local_c0;" type_identifier identifier ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "undefined4 local_b8;" type_identifier identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "int *local_ac;" primitive_type (pointer_declarator "*local_ac" * identifier) ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "uint local_98;" type_identifier identifier ;) (declaration "uint local_94;" type_identifier identifier ;) (declaration "uint local_90;" type_identifier identifier ;) (declaration "uint local_8c;" type_identifier identifier ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "uint local_84;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "int *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "byte local_6c;" type_identifier identifier ;) (declaration "byte local_6b;" type_identifier identifier ;) (declaration "byte local_6a;" type_identifier identifier ;) (declaration "byte local_69;" type_identifier identifier ;) (declaration "char local_68;" primitive_type identifier ;) (declaration "byte local_67;" type_identifier identifier ;) (declaration "byte local_66;" type_identifier identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar8 = PTR___stack_chk_guard_000534f0;" (assignment_expression "puVar8 = 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 "piVar37 = (int *)*param_1;" (assignment_expression "piVar37 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "(*(code *)PTR_memset_00053430)(&local_b4,0,0x88);" (call_expression "(*(code *)PTR_memset_00053430)(&local_b4,0,0x88)" (parenthesized_expression "(*(code *)PTR_memset_00053430)" ( (pointer_expression "*(code *)PTR_memset_00053430" * (cast_expression "(code *)PTR_memset_00053430" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_b4,0,0x88)" ( (pointer_expression "&local_b4" & identifier) , number_literal , number_literal ))) ;) (expression_statement "local_150 = (char *)param_1[4];" (assignment_expression "local_150 = (char *)param_1[4]" identifier = (cast_expression "(char *)param_1[4]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (if_statement "if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }" if (parenthesized_expression "(local_150 != (char *)0x0)" ( (binary_expression "local_150 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }" { (if_statement "if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }" if (parenthesized_expression "(((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5))" ( (binary_expression "((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)" (parenthesized_expression "((*(byte *)(param_1 + 7) & 0x10) == 0)" ( (binary_expression "(*(byte *)(param_1 + 7) & 0x10) == 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 0x10)" ( (binary_expression "*(byte *)(param_1 + 7) & 0x10" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(param_4 == param_5)" ( (binary_expression "param_4 == param_5" identifier == identifier) ))) )) (compound_statement "{\n      local_150 = (char *)0x0;\n    }" { (expression_statement "local_150 = (char *)0x0;" (assignment_expression "local_150 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }" else (if_statement "if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }" if (parenthesized_expression "((char)*(byte *)(param_1 + 7) < '\0')" ( (binary_expression "(char)*(byte *)(param_1 + 7) < '\0'" (cast_expression "(char)*(byte *)(param_1 + 7)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_150 = (char *)0x0;\n    }" { (expression_statement "local_150 = (char *)0x0;" (assignment_expression "local_150 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })))) })) (expression_statement "uVar9 = param_1[6];" (assignment_expression "uVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (if_statement "if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }" if (parenthesized_expression "(uVar9 < param_7)" ( (binary_expression "uVar9 < param_7" identifier < identifier) )) (compound_statement "{\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }" { (expression_statement "local_f0 = (param_7 - 1) - uVar9;" (assignment_expression "local_f0 = (param_7 - 1) - uVar9" identifier = (binary_expression "(param_7 - 1) - uVar9" (parenthesized_expression "(param_7 - 1)" ( (binary_expression "param_7 - 1" identifier - number_literal) )) - identifier)) ;) (expression_statement "param_7 = param_7 + (uVar9 - (param_7 - 1));" (assignment_expression "param_7 = param_7 + (uVar9 - (param_7 - 1))" identifier = (binary_expression "param_7 + (uVar9 - (param_7 - 1))" identifier + (parenthesized_expression "(uVar9 - (param_7 - 1))" ( (binary_expression "uVar9 - (param_7 - 1)" identifier - (parenthesized_expression "(param_7 - 1)" ( (binary_expression "param_7 - 1" identifier - number_literal) ))) )))) ;) (expression_statement "iVar10 = param_1[2];" (assignment_expression "iVar10 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }" else (compound_statement "{\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }" { (expression_statement "iVar10 = param_1[2];" (assignment_expression "iVar10 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "local_f0 = 0;" (assignment_expression "local_f0 = 0" identifier = number_literal) ;) }))) (expression_statement "local_60 = piVar37;" (assignment_expression "local_60 = piVar37" identifier = identifier) ;) (if_statement "if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }" if (parenthesized_expression "((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0))))" ( (binary_expression "(((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))" (parenthesized_expression "(((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0))" ( (binary_expression "((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)" (parenthesized_expression "((iVar10 == 0) || (piVar37[9] == 0))" ( (binary_expression "(iVar10 == 0) || (piVar37[9] == 0)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) || (parenthesized_expression "(piVar37[9] == 0)" ( (binary_expression "piVar37[9] == 0" (subscript_expression "piVar37[9]" identifier [ number_literal ]) == number_literal) ))) )) || (parenthesized_expression "(piVar37[10] == 0)" ( (binary_expression "piVar37[10] == 0" (subscript_expression "piVar37[10]" identifier [ number_literal ]) == number_literal) ))) )) || (parenthesized_expression "((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))" ( (parenthesized_expression "(piVar37[0xb] == 0 || (piVar37[0xc] == 0))" ( (binary_expression "piVar37[0xb] == 0 || (piVar37[0xc] == 0)" (binary_expression "piVar37[0xb] == 0" (subscript_expression "piVar37[0xb]" identifier [ number_literal ]) == number_literal) || (parenthesized_expression "(piVar37[0xc] == 0)" ( (binary_expression "piVar37[0xc] == 0" (subscript_expression "piVar37[0xc]" identifier [ number_literal ]) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }" { (labeled_statement "LAB_000341d0:\n    local_154 = 1;" statement_identifier : (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;)) (goto_statement "goto LAB_000341d4;" goto statement_identifier ;) })) (if_statement "if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }" if (parenthesized_expression "(((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0))))" ( (binary_expression "((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))" (parenthesized_expression "((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0))" ( (binary_expression "(*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)" (parenthesized_expression "(*(int *)(piVar37[9] + 8) == 0)" ( (binary_expression "*(int *)(piVar37[9] + 8) == 0" (pointer_expression "*(int *)(piVar37[9] + 8)" * (cast_expression "(int *)(piVar37[9] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37[9] + 8)" ( (binary_expression "piVar37[9] + 8" (subscript_expression "piVar37[9]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(piVar37[10] + 8) == 0)" ( (binary_expression "*(int *)(piVar37[10] + 8) == 0" (pointer_expression "*(int *)(piVar37[10] + 8)" * (cast_expression "(int *)(piVar37[10] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37[10] + 8)" ( (binary_expression "piVar37[10] + 8" (subscript_expression "piVar37[10]" identifier [ number_literal ]) + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))" ( (parenthesized_expression "(*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0))" ( (binary_expression "*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)" (binary_expression "*(int *)(piVar37[0xb] + 8) == 0" (pointer_expression "*(int *)(piVar37[0xb] + 8)" * (cast_expression "(int *)(piVar37[0xb] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37[0xb] + 8)" ( (binary_expression "piVar37[0xb] + 8" (subscript_expression "piVar37[0xb]" identifier [ number_literal ]) + number_literal) )))) == number_literal) || (parenthesized_expression "((*(byte *)(param_1 + 7) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 7) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 1)" ( (binary_expression "*(byte *)(param_1 + 7) & 1" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }" { (if_statement "if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }" if (parenthesized_expression "(param_4 == (uint *)0x0)" ( (binary_expression "param_4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      param_5 = (uint *)0x0;\n    }" { (expression_statement "param_5 = (uint *)0x0;" (assignment_expression "param_5 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }" else (compound_statement "{\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }" { (if_statement "if (param_5 != (uint *)0x0) goto LAB_000341d0;" if (parenthesized_expression "(param_5 != (uint *)0x0)" ( (binary_expression "param_5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000341d0;" goto statement_identifier ;)) (expression_statement "param_4 = (uint *)0x0;" (assignment_expression "param_4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) })) (if_statement "if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar27 = piVar37[0x13] != 0;\n  }" { (expression_statement "bVar27 = piVar37[0x13] != 0;" (assignment_expression "bVar27 = piVar37[0x13] != 0" identifier = (binary_expression "piVar37[0x13] != 0" (subscript_expression "piVar37[0x13]" identifier [ number_literal ]) != number_literal)) ;) }) (else_clause "else {\n    bVar27 = true;\n  }" else (compound_statement "{\n    bVar27 = true;\n  }" { (expression_statement "bVar27 = true;" (assignment_expression "bVar27 = true" identifier = true) ;) }))) (expression_statement "local_64 = piVar37[0x17];" (assignment_expression "local_64 = piVar37[0x17]" identifier = (subscript_expression "piVar37[0x17]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = param_1[5];" (assignment_expression "iVar33 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = piVar37[2] + 1;" (assignment_expression "iVar10 = piVar37[2] + 1" identifier = (binary_expression "piVar37[2] + 1" (subscript_expression "piVar37[2]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }" if (parenthesized_expression "(piVar37[2] + 1 < local_64)" ( (binary_expression "piVar37[2] + 1 < local_64" (binary_expression "piVar37[2] + 1" (subscript_expression "piVar37[2]" identifier [ number_literal ]) + number_literal) < identifier) )) (compound_statement "{\n    iVar10 = local_64;\n  }" { (expression_statement "iVar10 = local_64;" (assignment_expression "iVar10 = local_64" identifier = identifier) ;) })) (expression_statement "local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);" (assignment_expression "local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18)" identifier = (call_expression "(byte)((uint)(param_1[3] << 9) >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(param_1[3] << 9) >> 0x18)" ( (binary_expression "(uint)(param_1[3] << 9) >> 0x18" (call_expression "(uint)(param_1[3] << 9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[3] << 9)" ( (binary_expression "param_1[3] << 9" (subscript_expression "param_1[3]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "local_69 = 1;" (assignment_expression "local_69 = 1" identifier = number_literal) ;) (if_statement "if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (compound_statement "{\n    local_69 = local_6c >> 7;\n  }" { (expression_statement "local_69 = local_6c >> 7;" (assignment_expression "local_69 = local_6c >> 7" identifier = (binary_expression "local_6c >> 7" identifier >> number_literal)) ;) })) (expression_statement "iVar34 = param_3 + 1;" (assignment_expression "iVar34 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (if_statement "if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }" if (parenthesized_expression "(iVar10 <= (int)(param_3 + 1))" ( (binary_expression "iVar10 <= (int)(param_3 + 1)" identifier <= (cast_expression "(int)(param_3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) )))) )) (compound_statement "{\n    iVar34 = iVar10;\n  }" { (expression_statement "iVar34 = iVar10;" (assignment_expression "iVar34 = iVar10" identifier = identifier) ;) })) (expression_statement "local_6c = local_6c >> 7;" (assignment_expression "local_6c = local_6c >> 7" identifier = (binary_expression "local_6c >> 7" identifier >> number_literal)) ;) (expression_statement "local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);" (assignment_expression "local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f)" identifier = (call_expression "(byte)((uint)(piVar37[0x16] << 2) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(piVar37[0x16] << 2) >> 0x1f)" ( (binary_expression "(uint)(piVar37[0x16] << 2) >> 0x1f" (call_expression "(uint)(piVar37[0x16] << 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar37[0x16] << 2)" ( (binary_expression "piVar37[0x16] << 2" (subscript_expression "piVar37[0x16]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);" (assignment_expression "local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f)" identifier = (call_expression "(byte)((uint)(piVar37[0x16] << 3) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(piVar37[0x16] << 3) >> 0x1f)" ( (binary_expression "(uint)(piVar37[0x16] << 3) >> 0x1f" (call_expression "(uint)(piVar37[0x16] << 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar37[0x16] << 3)" ( (binary_expression "piVar37[0x16] << 3" (subscript_expression "piVar37[0x16]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "local_b4 = param_2;" (assignment_expression "local_b4 = param_2" identifier = identifier) ;) (expression_statement "local_88 = param_3;" (assignment_expression "local_88 = param_3" identifier = identifier) ;) (expression_statement "local_84 = param_3;" (assignment_expression "local_84 = param_3" identifier = identifier) ;) (expression_statement "local_80 = param_3;" (assignment_expression "local_80 = param_3" identifier = identifier) ;) (expression_statement "local_7c = param_3;" (assignment_expression "local_7c = param_3" identifier = identifier) ;) (expression_statement "local_74 = iVar33;" (assignment_expression "local_74 = iVar33" identifier = identifier) ;) (expression_statement "local_154 = FUN_00029938(&local_b4,iVar34);" (assignment_expression "local_154 = FUN_00029938(&local_b4,iVar34)" identifier = (call_expression "FUN_00029938(&local_b4,iVar34)" identifier (argument_list "(&local_b4,iVar34)" ( (pointer_expression "&local_b4" & identifier) , identifier )))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }" { (labeled_statement "LAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }" statement_identifier : (while_statement "while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }" { (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (if_statement "if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }" if (parenthesized_expression "(piVar37[0x13] != 0)" ( (binary_expression "piVar37[0x13] != 0" (subscript_expression "piVar37[0x13]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }" { (labeled_statement "LAB_00034290:\n        FUN_0002b440(&local_b4);" statement_identifier : (expression_statement "FUN_0002b440(&local_b4);" (call_expression "FUN_0002b440(&local_b4)" identifier (argument_list "(&local_b4)" ( (pointer_expression "&local_b4" & 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 "(*(code *)PTR_free_000534fc)(local_40);" (call_expression "(*(code *)PTR_free_000534fc)(local_40)" (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_40)" ( identifier ))) ;) })) (labeled_statement "LAB_00034250:\n      FUN_0002b3d0(&local_b4);" statement_identifier : (expression_statement "FUN_0002b3d0(&local_b4);" (call_expression "FUN_0002b3d0(&local_b4)" identifier (argument_list "(&local_b4)" ( (pointer_expression "&local_b4" & identifier) ))) ;)) (labeled_statement "LAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;" statement_identifier : (if_statement "if (local_2c == *(int *)puVar8) break;" if (parenthesized_expression "(local_2c == *(int *)puVar8)" ( (binary_expression "local_2c == *(int *)puVar8" identifier == (pointer_expression "*(int *)puVar8" * (cast_expression "(int *)puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (break_statement "break;" break ;))) (expression_statement "local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();" (assignment_expression "local_154 = (*(code *)PTR___stack_chk_fail_000534d4)()" identifier = (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 "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) }))) (return_statement "return local_154;" return identifier ;) })) (expression_statement "local_70 = piVar37 + 0x18;" (assignment_expression "local_70 = piVar37 + 0x18" identifier = (binary_expression "piVar37 + 0x18" identifier + number_literal)) ;) (expression_statement "local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);" (assignment_expression "local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f)" identifier = (call_expression "(byte)((uint)(piVar37[0x16] << 4) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(piVar37[0x16] << 4) >> 0x1f)" ( (binary_expression "(uint)(piVar37[0x16] << 4) >> 0x1f" (call_expression "(uint)(piVar37[0x16] << 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar37[0x16] << 4)" ( (binary_expression "piVar37[0x16] << 4" (subscript_expression "piVar37[0x16]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (if_statement "if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }" if (parenthesized_expression "((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17]))" ( (binary_expression "(local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])" (parenthesized_expression "(local_69 != 0)" ( (binary_expression "local_69 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])" ( (comma_expression "local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17]" (assignment_expression "local_b0 = param_2" identifier = identifier) , (comma_expression "local_98 = param_3, 1 < piVar37[0x17]" (assignment_expression "local_98 = param_3" identifier = identifier) , (binary_expression "1 < piVar37[0x17]" number_literal < (subscript_expression "piVar37[0x17]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n    local_98 = 0;\n  }" { (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) })) (expression_statement "local_7c = param_6;" (assignment_expression "local_7c = param_6" identifier = identifier) ;) (expression_statement "local_80 = param_6;" (assignment_expression "local_80 = param_6" identifier = identifier) ;) (expression_statement "local_94 = local_98;" (assignment_expression "local_94 = local_98" identifier = identifier) ;) (expression_statement "local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);" (assignment_expression "local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f)" identifier = (call_expression "(byte)((uint)(param_1[7] << 7) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(param_1[7] << 7) >> 0x1f)" ( (binary_expression "(uint)(param_1[7] << 7) >> 0x1f" (call_expression "(uint)(param_1[7] << 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[7] << 7)" ( (binary_expression "param_1[7] << 7" (subscript_expression "param_1[7]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "iVar10 = piVar37[0x13];" (assignment_expression "iVar10 = piVar37[0x13]" identifier = (subscript_expression "piVar37[0x13]" identifier [ number_literal ])) ;) (expression_statement "iVar34 = iVar10 * 2;" (assignment_expression "iVar34 = iVar10 * 2" identifier = (binary_expression "iVar10 * 2" identifier * number_literal)) ;) (expression_statement "local_5c = param_9;" (assignment_expression "local_5c = param_9" identifier = identifier) ;) (expression_statement "local_58 = 0xffffffff;" (assignment_expression "local_58 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }" if (parenthesized_expression "(0 < iVar34)" ( (binary_expression "0 < iVar34" number_literal < identifier) )) (compound_statement "{\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }" { (if_statement "if (0xccccccc < iVar34) goto LAB_00034274;" if (parenthesized_expression "(0xccccccc < iVar34)" ( (binary_expression "0xccccccc < iVar34" number_literal < identifier) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (expression_statement "iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);" (assignment_expression "iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28)" identifier = (call_expression "(*(code *)PTR_malloc_00053474)(iVar10 * 0x28)" (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 "(iVar10 * 0x28)" ( (binary_expression "iVar10 * 0x28" identifier * number_literal) )))) ;) (expression_statement "local_40 = iVar11;" (assignment_expression "local_40 = iVar11" identifier = identifier) ;) (expression_statement "local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);" (assignment_expression "local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8)" identifier = (call_expression "(*(code *)PTR_malloc_00053474)(iVar10 * 8)" (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 "(iVar10 * 8)" ( (binary_expression "iVar10 * 8" identifier * number_literal) )))) ;) (if_statement "if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;" if (parenthesized_expression "((iVar11 == 0) || (local_30 == 0))" ( (binary_expression "(iVar11 == 0) || (local_30 == 0)" (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) })) (expression_statement "local_44 = iVar34;" (assignment_expression "local_44 = iVar34" identifier = identifier) ;) (expression_statement "local_34 = iVar34;" (assignment_expression "local_34 = iVar34" identifier = identifier) ;) (expression_statement "bVar2 = 1 < param_7;" (assignment_expression "bVar2 = 1 < param_7" identifier = (binary_expression "1 < param_7" number_literal < identifier)) ;) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;) (if_statement "if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }" if (parenthesized_expression "((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0))" ( (binary_expression "(bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)" (parenthesized_expression "(bVar2)" ( identifier )) || (parenthesized_expression "((*(byte *)(piVar37 + 0x16) & 0x40) != 0)" ( (binary_expression "(*(byte *)(piVar37 + 0x16) & 0x40) != 0" (parenthesized_expression "(*(byte *)(piVar37 + 0x16) & 0x40)" ( (binary_expression "*(byte *)(piVar37 + 0x16) & 0x40" (pointer_expression "*(byte *)(piVar37 + 0x16)" * (cast_expression "(byte *)(piVar37 + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37 + 0x16)" ( (binary_expression "piVar37 + 0x16" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }" { (if_statement "if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }" if (parenthesized_expression "(0x3ffffffe < local_90)" ( (binary_expression "0x3ffffffe < local_90" number_literal < identifier) )) (compound_statement "{\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }" { (labeled_statement "LAB_00034274:\n      local_154 = 0xc;" statement_identifier : (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" identifier = number_literal) ;)) (expression_statement "(*(code *)PTR_free_000534fc)(local_50);" (call_expression "(*(code *)PTR_free_000534fc)(local_50)" (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_50)" ( identifier ))) ;) (if_statement "if (piVar37[0x13] == 0) goto LAB_00034250;" if (parenthesized_expression "(piVar37[0x13] == 0)" ( (binary_expression "piVar37[0x13] == 0" (subscript_expression "piVar37[0x13]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00034250;" goto statement_identifier ;)) (goto_statement "goto LAB_00034290;" goto statement_identifier ;) })) (expression_statement "local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);" (assignment_expression "local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)((local_90 + 1) * 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 "((local_90 + 1) * 4)" ( (binary_expression "(local_90 + 1) * 4" (parenthesized_expression "(local_90 + 1)" ( (binary_expression "local_90 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }" if (parenthesized_expression "(local_50 == (int *)0x0)" ( (binary_expression "local_50 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }" { (labeled_statement "LAB_00034230:\n      local_154 = 0xc;" statement_identifier : (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" identifier = number_literal) ;)) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) }) (else_clause "else {\n    local_50 = (int *)0x0;\n  }" else (compound_statement "{\n    local_50 = (int *)0x0;\n  }" { (expression_statement "local_50 = (int *)0x0;" (assignment_expression "local_50 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "iVar34 = piVar37[0x17];" (assignment_expression "iVar34 = piVar37[0x17]" identifier = (subscript_expression "piVar37[0x17]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) (expression_statement "local_dc = param_4;" (assignment_expression "local_dc = param_4" identifier = identifier) ;) (expression_statement "local_78 = 6;" (assignment_expression "local_78 = 6" identifier = number_literal) ;) (if_statement "if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }" if (parenthesized_expression "((param_9 & 1) != 0)" ( (binary_expression "(param_9 & 1) != 0" (parenthesized_expression "(param_9 & 1)" ( (binary_expression "param_9 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    local_78 = 4;\n  }" { (expression_statement "local_78 = 4;" (assignment_expression "local_78 = 4" identifier = number_literal) ;) })) (expression_statement "uVar9 = (uint)((int)param_5 < (int)param_4);" (assignment_expression "uVar9 = (uint)((int)param_5 < (int)param_4)" identifier = (call_expression "(uint)((int)param_5 < (int)param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_5 < (int)param_4)" ( (binary_expression "(int)param_5 < (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar25 = param_5;" (assignment_expression "puVar25 = param_5" identifier = identifier) ;) (if_statement "if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar10 = 1;\n    puVar25 = param_4;\n  }" { (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (expression_statement "puVar25 = param_4;" (assignment_expression "puVar25 = param_4" identifier = identifier) ;) })) (if_statement "if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }" if (parenthesized_expression "((int)param_5 <= (int)param_4)" ( (binary_expression "(int)param_5 <= (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    param_5 = param_4;\n  }" { (expression_statement "param_5 = param_4;" (assignment_expression "param_5 = param_4" identifier = identifier) ;) })) (if_statement "if (local_150 == (char *)0x0) goto LAB_00035138;" if (parenthesized_expression "(local_150 == (char *)0x0)" ( (binary_expression "local_150 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00035138;" goto statement_identifier ;)) (expression_statement "uVar12 = 4;" (assignment_expression "uVar12 = 4" identifier = number_literal) ;) (if_statement "if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }" if (parenthesized_expression "(((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0))" ( (binary_expression "((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)" (parenthesized_expression "((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9))" ( (binary_expression "(iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)" (parenthesized_expression "(iVar34 != 1)" ( (binary_expression "iVar34 != 1" identifier != number_literal) )) && (parenthesized_expression "(uVar12 = 0, -1 < param_1[3] << 9)" ( (comma_expression "uVar12 = 0, -1 < param_1[3] << 9" (assignment_expression "uVar12 = 0" identifier = number_literal) , (binary_expression "-1 < param_1[3] << 9" number_literal < (binary_expression "param_1[3] << 9" (subscript_expression "param_1[3]" identifier [ number_literal ]) << number_literal))) ))) )) && (parenthesized_expression "(uVar12 = 4, iVar33 != 0)" ( (comma_expression "uVar12 = 4, iVar33 != 0" (assignment_expression "uVar12 = 4" identifier = number_literal) , (binary_expression "iVar33 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar12 = 0;\n  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) })) (expression_statement "uVar30 = 2;" (assignment_expression "uVar30 = 2" identifier = number_literal) ;) (if_statement "if (uVar9 != 0) {\n    uVar30 = 0;\n  }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar30 = 0;\n  }" { (expression_statement "uVar30 = 0;" (assignment_expression "uVar30 = 0" identifier = number_literal) ;) })) (expression_statement "uVar30 = iVar33 != 0 | uVar12 | uVar30;" (assignment_expression "uVar30 = iVar33 != 0 | uVar12 | uVar30" identifier = (binary_expression "iVar33 != 0 | uVar12 | uVar30" (binary_expression "iVar33 != 0 | uVar12" (binary_expression "iVar33 != 0" identifier != number_literal) | identifier) | identifier)) ;) (labeled_statement "LAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;" statement_identifier : (expression_statement "puVar6 = PTR_LAB_0005332c;" (assignment_expression "puVar6 = PTR_LAB_0005332c" identifier = identifier) ;)) (if_statement "if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }" if (parenthesized_expression "(((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5))" ( (binary_expression "((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)" (parenthesized_expression "((int)puVar25 <= (int)param_4)" ( (binary_expression "(int)puVar25 <= (int)param_4" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)param_4 <= (int)param_5)" ( (binary_expression "(int)param_4 <= (int)param_5" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }" { (expression_statement "ppuVar13 = &local_dc;" (assignment_expression "ppuVar13 = &local_dc" identifier = (pointer_expression "&local_dc" & identifier)) ;) (if_statement "if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      ppuVar13 = (uint **)0x0;\n    }" { (expression_statement "ppuVar13 = (uint **)0x0;" (assignment_expression "ppuVar13 = (uint **)0x0" identifier = (cast_expression "(uint **)0x0" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) })) (expression_statement "piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);" (assignment_expression "piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4)" identifier = (cast_expression "(int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4)" ( (binary_expression "PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4" (binary_expression "PTR_UINT_00053118 + (uVar30 - 4) * 4" identifier + (binary_expression "(uVar30 - 4) * 4" (parenthesized_expression "(uVar30 - 4)" ( (binary_expression "uVar30 - 4" identifier - number_literal) )) * number_literal)) + number_literal) )))) ;) (expression_statement "pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);" (assignment_expression "pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0xe80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0xe80)" ( (binary_expression "PTR_LAB_0005332c + -0xe80" identifier + number_literal) )))) ;) (expression_statement "iVar33 = local_9c;" (assignment_expression "iVar33 = local_9c" identifier = identifier) ;) (do_statement "do {\n      if (uVar30 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );" do (compound_statement "{\n      if (uVar30 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    }" { (if_statement "if (uVar30 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }" if (parenthesized_expression "(uVar30 - 4 < 5)" ( (binary_expression "uVar30 - 4 < 5" (binary_expression "uVar30 - 4" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }" { comment comment (expression_statement "uVar9 = (*(code *)(&_gp_1 + *piVar14))();" (assignment_expression "uVar9 = (*(code *)(&_gp_1 + *piVar14))()" identifier = (call_expression "(*(code *)(&_gp_1 + *piVar14))()" (parenthesized_expression "(*(code *)(&_gp_1 + *piVar14))" ( (pointer_expression "*(code *)(&_gp_1 + *piVar14)" * (cast_expression "(code *)(&_gp_1 + *piVar14)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *piVar14)" ( (binary_expression "&_gp_1 + *piVar14" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*piVar14" * identifier)) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar9;" return identifier ;) })) (expression_statement "local_9c = iVar33;" (assignment_expression "local_9c = iVar33" identifier = identifier) ;) (while_statement "while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }" { (expression_statement "uVar9 = (int)param_4 - iVar33;" (assignment_expression "uVar9 = (int)param_4 - iVar33" identifier = (binary_expression "(int)param_4 - iVar33" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }" if (parenthesized_expression "(local_94 <= uVar9)" ( (binary_expression "local_94 <= uVar9" identifier <= identifier) )) (compound_statement "{\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }" { (expression_statement "local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);" (assignment_expression "local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9)" identifier = (call_expression "(*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9)" (parenthesized_expression "(*(code *)(puVar6 + -0x1ac4))" ( (pointer_expression "*(code *)(puVar6 + -0x1ac4)" * (cast_expression "(code *)(puVar6 + -0x1ac4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1ac4)" ( (binary_expression "puVar6 + -0x1ac4" identifier + number_literal) )))) )) (argument_list "(&local_b4,param_4,param_9)" ( (pointer_expression "&local_b4" & identifier) , identifier , identifier )))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_154 != 0) goto LAB_0003423c;" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "uVar9 = (int)param_4 - local_9c;" (assignment_expression "uVar9 = (int)param_4 - local_9c" identifier = (binary_expression "(int)param_4 - local_9c" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "iVar33 = local_9c;" (assignment_expression "iVar33 = local_9c" identifier = identifier) ;) })) (if_statement "if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }" if (parenthesized_expression "((int)param_4 < (int)param_3)" ( (binary_expression "(int)param_4 < (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }" { (expression_statement "cVar26 = local_150[*(byte *)(local_b0 + uVar9)];" (assignment_expression "cVar26 = local_150[*(byte *)(local_b0 + uVar9)]" identifier = (subscript_expression "local_150[*(byte *)(local_b0 + uVar9)]" identifier [ (pointer_expression "*(byte *)(local_b0 + uVar9)" * (cast_expression "(byte *)(local_b0 + uVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + uVar9)" ( (binary_expression "local_b0 + uVar9" identifier + identifier) )))) ])) ;) }) (else_clause "else {\n          cVar26 = *local_150;\n        }" else (compound_statement "{\n          cVar26 = *local_150;\n        }" { (expression_statement "cVar26 = *local_150;" (assignment_expression "cVar26 = *local_150" identifier = (pointer_expression "*local_150" * identifier)) ;) }))) (if_statement "if (cVar26 != '\0') break;" if (parenthesized_expression "(cVar26 != '\0')" ( (binary_expression "cVar26 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "param_4 = (uint *)((int)param_4 + iVar10);" (assignment_expression "param_4 = (uint *)((int)param_4 + iVar10)" identifier = (cast_expression "(uint *)((int)param_4 + iVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + iVar10)" ( (binary_expression "(int)param_4 + iVar10" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_dc = param_4;" (assignment_expression "local_dc = param_4" identifier = identifier) ;) (if_statement "if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;" if (parenthesized_expression "(((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4))" ( (binary_expression "((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)" (parenthesized_expression "((int)param_4 < (int)puVar25)" ( (binary_expression "(int)param_4 < (int)puVar25" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "((int)param_5 < (int)param_4)" ( (binary_expression "(int)param_5 < (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (goto_statement "goto LAB_000345e4;" goto statement_identifier ;)) })) (expression_statement "uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);" (assignment_expression "uVar12 = FUN_0002e53c(&local_b4,param_4,param_9)" identifier = (call_expression "FUN_0002e53c(&local_b4,param_4,param_9)" identifier (argument_list "(&local_b4,param_4,param_9)" ( (pointer_expression "&local_b4" & identifier) , identifier , identifier )))) ;) (expression_statement "piVar32 = local_60;" (assignment_expression "piVar32 = local_60" identifier = identifier) ;) (expression_statement "uVar9 = local_8c;" (assignment_expression "uVar9 = local_8c" identifier = identifier) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (expression_statement "local_154 = uVar12;" (assignment_expression "local_154 = uVar12" identifier = identifier) ;) (if_statement "if (uVar12 != 0) goto LAB_0003423c;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (if_statement "if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }" if (parenthesized_expression "(((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1))" ( (binary_expression "((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)" (parenthesized_expression "((iVar34 == 1) || (local_98 == 0))" ( (binary_expression "(iVar34 == 1) || (local_98 == 0)" (parenthesized_expression "(iVar34 == 1)" ( (binary_expression "iVar34 == 1" identifier == number_literal) )) || (parenthesized_expression "(local_98 == 0)" ( (binary_expression "local_98 == 0" identifier == number_literal) ))) )) || (parenthesized_expression "(*local_ac != -1)" ( (binary_expression "*local_ac != -1" (pointer_expression "*local_ac" * identifier) != number_literal) ))) )) (compound_statement "{\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "iVar33 = local_60[9];" (assignment_expression "iVar33 = local_60[9]" identifier = (subscript_expression "local_60[9]" identifier [ number_literal ])) ;) (expression_statement "local_140 = local_8c;" (assignment_expression "local_140 = local_8c" identifier = identifier) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" identifier = number_literal) ;) (if_statement "if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }" if (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar33 + 0x34) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 1)" ( (binary_expression "*(byte *)(iVar33 + 0x34) & 1" (pointer_expression "*(byte *)(iVar33 + 0x34)" * (cast_expression "(byte *)(iVar33 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }" { (expression_statement "uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);" (assignment_expression "uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c)" identifier = (call_expression "FUN_0002e140(&local_b4,local_8c - 1,local_5c)" identifier (argument_list "(&local_b4,local_8c - 1,local_5c)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "local_8c - 1" identifier - number_literal) , identifier )))) ;) (if_statement "if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }" if (parenthesized_expression "((uVar15 & 1) == 0)" ( (binary_expression "(uVar15 & 1) == 0" (parenthesized_expression "(uVar15 & 1)" ( (binary_expression "uVar15 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }" { (if_statement "if (uVar15 == 0) goto LAB_000343a0;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000343a0;" goto statement_identifier ;)) (if_statement "if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }" if (parenthesized_expression "((uVar15 & 6) == 6)" ( (binary_expression "(uVar15 & 6) == 6" (parenthesized_expression "(uVar15 & 6)" ( (binary_expression "uVar15 & 6" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar33 = piVar32[0xc];\n            }" { (expression_statement "iVar33 = piVar32[0xc];" (assignment_expression "iVar33 = piVar32[0xc]" identifier = (subscript_expression "piVar32[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }" else (if_statement "if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }" if (parenthesized_expression "((uVar15 & 2) == 0)" ( (binary_expression "(uVar15 & 2) == 0" (parenthesized_expression "(uVar15 & 2)" ( (binary_expression "uVar15 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }" { (if_statement "if ((uVar15 & 4) == 0) goto LAB_000343a0;" if (parenthesized_expression "((uVar15 & 4) == 0)" ( (binary_expression "(uVar15 & 4) == 0" (parenthesized_expression "(uVar15 & 4)" ( (binary_expression "uVar15 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000343a0;" goto statement_identifier ;)) (expression_statement "iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);" (assignment_expression "iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15)" identifier = (call_expression "FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15)" identifier (argument_list "(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15)" ( (pointer_expression "&local_d8" & identifier) , identifier , (pointer_expression "*(undefined4 *)(iVar33 + 0x28)" * (cast_expression "(undefined4 *)(iVar33 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x28)" ( (binary_expression "iVar33 + 0x28" identifier + number_literal) )))) , identifier )))) ;) }) (else_clause "else {\n              iVar33 = piVar32[0xb];\n            }" else (compound_statement "{\n              iVar33 = piVar32[0xb];\n            }" { (expression_statement "iVar33 = piVar32[0xb];" (assignment_expression "iVar33 = piVar32[0xb]" identifier = (subscript_expression "piVar32[0xb]" identifier [ number_literal ])) ;) }))))) }) (else_clause "else {\n            iVar33 = piVar32[10];\n          }" else (compound_statement "{\n            iVar33 = piVar32[10];\n          }" { (expression_statement "iVar33 = piVar32[10];" (assignment_expression "iVar33 = piVar32[10]" identifier = (subscript_expression "piVar32[10]" identifier [ number_literal ])) ;) }))) (if_statement "if (iVar33 == 0) goto code_r0x000350f8;" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x000350f8;" goto statement_identifier ;)) })) (labeled_statement "LAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;" statement_identifier : (expression_statement "bVar4 = ppuVar13 != (uint **)0x0;" (assignment_expression "bVar4 = ppuVar13 != (uint **)0x0" identifier = (binary_expression "ppuVar13 != (uint **)0x0" identifier != (cast_expression "(uint **)0x0" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal))) ;)) (if_statement "if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" if (parenthesized_expression "((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0))" ( (binary_expression "(local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)" (parenthesized_expression "(local_50 == (int *)0x0)" ( (binary_expression "local_50 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)" ( (comma_expression "iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0" (assignment_expression "iVar11 = piVar32[0x13]" identifier = (subscript_expression "piVar32[0x13]" identifier [ number_literal ])) , (comma_expression "local_50[uVar9] = iVar33, iVar11 == 0" (assignment_expression "local_50[uVar9] = iVar33" (subscript_expression "local_50[uVar9]" identifier [ identifier ]) = identifier) , (binary_expression "iVar11 == 0" identifier == number_literal))) ))) )) (compound_statement "{\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }" { (labeled_statement "LAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" statement_identifier : (if_statement "if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" if (parenthesized_expression "(*(int *)(iVar33 + 0x34) << 4 < 0)" ( (binary_expression "*(int *)(iVar33 + 0x34) << 4 < 0" (binary_expression "*(int *)(iVar33 + 0x34) << 4" (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) << number_literal) < number_literal) )) (compound_statement "{\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }" { (if_statement "if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }" if (parenthesized_expression "(((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0))" ( (binary_expression "((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)" (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar33 + 0x34) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 1)" ( (binary_expression "*(byte *)(iVar33 + 0x34) & 1" (pointer_expression "*(byte *)(iVar33 + 0x34)" * (cast_expression "(byte *)(iVar33 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)" ( (comma_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0" (assignment_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9)" identifier = (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9)" identifier (argument_list "(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(iVar33 + 8)" * (cast_expression "(undefined4 *)(iVar33 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) )))) , (binary_expression "iVar33 + 0xc" identifier + number_literal) , identifier )))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }" { (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;) (expression_statement "bVar5 = bVar27;" (assignment_expression "bVar5 = bVar27" identifier = identifier) ;) (if_statement "if (!bVar27) goto LAB_00034760;" if (parenthesized_expression "(!bVar27)" ( (unary_expression "!bVar27" ! identifier) )) (goto_statement "goto LAB_00034760;" goto statement_identifier ;)) }) (else_clause "else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }" else (compound_statement "{\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }" { (expression_statement "uVar9 = 0xffffffff;" (assignment_expression "uVar9 = 0xffffffff" identifier = number_literal) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) }))) }) (else_clause "else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" else (compound_statement "{\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" { (expression_statement "uVar9 = 0xffffffff;" (assignment_expression "uVar9 = 0xffffffff" identifier = number_literal) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) })))) (expression_statement "pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);" (assignment_expression "pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x576c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x576c)" ( (binary_expression "PTR_LAB_0005332c + -0x576c" identifier + number_literal) )))) ;) (expression_statement "pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);" (assignment_expression "pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + 0x17e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + 0x17e0)" ( (binary_expression "PTR_LAB_0005332c + 0x17e0" identifier + number_literal) )))) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) (expression_statement "local_14c = ppuVar13;" (assignment_expression "local_14c = ppuVar13" identifier = identifier) ;) (while_statement "while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }" while (parenthesized_expression "((int)uVar15 < (int)local_7c)" ( (binary_expression "(int)uVar15 < (int)local_7c" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_7c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }" { (expression_statement "uVar35 = uVar15 + 1;" (assignment_expression "uVar35 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }" if (parenthesized_expression "((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98))))" ( (binary_expression "(((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))" (parenthesized_expression "(((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90))" ( (binary_expression "((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)" (parenthesized_expression "((int)uVar35 < (int)local_90)" ( (binary_expression "(int)uVar35 < (int)local_90" (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "((int)local_84 <= (int)local_90)" ( (binary_expression "(int)local_84 <= (int)local_90" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) && (parenthesized_expression "(((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))" ( (parenthesized_expression "((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98))" ( (binary_expression "(int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)" (binary_expression "(int)uVar35 < (int)local_98" (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) || (parenthesized_expression "((int)local_84 <= (int)local_98)" ( (binary_expression "(int)local_84 <= (int)local_98" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) ))) )) (compound_statement "{\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }" { (expression_statement "iVar11 = *(int *)(iVar33 + 0x34);" (assignment_expression "iVar11 = *(int *)(iVar33 + 0x34)" identifier = (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "piVar18 = local_60;" (assignment_expression "piVar18 = local_60" identifier = identifier) ;) }) (else_clause "else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }" else (compound_statement "{\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }" { (expression_statement "local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);" (assignment_expression "local_d8 = (*pcVar16)(&local_b4,uVar15 + 2)" identifier = (call_expression "(*pcVar16)(&local_b4,uVar15 + 2)" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "(&local_b4,uVar15 + 2)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "uVar15 + 2" identifier + number_literal) )))) ;) (if_statement "if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }" if (parenthesized_expression "(local_d8 != 0)" ( (binary_expression "local_d8 != 0" identifier != number_literal) )) (compound_statement "{\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }" { (if_statement "if (local_d8 == 0xc) goto LAB_00034274;" if (parenthesized_expression "(local_d8 == 0xc)" ( (binary_expression "local_d8 == 0xc" identifier == number_literal) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (expression_statement "uVar23 = 0x468;" (assignment_expression "uVar23 = 0x468" identifier = number_literal) ;) (goto_statement "goto LAB_00035118;" goto statement_identifier ;) })) (expression_statement "iVar11 = *(int *)(iVar33 + 0x34);" (assignment_expression "iVar11 = *(int *)(iVar33 + 0x34)" identifier = (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) (expression_statement "piVar18 = local_60;" (assignment_expression "piVar18 = local_60" identifier = identifier) ;) }))) (expression_statement "local_60 = piVar18;" (assignment_expression "local_60 = piVar18" identifier = identifier) ;) (if_statement "if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }" if (parenthesized_expression "(iVar11 << 5 < 0)" ( (binary_expression "iVar11 << 5 < 0" (binary_expression "iVar11 << 5" identifier << number_literal) < number_literal) )) (compound_statement "{\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }" { (expression_statement "iVar11 = *(int *)(iVar33 + 8);" (assignment_expression "iVar11 = *(int *)(iVar33 + 8)" identifier = (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }" { (expression_statement "param_4 = (uint *)0x0;" (assignment_expression "param_4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);" (assignment_expression "pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x55a0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x55a0)" ( (binary_expression "PTR_LAB_0005332c + -0x55a0" identifier + number_literal) )))) ;) (expression_statement "pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);" (assignment_expression "pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x1ec0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x1ec0)" ( (binary_expression "PTR_LAB_0005332c + -0x1ec0" identifier + number_literal) )))) ;) (do_statement "do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);" do (compound_statement "{\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                }" { (expression_statement "iVar36 = *piVar18;" (assignment_expression "iVar36 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);" (assignment_expression "iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" * (cast_expression "(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" ( (binary_expression "*(int *)(iVar33 + 0xc) + (int)param_4 * 4" (pointer_expression "*(int *)(iVar33 + 0xc)" * (cast_expression "(int *)(iVar33 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0xc)" ( (binary_expression "iVar33 + 0xc" identifier + number_literal) )))) + (binary_expression "(int)param_4 * 4" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);" (assignment_expression "uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4)" identifier = (pointer_expression "*(uint *)(iVar36 + iVar38 * 8 + 4)" * (cast_expression "(uint *)(iVar36 + iVar38 * 8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar36 + iVar38 * 8 + 4)" ( (binary_expression "iVar36 + iVar38 * 8 + 4" (binary_expression "iVar36 + iVar38 * 8" identifier + (binary_expression "iVar38 * 8" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }" if (parenthesized_expression "((uVar31 & 0x800) != 0)" ( (binary_expression "(uVar31 & 0x800) != 0" (parenthesized_expression "(uVar31 & 0x800)" ( (binary_expression "uVar31 & 0x800" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }" { (if_statement "if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }" if (parenthesized_expression "((uVar31 & 0xffc000) != 0)" ( (binary_expression "(uVar31 & 0xffc000) != 0" (parenthesized_expression "(uVar31 & 0xffc000)" ( (binary_expression "uVar31 & 0xffc000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }" { (expression_statement "uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);" (assignment_expression "uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c)" identifier = (call_expression "(*pcVar21)(&local_b4,uVar15,local_5c)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(&local_b4,uVar15,local_5c)" ( (pointer_expression "&local_b4" & identifier) , identifier , identifier )))) ;) (expression_statement "uVar31 = (uVar31 << 8) >> 0x16;" (assignment_expression "uVar31 = (uVar31 << 8) >> 0x16" identifier = (binary_expression "(uVar31 << 8) >> 0x16" (parenthesized_expression "(uVar31 << 8)" ( (binary_expression "uVar31 << 8" identifier << number_literal) )) >> number_literal)) ;) (if_statement "if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }" { (expression_statement "uVar29 = uVar22 & 1;" (assignment_expression "uVar29 = uVar22 & 1" identifier = (binary_expression "uVar22 & 1" identifier & number_literal)) ;) (if_statement "if ((uVar31 & 8) != 0) goto joined_r0x00034b90;" if (parenthesized_expression "((uVar31 & 8) != 0)" ( (binary_expression "(uVar31 & 8) != 0" (parenthesized_expression "(uVar31 & 8)" ( (binary_expression "uVar31 & 8" identifier & number_literal) )) != number_literal) )) (goto_statement "goto joined_r0x00034b90;" goto statement_identifier ;)) }) (else_clause "else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }" else (compound_statement "{\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }" { (expression_statement "uVar29 = uVar31 & 8;" (assignment_expression "uVar29 = uVar31 & 8" identifier = (binary_expression "uVar31 & 8" identifier & number_literal)) ;) (if_statement "if ((uVar22 & 1) == 0) goto LAB_00034cec;" if (parenthesized_expression "((uVar22 & 1) == 0)" ( (binary_expression "(uVar22 & 1) == 0" (parenthesized_expression "(uVar22 & 1)" ( (binary_expression "uVar22 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00034cec;" goto statement_identifier ;)) (labeled_statement "joined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;" statement_identifier : (if_statement "if (uVar29 != 0) goto LAB_00034cec;" if (parenthesized_expression "(uVar29 != 0)" ( (binary_expression "uVar29 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00034cec;" goto statement_identifier ;))) }))) (if_statement "if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;" if (parenthesized_expression "((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0))))" ( (binary_expression "(((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))" (parenthesized_expression "(((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0))" ( (binary_expression "((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)" (parenthesized_expression "((uVar31 & 0x20) != 0)" ( (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((uVar22 & 2) == 0)" ( (binary_expression "(uVar22 & 2) == 0" (parenthesized_expression "(uVar22 & 2)" ( (binary_expression "uVar22 & 2" identifier & number_literal) )) == number_literal) ))) )) || (parenthesized_expression "(((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))" ( (parenthesized_expression "((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0))" ( (binary_expression "(uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)" (binary_expression "(uVar31 & 0x80) != 0" (parenthesized_expression "(uVar31 & 0x80)" ( (binary_expression "uVar31 & 0x80" identifier & number_literal) )) != number_literal) && (parenthesized_expression "((uVar22 & 8) == 0)" ( (binary_expression "(uVar22 & 8) == 0" (parenthesized_expression "(uVar22 & 8)" ( (binary_expression "uVar22 & 8" identifier & number_literal) )) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_00034cec;" goto statement_identifier ;)) })) (expression_statement "iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);" (assignment_expression "iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15)" identifier = (call_expression "(*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15)" ( identifier , (binary_expression "piVar18 + 0x20" identifier + number_literal) , identifier , (pointer_expression "&local_b4" & identifier) , identifier )))) ;) (if_statement "if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }" { (if_statement "if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }" if (parenthesized_expression "(local_3c < iVar11)" ( (binary_expression "local_3c < iVar11" identifier < identifier) )) (compound_statement "{\n                        local_3c = iVar11;\n                      }" { (expression_statement "local_3c = iVar11;" (assignment_expression "local_3c = iVar11" identifier = identifier) ;) })) (expression_statement "iVar11 = iVar11 + local_8c;" (assignment_expression "iVar11 = iVar11 + local_8c" identifier = (binary_expression "iVar11 + local_8c" identifier + identifier)) ;) (expression_statement "local_d4 = (*pcVar20)(&local_b4,iVar11);" (assignment_expression "local_d4 = (*pcVar20)(&local_b4,iVar11)" identifier = (call_expression "(*pcVar20)(&local_b4,iVar11)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(&local_b4,iVar11)" ( (pointer_expression "&local_b4" & identifier) , identifier )))) ;) (expression_statement "uVar15 = local_d4;" (assignment_expression "uVar15 = local_d4" identifier = identifier) ;) (if_statement "if (local_d4 != 0) goto joined_r0x00034dec;" if (parenthesized_expression "(local_d4 != 0)" ( (binary_expression "local_d4 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x00034dec;" goto statement_identifier ;)) (expression_statement "piVar19 = local_50 + iVar11;" (assignment_expression "piVar19 = local_50 + iVar11" identifier = (binary_expression "local_50 + iVar11" identifier + identifier)) ;) (expression_statement "iVar36 = *piVar19;" (assignment_expression "iVar36 = *piVar19" identifier = (pointer_expression "*piVar19" * identifier)) ;) (expression_statement "piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);" (assignment_expression "piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc)" identifier = (cast_expression "(int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc)" ( (binary_expression "piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc" (subscript_expression "piVar18[6]" identifier [ number_literal ]) + (binary_expression "*(int *)(piVar18[3] + iVar38 * 4) * 0xc" (pointer_expression "*(int *)(piVar18[3] + iVar38 * 4)" * (cast_expression "(int *)(piVar18[3] + iVar38 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar18[3] + iVar38 * 4)" ( (binary_expression "piVar18[3] + iVar38 * 4" (subscript_expression "piVar18[3]" identifier [ number_literal ]) + (binary_expression "iVar38 * 4" identifier * number_literal)) )))) * number_literal)) )))) ;) (if_statement "if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }" if (parenthesized_expression "(iVar36 == 0)" ( (binary_expression "iVar36 == 0" identifier == number_literal) )) (compound_statement "{\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }" { (expression_statement "local_d0 = (int *)*piVar32;" (assignment_expression "local_d0 = (int *)*piVar32" identifier = (cast_expression "(int *)*piVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar32" * identifier))) ;) (expression_statement "local_cc = (int *)piVar32[1];" (assignment_expression "local_cc = (int *)piVar32[1]" identifier = (cast_expression "(int *)piVar32[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar32[1]" identifier [ number_literal ]))) ;) (expression_statement "local_c8 = piVar32[2];" (assignment_expression "local_c8 = piVar32[2]" identifier = (subscript_expression "piVar32[2]" identifier [ number_literal ])) ;) (expression_statement "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);" (assignment_expression "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c)" identifier = (call_expression "(*pcVar21)(&local_b4,iVar11 + -1,local_5c)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(&local_b4,iVar11 + -1,local_5c)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "iVar11 + -1" identifier + number_literal) , identifier )))) ;) (expression_statement "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);" (assignment_expression "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" identifier = (call_expression "FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" identifier (argument_list "(&local_d4,piVar18,&local_d0,uVar23)" ( (pointer_expression "&local_d4" & identifier) , identifier , (pointer_expression "&local_d0" & identifier) , identifier )))) ;) (expression_statement "*piVar19 = iVar36;" (assignment_expression "*piVar19 = iVar36" (pointer_expression "*piVar19" * identifier) = identifier) ;) }) (else_clause "else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }" else (compound_statement "{\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }" { (expression_statement "local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));" (assignment_expression "local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28))" identifier = (call_expression "FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28))" identifier (argument_list "(&local_d0,*(undefined4 *)(iVar36 + 0x28))" ( (pointer_expression "&local_d0" & identifier) , (pointer_expression "*(undefined4 *)(iVar36 + 0x28)" * (cast_expression "(undefined4 *)(iVar36 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar36 + 0x28)" ( (binary_expression "iVar36 + 0x28" identifier + number_literal) )))) )))) ;) (expression_statement "uVar15 = local_d4;" (assignment_expression "uVar15 = local_d4" identifier = identifier) ;) (if_statement "if (local_d4 != 0) goto joined_r0x00034dec;" if (parenthesized_expression "(local_d4 != 0)" ( (binary_expression "local_d4 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x00034dec;" goto statement_identifier ;)) (expression_statement "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);" (assignment_expression "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c)" identifier = (call_expression "(*pcVar21)(&local_b4,iVar11 + -1,local_5c)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(&local_b4,iVar11 + -1,local_5c)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "iVar11 + -1" identifier + number_literal) , identifier )))) ;) (expression_statement "piVar32 = local_50 + iVar11;" (assignment_expression "piVar32 = local_50 + iVar11" identifier = (binary_expression "local_50 + iVar11" identifier + identifier)) ;) (expression_statement "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);" (assignment_expression "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" identifier = (call_expression "FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" identifier (argument_list "(&local_d4,piVar18,&local_d0,uVar23)" ( (pointer_expression "&local_d4" & identifier) , identifier , (pointer_expression "&local_d0" & identifier) , identifier )))) ;) (expression_statement "puVar7 = PTR_free_000534fc;" (assignment_expression "puVar7 = PTR_free_000534fc" identifier = identifier) ;) (expression_statement "*piVar32 = iVar36;" (assignment_expression "*piVar32 = iVar36" (pointer_expression "*piVar32" * identifier) = identifier) ;) (expression_statement "(*(code *)puVar7)(local_c8);" (call_expression "(*(code *)puVar7)(local_c8)" (parenthesized_expression "(*(code *)puVar7)" ( (pointer_expression "*(code *)puVar7" * (cast_expression "(code *)puVar7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_c8)" ( identifier ))) ;) }))) (if_statement "if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;" if (parenthesized_expression "((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))" ( (binary_expression "(local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0)" (parenthesized_expression "(local_50[iVar11] == 0)" ( (binary_expression "local_50[iVar11] == 0" (subscript_expression "local_50[iVar11]" identifier [ identifier ]) == number_literal) )) && (parenthesized_expression "(uVar15 = local_d4, local_d4 != 0)" ( (comma_expression "uVar15 = local_d4, local_d4 != 0" (assignment_expression "uVar15 = local_d4" identifier = identifier) , (binary_expression "local_d4 != 0" identifier != number_literal)) ))) )) (goto_statement "goto joined_r0x00034dec;" goto statement_identifier ;)) })) (expression_statement "iVar11 = *(int *)(iVar33 + 8);" (assignment_expression "iVar11 = *(int *)(iVar33 + 8)" identifier = (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) })) (labeled_statement "LAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);" statement_identifier : (expression_statement "param_4 = (uint *)((int)param_4 + 1);" (assignment_expression "param_4 = (uint *)((int)param_4 + 1)" identifier = (cast_expression "(uint *)((int)param_4 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 1)" ( (binary_expression "(int)param_4 + 1" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) while (parenthesized_expression "((int)param_4 < iVar11)" ( (binary_expression "(int)param_4 < iVar11" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" identifier = number_literal) ;) })) (expression_statement "local_8c = uVar15 + 1;" (assignment_expression "local_8c = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = (uint)*(byte *)(local_b0 + uVar15);" (assignment_expression "uVar15 = (uint)*(byte *)(local_b0 + uVar15)" identifier = (binary_expression "(uint)*(byte *)(local_b0 + uVar15)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_b0 + uVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + uVar15)" ( (binary_expression "local_b0 + uVar15" identifier + identifier) ))))) ;) (do_statement "do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);" do (compound_statement "{\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            }" { (if_statement "if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }" if (parenthesized_expression "(*(int *)(iVar33 + 0x2c) != 0)" ( (binary_expression "*(int *)(iVar33 + 0x2c) != 0" (pointer_expression "*(int *)(iVar33 + 0x2c)" * (cast_expression "(int *)(iVar33 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x2c)" ( (binary_expression "iVar33 + 0x2c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }" { (expression_statement "iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);" (assignment_expression "iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" * (cast_expression "(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" ( (binary_expression "*(int *)(iVar33 + 0x2c) + uVar15 * 4" (pointer_expression "*(int *)(iVar33 + 0x2c)" * (cast_expression "(int *)(iVar33 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x2c)" ( (binary_expression "iVar33 + 0x2c" identifier + number_literal) )))) + (binary_expression "uVar15 * 4" identifier * number_literal)) ))))) ;) (labeled_statement "LAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;" statement_identifier : (if_statement "if (local_50 != (int *)0x0) goto LAB_00034478;" if (parenthesized_expression "(local_50 != (int *)0x0)" ( (binary_expression "local_50 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00034478;" goto statement_identifier ;))) (goto_statement "goto LAB_00034498;" goto statement_identifier ;) })) (expression_statement "iVar11 = *(int *)(iVar33 + 0x30);" (assignment_expression "iVar11 = *(int *)(iVar33 + 0x30)" identifier = (pointer_expression "*(int *)(iVar33 + 0x30)" * (cast_expression "(int *)(iVar33 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x30)" ( (binary_expression "iVar33 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }" { (expression_statement "uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);" (assignment_expression "uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c)" identifier = (call_expression "FUN_0002e140(&local_b4,local_8c - 1,local_5c)" identifier (argument_list "(&local_b4,local_8c - 1,local_5c)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "local_8c - 1" identifier - number_literal) , identifier )))) ;) (if_statement "if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }" if (parenthesized_expression "((uVar31 & 1) == 0)" ( (binary_expression "(uVar31 & 1) == 0" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }" { (expression_statement "iVar11 = *(int *)(iVar11 + uVar15 * 4);" (assignment_expression "iVar11 = *(int *)(iVar11 + uVar15 * 4)" identifier = (pointer_expression "*(int *)(iVar11 + uVar15 * 4)" * (cast_expression "(int *)(iVar11 + uVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + uVar15 * 4)" ( (binary_expression "iVar11 + uVar15 * 4" identifier + (binary_expression "uVar15 * 4" identifier * number_literal)) ))))) ;) }) (else_clause "else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }" else (compound_statement "{\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }" { (expression_statement "iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);" (assignment_expression "iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4)" identifier = (pointer_expression "*(int *)(iVar11 + (uVar15 + 0x100) * 4)" * (cast_expression "(int *)(iVar11 + (uVar15 + 0x100) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (uVar15 + 0x100) * 4)" ( (binary_expression "iVar11 + (uVar15 + 0x100) * 4" identifier + (binary_expression "(uVar15 + 0x100) * 4" (parenthesized_expression "(uVar15 + 0x100)" ( (binary_expression "uVar15 + 0x100" identifier + number_literal) )) * number_literal)) ))))) ;) }))) (goto_statement "goto LAB_0003446c;" goto statement_identifier ;) })) (expression_statement "iVar11 = (*pcVar28)(local_60,iVar33);" (assignment_expression "iVar11 = (*pcVar28)(local_60,iVar33)" identifier = (call_expression "(*pcVar28)(local_60,iVar33)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(local_60,iVar33)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_d8 = 0xc;" (assignment_expression "local_d8 = 0xc" identifier = number_literal) ;) (expression_statement "uVar15 = local_d8;" (assignment_expression "uVar15 = local_d8" identifier = identifier) ;) (labeled_statement "joined_r0x00034dec:\n            local_d8 = uVar15;" statement_identifier : (expression_statement "local_d8 = uVar15;" (assignment_expression "local_d8 = uVar15" identifier = identifier) ;)) (if_statement "if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }" if (parenthesized_expression "(local_50 == (int *)0x0)" ( (binary_expression "local_50 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }" { (expression_statement "piVar18 = (int *)0x0;" (assignment_expression "piVar18 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00034230;" goto statement_identifier ;) })) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);" statement_identifier : (expression_statement "iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);" (assignment_expression "iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11)" identifier = (call_expression "FUN_00033724(&local_d8,&local_b4,iVar11)" identifier (argument_list "(&local_d8,&local_b4,iVar11)" ( (pointer_expression "&local_d8" & identifier) , (pointer_expression "&local_b4" & identifier) , identifier )))) ;)) (labeled_statement "LAB_00034498:\n            uVar15 = local_8c;" statement_identifier : (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;)) (if_statement "if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }" { (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_d8 != 0) goto LAB_00034230;" if (parenthesized_expression "(local_d8 != 0)" ( (binary_expression "local_d8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00034230;" goto statement_identifier ;)) (if_statement "if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;" if (parenthesized_expression "((local_50 == (int *)0x0) || ((bVar5 && (!bVar27))))" ( (binary_expression "(local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))" (parenthesized_expression "(local_50 == (int *)0x0)" ( (binary_expression "local_50 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((bVar5 && (!bVar27)))" ( (parenthesized_expression "(bVar5 && (!bVar27))" ( (binary_expression "bVar5 && (!bVar27)" identifier && (parenthesized_expression "(!bVar27)" ( (unary_expression "!bVar27" ! identifier) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "param_4 = &local_d8;" (assignment_expression "param_4 = &local_d8" identifier = (pointer_expression "&local_d8" & identifier)) ;) (do_statement "do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);" do (compound_statement "{\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "piVar18 = local_50 + local_8c;" (assignment_expression "piVar18 = local_50 + local_8c" identifier = (binary_expression "local_50 + local_8c" identifier + identifier)) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) (do_statement "do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);" do (compound_statement "{\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                }" { (expression_statement "uVar31 = uVar15 + 1;" (assignment_expression "uVar31 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = piVar18 + 1;" (assignment_expression "piVar18 = piVar18 + 1" identifier = (binary_expression "piVar18 + 1" identifier + number_literal)) ;) (if_statement "if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }" if (parenthesized_expression "(local_4c < (int)uVar31)" ( (binary_expression "local_4c < (int)uVar31" identifier < (cast_expression "(int)uVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }" { (if_statement "if (bVar3) {\n                      local_8c = uVar15;\n                    }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n                      local_8c = uVar15;\n                    }" { (expression_statement "local_8c = uVar15;" (assignment_expression "local_8c = uVar15" identifier = identifier) ;) })) (goto_statement "goto LAB_00034748;" goto statement_identifier ;) })) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "uVar15 = uVar31;" (assignment_expression "uVar15 = uVar31" identifier = identifier) ;) }) while (parenthesized_expression "(*piVar18 == 0)" ( (binary_expression "*piVar18 == 0" (pointer_expression "*piVar18" * identifier) == number_literal) )) ;) (expression_statement "local_8c = uVar31;" (assignment_expression "local_8c = uVar31" identifier = identifier) ;) (expression_statement "iVar11 = FUN_00033724(param_4,&local_b4,0);" (assignment_expression "iVar11 = FUN_00033724(param_4,&local_b4,0)" identifier = (call_expression "FUN_00033724(param_4,&local_b4,0)" identifier (argument_list "(param_4,&local_b4,0)" ( identifier , (pointer_expression "&local_b4" & identifier) , number_literal )))) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) (if_statement "if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }" if (parenthesized_expression "(local_d8 != 0)" ( (binary_expression "local_d8 != 0" identifier != number_literal) )) (compound_statement "{\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }" { (if_statement "if (iVar11 == 0) goto LAB_00034748;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00034748;" goto statement_identifier ;)) (break_statement "break;" break ;) })) }) while (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) ;) })) (expression_statement "uVar31 = local_140;" (assignment_expression "uVar31 = local_140" identifier = identifier) ;) (if_statement "if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }" if (parenthesized_expression "((bVar4) && (uVar31 = uVar35, iVar33 != iVar11))" ( (binary_expression "(bVar4) && (uVar31 = uVar35, iVar33 != iVar11)" (parenthesized_expression "(bVar4)" ( identifier )) && (parenthesized_expression "(uVar31 = uVar35, iVar33 != iVar11)" ( (comma_expression "uVar31 = uVar35, iVar33 != iVar11" (assignment_expression "uVar31 = uVar35" identifier = identifier) , (binary_expression "iVar33 != iVar11" identifier != identifier)) ))) )) (compound_statement "{\n              bVar4 = false;\n              uVar31 = local_140;\n            }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "uVar31 = local_140;" (assignment_expression "uVar31 = local_140" identifier = identifier) ;) })) (expression_statement "local_140 = uVar31;" (assignment_expression "local_140 = uVar31" identifier = identifier) ;) (expression_statement "iVar33 = iVar11;" (assignment_expression "iVar33 = iVar11" identifier = identifier) ;) (expression_statement "local_8c = uVar15;" (assignment_expression "local_8c = uVar15" identifier = identifier) ;) (if_statement "if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }" if (parenthesized_expression "(((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0))))" ( (binary_expression "((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))" (parenthesized_expression "((*(byte *)(iVar11 + 0x34) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x34) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x34) & 8)" ( (binary_expression "*(byte *)(iVar11 + 0x34) & 8" (pointer_expression "*(byte *)(iVar11 + 0x34)" * (cast_expression "(byte *)(iVar11 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x34)" ( (binary_expression "iVar11 + 0x34" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))" ( (parenthesized_expression "((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0))" ( (binary_expression "(*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)" (binary_expression "(*(byte *)(iVar11 + 0x34) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x34) & 1)" ( (binary_expression "*(byte *)(iVar11 + 0x34) & 1" (pointer_expression "*(byte *)(iVar11 + 0x34)" * (cast_expression "(byte *)(iVar11 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x34)" ( (binary_expression "iVar11 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "(iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)" ( (comma_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0" (assignment_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15)" identifier = (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15)" identifier (argument_list "(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(iVar11 + 8)" * (cast_expression "(undefined4 *)(iVar11 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) )))) , (binary_expression "iVar11 + 0xc" identifier + number_literal) , identifier )))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }" { (if_statement "if (!bVar27) goto LAB_00034760;" if (parenthesized_expression "(!bVar27)" ( (unary_expression "!bVar27" ! identifier) )) (goto_statement "goto LAB_00034760;" goto statement_identifier ;)) (expression_statement "local_14c = (uint **)0x0;" (assignment_expression "local_14c = (uint **)0x0" identifier = (cast_expression "(uint **)0x0" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "uVar9 = uVar15;" (assignment_expression "uVar9 = uVar15" identifier = identifier) ;) (expression_statement "bVar5 = bVar27;" (assignment_expression "bVar5 = bVar27" identifier = identifier) ;) })) })) (labeled_statement "LAB_00034748:\n          uVar15 = uVar9;" statement_identifier : (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;)) (if_statement "if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }" if (parenthesized_expression "(local_14c != (uint **)0x0)" ( (binary_expression "local_14c != (uint **)0x0" identifier != (cast_expression "(uint **)0x0" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }" { (expression_statement "*local_14c = (uint *)((int)*local_14c + local_140);" (assignment_expression "*local_14c = (uint *)((int)*local_14c + local_140)" (pointer_expression "*local_14c" * identifier) = (cast_expression "(uint *)((int)*local_14c + local_140)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*local_14c + local_140)" ( (binary_expression "(int)*local_14c + local_140" (cast_expression "(int)*local_14c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*local_14c" * identifier)) + identifier) )))) ;) })) }) (else_clause "else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" else (compound_statement "{\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" { (expression_statement "uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);" (assignment_expression "uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0)" identifier = (call_expression "FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0)" identifier (argument_list "(&local_b4,iVar33 + 8,iVar33 + 0xc,0)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "iVar33 + 8" identifier + number_literal) , (binary_expression "iVar33 + 0xc" identifier + number_literal) , number_literal )))) ;) (expression_statement "local_d8 = uVar15;" (assignment_expression "local_d8 = uVar15" identifier = identifier) ;) (if_statement "if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }" { (if_statement "if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }" if (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar33 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 2)" ( (binary_expression "*(byte *)(iVar33 + 0x34) & 2" (pointer_expression "*(byte *)(iVar33 + 0x34)" * (cast_expression "(byte *)(iVar33 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              bVar4 = false;\n            }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }" else (compound_statement "{\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }" { (expression_statement "uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);" (assignment_expression "uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc)" identifier = (call_expression "FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc)" identifier (argument_list "(&local_b4,iVar33 + 8,iVar33 + 0xc)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "iVar33 + 8" identifier + number_literal) , (binary_expression "iVar33 + 0xc" identifier + number_literal) )))) ;) (expression_statement "local_d8 = uVar15;" (assignment_expression "local_d8 = uVar15" identifier = identifier) ;) (if_statement "if (uVar15 != 0) goto LAB_00034760;" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00034760;" goto statement_identifier ;)) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))) (goto_statement "goto LAB_000343c4;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00034760:\n        piVar18 = local_50;" statement_identifier : (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;)) (expression_statement "puVar7 = PTR_LAB_0005332c;" (assignment_expression "puVar7 = PTR_LAB_0005332c" identifier = identifier) ;) (if_statement "if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }" if (parenthesized_expression "(uVar15 != 0xffffffff)" ( (binary_expression "uVar15 != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }" { (if_statement "if (uVar15 == 0xfffffffe) goto LAB_00034274;" if (parenthesized_expression "(uVar15 == 0xfffffffe)" ( (binary_expression "uVar15 == 0xfffffffe" identifier == number_literal) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (expression_statement "local_58 = uVar15;" (assignment_expression "local_58 = uVar15" identifier = identifier) ;) (if_statement "if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }" if (parenthesized_expression "((*(byte *)(param_1 + 7) & 8) == 0)" ( (binary_expression "(*(byte *)(param_1 + 7) & 8) == 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 8)" ( (binary_expression "*(byte *)(param_1 + 7) & 8" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }" { (if_statement "if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }" { (expression_statement "iVar33 = piVar37[0x13];" (assignment_expression "iVar33 = piVar37[0x13]" identifier = (subscript_expression "piVar37[0x13]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x00034fc8;" goto statement_identifier ;) })) (expression_statement "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);" (assignment_expression "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15)" identifier = (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15)" identifier (argument_list "(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(local_50[uVar15] + 8)" * (cast_expression "(undefined4 *)(local_50[uVar15] + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50[uVar15] + 8)" ( (binary_expression "local_50[uVar15] + 8" (subscript_expression "local_50[uVar15]" identifier [ identifier ]) + number_literal) )))) , (binary_expression "local_50[uVar15] + 0xc" (subscript_expression "local_50[uVar15]" identifier [ identifier ]) + number_literal) , identifier )))) ;) (if_statement "if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;" if (parenthesized_expression "((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0))" ( (binary_expression "(*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)" (parenthesized_expression "(*(char *)(piVar37 + 0x16) < '\0')" ( (binary_expression "*(char *)(piVar37 + 0x16) < '\0'" (pointer_expression "*(char *)(piVar37 + 0x16)" * (cast_expression "(char *)(piVar37 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37 + 0x16)" ( (binary_expression "piVar37 + 0x16" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(piVar37[0x13] != 0)" ( (binary_expression "piVar37[0x13] != 0" (subscript_expression "piVar37[0x13]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto LAB_000347ec;" goto statement_identifier ;)) }) (else_clause "else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }" else (compound_statement "{\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }" { (expression_statement "iVar33 = piVar37[0x13];" (assignment_expression "iVar33 = piVar37[0x13]" identifier = (subscript_expression "piVar37[0x13]" identifier [ number_literal ])) ;) (labeled_statement "joined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }" statement_identifier : (if_statement "if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (compound_statement "{\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }" { (expression_statement "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);" (assignment_expression "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15)" identifier = (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15)" identifier (argument_list "(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(local_50[uVar15] + 8)" * (cast_expression "(undefined4 *)(local_50[uVar15] + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50[uVar15] + 8)" ( (binary_expression "local_50[uVar15] + 8" (subscript_expression "local_50[uVar15]" identifier [ identifier ]) + number_literal) )))) , (binary_expression "local_50[uVar15] + 0xc" (subscript_expression "local_50[uVar15]" identifier [ identifier ]) + number_literal) , identifier )))) ;) (labeled_statement "LAB_000347ec:\n              iVar33 = local_54;" statement_identifier : (expression_statement "iVar33 = local_54;" (assignment_expression "iVar33 = local_54" identifier = identifier) ;)) (expression_statement "piVar32 = local_60;" (assignment_expression "piVar32 = local_60" identifier = identifier) ;) (if_statement "if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }" if (parenthesized_expression "(uVar15 < 0x3fffffff)" ( (binary_expression "uVar15 < 0x3fffffff" identifier < number_literal) )) (compound_statement "{\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }" { (expression_statement "local_160 = uVar15 + 1;" (assignment_expression "local_160 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);" (assignment_expression "piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(local_160 * 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 "(local_160 * 4)" ( (binary_expression "local_160 * 4" identifier * number_literal) ))))) ;) (if_statement "if (piVar18 == (int *)0x0) goto LAB_00034274;" if (parenthesized_expression "(piVar18 == (int *)0x0)" ( (binary_expression "piVar18 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (if_statement "if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }" if (parenthesized_expression "(piVar32[0x13] == 0)" ( (binary_expression "piVar32[0x13] == 0" (subscript_expression "piVar32[0x13]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }" { (expression_statement "local_cc = (int *)0x0;" (assignment_expression "local_cc = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = piVar18;" (assignment_expression "local_d0 = piVar18" identifier = identifier) ;) (expression_statement "local_c8 = iVar33;" (assignment_expression "local_c8 = iVar33" identifier = identifier) ;) (expression_statement "local_c4 = uVar15;" (assignment_expression "local_c4 = uVar15" identifier = identifier) ;) (expression_statement "local_154 = FUN_00033988(&local_b4,&local_d0);" (assignment_expression "local_154 = FUN_00033988(&local_b4,&local_d0)" identifier = (call_expression "FUN_00033988(&local_b4,&local_d0)" identifier (argument_list "(&local_b4,&local_d0)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "&local_d0" & identifier) )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_b8);" (call_expression "(*(code *)PTR_free_000534fc)(local_b8)" (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_b8)" ( identifier ))) ;) (if_statement "if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }" if (parenthesized_expression "(local_154 == 0)" ( (binary_expression "local_154 == 0" identifier == number_literal) )) (compound_statement "{\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }" { (if_statement "if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }" if (parenthesized_expression "(*piVar18 == 0)" ( (binary_expression "*piVar18 == 0" (pointer_expression "*piVar18" * identifier) == number_literal) )) (compound_statement "{\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }" { (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (goto_statement "goto LAB_00034950;" goto statement_identifier ;) })) (labeled_statement "LAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);" statement_identifier : (expression_statement "(*(code *)PTR_free_000534fc)(local_50);" (call_expression "(*(code *)PTR_free_000534fc)(local_50)" (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_50)" ( identifier ))) ;)) (expression_statement "local_58 = uVar15;" (assignment_expression "local_58 = uVar15" identifier = identifier) ;) (expression_statement "local_54 = iVar33;" (assignment_expression "local_54 = iVar33" identifier = identifier) ;) (expression_statement "local_50 = piVar18;" (assignment_expression "local_50 = piVar18" identifier = identifier) ;) (goto_statement "goto LAB_00034e5c;" goto statement_identifier ;) })) (labeled_statement "LAB_00035394:\n                  local_15c = (int *)0x0;" statement_identifier : (expression_statement "local_15c = (int *)0x0;" (assignment_expression "local_15c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }" else (compound_statement "{\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }" { (expression_statement "local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);" (assignment_expression "local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(local_160 * 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 "(local_160 * 4)" ( (binary_expression "local_160 * 4" identifier * number_literal) ))))) ;) (if_statement "if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }" if (parenthesized_expression "(local_15c == (int *)0x0)" ( (binary_expression "local_15c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }" { (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" identifier = number_literal) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) (expression_statement "pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);" (assignment_expression "pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + 0x3988)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + 0x3988)" ( (binary_expression "PTR_LAB_0005332c + 0x3988" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }" { (expression_statement "(*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);" (call_expression "(*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4)" (parenthesized_expression "(*(code *)PTR_memset_00053430)" ( (pointer_expression "*(code *)PTR_memset_00053430" * (cast_expression "(code *)PTR_memset_00053430" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_15c,0,local_160 * 4)" ( identifier , number_literal , (binary_expression "local_160 * 4" identifier * number_literal) ))) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = piVar18;" (assignment_expression "local_d0 = piVar18" identifier = identifier) ;) (expression_statement "local_cc = local_15c;" (assignment_expression "local_cc = local_15c" identifier = identifier) ;) (expression_statement "local_c8 = iVar33;" (assignment_expression "local_c8 = iVar33" identifier = identifier) ;) (expression_statement "local_c4 = uVar15;" (assignment_expression "local_c4 = uVar15" identifier = identifier) ;) (expression_statement "local_154 = (*pcVar16)(&local_b4,&local_d0);" (assignment_expression "local_154 = (*pcVar16)(&local_b4,&local_d0)" identifier = (call_expression "(*pcVar16)(&local_b4,&local_d0)" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "(&local_b4,&local_d0)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "&local_d0" & identifier) )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_b8);" (call_expression "(*(code *)PTR_free_000534fc)(local_b8)" (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_b8)" ( identifier ))) ;) (if_statement "if (local_154 != 0) break;" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }" if (parenthesized_expression "((*piVar18 != 0) || (*local_15c != 0))" ( (binary_expression "(*piVar18 != 0) || (*local_15c != 0)" (parenthesized_expression "(*piVar18 != 0)" ( (binary_expression "*piVar18 != 0" (pointer_expression "*piVar18" * identifier) != number_literal) )) || (parenthesized_expression "(*local_15c != 0)" ( (binary_expression "*local_15c != 0" (pointer_expression "*local_15c" * identifier) != number_literal) ))) )) (compound_statement "{\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }" { (expression_statement "local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);" (assignment_expression "local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160)" identifier = (call_expression "FUN_0002da20(piVar32,piVar18,local_15c,local_160)" identifier (argument_list "(piVar32,piVar18,local_15c,local_160)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_15c);" (call_expression "(*(code *)PTR_free_000534fc)(local_15c)" (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_15c)" ( identifier ))) ;) (if_statement "if (local_154 != 0) goto LAB_00035394;" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00035394;" goto statement_identifier ;)) (goto_statement "goto LAB_00035074;" goto statement_identifier ;) })) (expression_statement "piVar19 = local_50 + (local_160 - 1);" (assignment_expression "piVar19 = local_50 + (local_160 - 1)" identifier = (binary_expression "local_50 + (local_160 - 1)" identifier + (parenthesized_expression "(local_160 - 1)" ( (binary_expression "local_160 - 1" identifier - number_literal) )))) ;) (expression_statement "local_160 = uVar15;" (assignment_expression "local_160 = uVar15" identifier = identifier) ;) (while_statement "while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }" { (expression_statement "uVar15 = local_160 - 1;" (assignment_expression "uVar15 = local_160 - 1" identifier = (binary_expression "local_160 - 1" identifier - number_literal)) ;) (if_statement "if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }" if (parenthesized_expression "(uVar15 == 0xffffffff)" ( (binary_expression "uVar15 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }" { (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_15c);" (call_expression "(*(code *)PTR_free_000534fc)(local_15c)" (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_15c)" ( identifier ))) ;) (goto_statement "goto LAB_00034950;" goto statement_identifier ;) })) (expression_statement "iVar33 = piVar19[-1];" (assignment_expression "iVar33 = piVar19[-1]" identifier = (subscript_expression "piVar19[-1]" identifier [ number_literal ])) ;) (if_statement "if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;" if (parenthesized_expression "((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0))" ( (binary_expression "(iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)" (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar33 + 0x34) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 8)" ( (binary_expression "*(byte *)(iVar33 + 0x34) & 8" (pointer_expression "*(byte *)(iVar33 + 0x34)" * (cast_expression "(byte *)(iVar33 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar19 = piVar19 + -1;" (assignment_expression "piVar19 = piVar19 + -1" identifier = (binary_expression "piVar19 + -1" identifier + number_literal)) ;) (expression_statement "local_160 = uVar15;" (assignment_expression "local_160 = uVar15" identifier = identifier) ;) })) (expression_statement "iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);" (assignment_expression "iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15)" identifier = (call_expression "(*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15)" (parenthesized_expression "(*(code *)(puVar7 + -0x1be4))" ( (pointer_expression "*(code *)(puVar7 + -0x1be4)" * (cast_expression "(code *)(puVar7 + -0x1be4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x1be4)" ( (binary_expression "puVar7 + -0x1be4" identifier + number_literal) )))) )) (argument_list "(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(iVar33 + 8)" * (cast_expression "(undefined4 *)(iVar33 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) )))) , (binary_expression "iVar33 + 0xc" identifier + number_literal) , identifier )))) ;) })) }))) (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_15c);" (call_expression "(*(code *)PTR_free_000534fc)(local_15c)" (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_15c)" ( identifier ))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_154 == 1) goto LAB_00034950;" if (parenthesized_expression "(local_154 == 1)" ( (binary_expression "local_154 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00034950;" goto statement_identifier ;)) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) }))) }))) (labeled_statement "LAB_00034e5c:\n          piVar18 = local_50;" statement_identifier : (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;)) (expression_statement "local_154 = uVar12;" (assignment_expression "local_154 = uVar12" identifier = identifier) ;) (if_statement "if (param_7 == 0) goto LAB_0003423c;" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "bVar1 = *(byte *)(param_1 + 7);" (assignment_expression "bVar1 = *(byte *)(param_1 + 7)" identifier = (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))))) ;) (if_statement "if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }" { (expression_statement "puVar25 = param_8 + 2;" (assignment_expression "puVar25 = param_8 + 2" identifier = (binary_expression "param_8 + 2" identifier + number_literal)) ;) (do_statement "do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);" do (compound_statement "{\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            }" { (expression_statement "puVar25[1] = 0xffffffff;" (assignment_expression "puVar25[1] = 0xffffffff" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar24 = puVar25 + 2;" (assignment_expression "puVar24 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) (expression_statement "*puVar25 = 0xffffffff;" (assignment_expression "*puVar25 = 0xffffffff" (pointer_expression "*puVar25" * identifier) = number_literal) ;) (expression_statement "puVar25 = puVar24;" (assignment_expression "puVar25 = puVar24" identifier = identifier) ;) }) while (parenthesized_expression "(param_8 + param_7 * 2 != puVar24)" ( (binary_expression "param_8 + param_7 * 2 != puVar24" (binary_expression "param_8 + param_7 * 2" identifier + (binary_expression "param_7 * 2" identifier * number_literal)) != identifier) )) ;) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (expression_statement "param_8[1] = local_58;" (assignment_expression "param_8[1] = local_58" (subscript_expression "param_8[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }" if (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }" { (if_statement "if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }" if (parenthesized_expression "(*(char *)(piVar37 + 0x16) < '\0')" ( (binary_expression "*(char *)(piVar37 + 0x16) < '\0'" (pointer_expression "*(char *)(piVar37 + 0x16)" * (cast_expression "(char *)(piVar37 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37 + 0x16)" ( (binary_expression "piVar37 + 0x16" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                bVar27 = 0 < piVar37[0x13];\n              }" { (expression_statement "bVar27 = 0 < piVar37[0x13];" (assignment_expression "bVar27 = 0 < piVar37[0x13]" identifier = (binary_expression "0 < piVar37[0x13]" number_literal < (subscript_expression "piVar37[0x13]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n                bVar27 = false;\n              }" else (compound_statement "{\n                bVar27 = false;\n              }" { (expression_statement "bVar27 = false;" (assignment_expression "bVar27 = false" identifier = false) ;) }))) (expression_statement "local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);" (assignment_expression "local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27)" identifier = (call_expression "FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27)" identifier (argument_list "(param_1,&local_b4,param_7,param_8,bVar27)" ( identifier , (pointer_expression "&local_b4" & identifier) , identifier , identifier , identifier )))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_154 != 0) goto LAB_0003423c;" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "uVar9 = *param_8;" (assignment_expression "uVar9 = *param_8" identifier = (pointer_expression "*param_8" * identifier)) ;) }) (else_clause "else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }" else (compound_statement "{\nLAB_00034eb4:\n              uVar9 = 0;\n            }" { (labeled_statement "LAB_00034eb4:\n              uVar9 = 0;" statement_identifier : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;)) }))) (expression_statement "uVar30 = 0;" (assignment_expression "uVar30 = 0" identifier = number_literal) ;) (expression_statement "puVar25 = param_8;" (assignment_expression "puVar25 = param_8" identifier = identifier) ;) (while_statement "while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }" { (if_statement "if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }" if (parenthesized_expression "(uVar9 != 0xffffffff)" ( (binary_expression "uVar9 != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }" { (expression_statement "uVar31 = puVar25[1];" (assignment_expression "uVar31 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;) (expression_statement "uVar35 = uVar31;" (assignment_expression "uVar35 = uVar31" identifier = identifier) ;) (if_statement "if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }" if (parenthesized_expression "(local_68 != '\0')" ( (binary_expression "local_68 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }" { (expression_statement "uVar15 = local_94;" (assignment_expression "uVar15 = local_94" identifier = identifier) ;) (if_statement "if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }" if (parenthesized_expression "(local_98 != uVar9)" ( (binary_expression "local_98 != uVar9" identifier != identifier) )) (compound_statement "{\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }" { (expression_statement "uVar15 = *(uint *)(local_a8 + uVar9 * 4);" (assignment_expression "uVar15 = *(uint *)(local_a8 + uVar9 * 4)" identifier = (pointer_expression "*(uint *)(local_a8 + uVar9 * 4)" * (cast_expression "(uint *)(local_a8 + uVar9 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a8 + uVar9 * 4)" ( (binary_expression "local_a8 + uVar9 * 4" identifier + (binary_expression "uVar9 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "*puVar25 = uVar15;" (assignment_expression "*puVar25 = uVar15" (pointer_expression "*puVar25" * identifier) = identifier) ;) (expression_statement "uVar35 = local_94;" (assignment_expression "uVar35 = local_94" identifier = identifier) ;) (if_statement "if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }" if (parenthesized_expression "(local_98 != uVar31)" ( (binary_expression "local_98 != uVar31" identifier != identifier) )) (compound_statement "{\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }" { (expression_statement "uVar35 = *(uint *)(local_a8 + uVar31 * 4);" (assignment_expression "uVar35 = *(uint *)(local_a8 + uVar31 * 4)" identifier = (pointer_expression "*(uint *)(local_a8 + uVar31 * 4)" * (cast_expression "(uint *)(local_a8 + uVar31 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a8 + uVar31 * 4)" ( (binary_expression "local_a8 + uVar31 * 4" identifier + (binary_expression "uVar31 * 4" identifier * number_literal)) ))))) ;) })) })) (expression_statement "*puVar25 = (int)local_dc + uVar15;" (assignment_expression "*puVar25 = (int)local_dc + uVar15" (pointer_expression "*puVar25" * identifier) = (binary_expression "(int)local_dc + uVar15" (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "puVar25[1] = (int)local_dc + uVar35;" (assignment_expression "puVar25[1] = (int)local_dc + uVar35" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "(int)local_dc + uVar35" (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) })) (expression_statement "uVar30 = uVar30 + 1;" (assignment_expression "uVar30 = uVar30 + 1" identifier = (binary_expression "uVar30 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 2;" (assignment_expression "puVar25 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) (if_statement "if (uVar30 == param_7) break;" if (parenthesized_expression "(uVar30 == param_7)" ( (binary_expression "uVar30 == param_7" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = *puVar25;" (assignment_expression "uVar9 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) })) (if_statement "if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }" if (parenthesized_expression "(0 < local_f0)" ( (binary_expression "0 < local_f0" number_literal < identifier) )) (compound_statement "{\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }" { (expression_statement "puVar25 = param_8 + param_7 * 2;" (assignment_expression "puVar25 = param_8 + param_7 * 2" identifier = (binary_expression "param_8 + param_7 * 2" identifier + (binary_expression "param_7 * 2" identifier * number_literal))) ;) (do_statement "do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);" do (compound_statement "{\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              }" { (expression_statement "*puVar25 = 0xffffffff;" (assignment_expression "*puVar25 = 0xffffffff" (pointer_expression "*puVar25" * identifier) = number_literal) ;) (expression_statement "puVar24 = puVar25 + 2;" (assignment_expression "puVar24 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) (expression_statement "puVar25[1] = 0xffffffff;" (assignment_expression "puVar25[1] = 0xffffffff" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar25 = puVar24;" (assignment_expression "puVar25 = puVar24" identifier = identifier) ;) }) while (parenthesized_expression "(param_8 + (local_f0 + param_7) * 2 != puVar24)" ( (binary_expression "param_8 + (local_f0 + param_7) * 2 != puVar24" (binary_expression "param_8 + (local_f0 + param_7) * 2" identifier + (binary_expression "(local_f0 + param_7) * 2" (parenthesized_expression "(local_f0 + param_7)" ( (binary_expression "local_f0 + param_7" identifier + identifier) )) * number_literal)) != identifier) )) ;) })) (expression_statement "piVar14 = (int *)piVar37[0x21];" (assignment_expression "piVar14 = (int *)piVar37[0x21]" identifier = (cast_expression "(int *)piVar37[0x21]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar37[0x21]" identifier [ number_literal ]))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (expression_statement "local_154 = uVar12;" (assignment_expression "local_154 = uVar12" identifier = identifier) ;) (if_statement "if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\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              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }" { (expression_statement "puVar25 = param_8;" (assignment_expression "puVar25 = param_8" identifier = identifier) ;) (for_statement "for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }" for ( (assignment_expression "iVar10 = 0" identifier = number_literal) ; (binary_expression "iVar10 != param_7 - 1" identifier != (binary_expression "param_7 - 1" identifier - number_literal)) ; (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ) (compound_statement "{\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }" { (if_statement "if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }" if (parenthesized_expression "(*piVar14 != iVar10)" ( (binary_expression "*piVar14 != iVar10" (pointer_expression "*piVar14" * identifier) != identifier) )) (compound_statement "{\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }" { (expression_statement "puVar25[2] = param_8[(*piVar14 + 1) * 2];" (assignment_expression "puVar25[2] = param_8[(*piVar14 + 1) * 2]" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (subscript_expression "param_8[(*piVar14 + 1) * 2]" identifier [ (binary_expression "(*piVar14 + 1) * 2" (parenthesized_expression "(*piVar14 + 1)" ( (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" * identifier) + number_literal) )) * number_literal) ])) ;) (expression_statement "puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];" (assignment_expression "puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1]" (subscript_expression "puVar25[3]" identifier [ number_literal ]) = (subscript_expression "param_8[(*piVar14 + 1) * 2 + 1]" identifier [ (binary_expression "(*piVar14 + 1) * 2 + 1" (binary_expression "(*piVar14 + 1) * 2" (parenthesized_expression "(*piVar14 + 1)" ( (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" * identifier) + number_literal) )) * number_literal) + number_literal) ])) ;) })) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 2;" (assignment_expression "puVar25 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) })) })) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (expression_statement "param_8[1] = local_58;" (assignment_expression "param_8[1] = local_58" (subscript_expression "param_8[1]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_00034eb4;" goto statement_identifier ;) })) (labeled_statement "LAB_00034950:\n        FUN_0002b440(&local_b4);" statement_identifier : (expression_statement "FUN_0002b440(&local_b4);" (call_expression "FUN_0002b440(&local_b4)" identifier (argument_list "(&local_b4)" ( (pointer_expression "&local_b4" & identifier) ))) ;)) (expression_statement "param_4 = local_dc;" (assignment_expression "param_4 = local_dc" identifier = identifier) ;) })) (expression_statement "param_4 = (uint *)((int)param_4 + iVar10);" (assignment_expression "param_4 = (uint *)((int)param_4 + iVar10)" identifier = (cast_expression "(uint *)((int)param_4 + iVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + iVar10)" ( (binary_expression "(int)param_4 + iVar10" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_dc = param_4;" (assignment_expression "local_dc = param_4" identifier = identifier) ;) (if_statement "if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;" if (parenthesized_expression "(((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4))" ( (binary_expression "((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)" (parenthesized_expression "((int)param_4 < (int)puVar25)" ( (binary_expression "(int)param_4 < (int)puVar25" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "(iVar33 = local_9c, (int)param_5 < (int)param_4)" ( (comma_expression "iVar33 = local_9c, (int)param_5 < (int)param_4" (assignment_expression "iVar33 = local_9c" identifier = identifier) , (binary_expression "(int)param_5 < (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_000345e4:\n  local_154 = 1;" statement_identifier : (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;)) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) (labeled_statement "code_r0x000350f8:\n  local_154 = local_d8;" statement_identifier : (expression_statement "local_154 = local_d8;" (assignment_expression "local_154 = local_d8" identifier = identifier) ;)) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_d8 == 0xc) goto LAB_0003423c;" if (parenthesized_expression "(local_d8 == 0xc)" ( (binary_expression "local_d8 == 0xc" identifier == number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "uVar23 = 0x431;" (assignment_expression "uVar23 = 0x431" identifier = number_literal) ;) (labeled_statement "LAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );" statement_identifier : (expression_statement "(*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );" (call_expression "(*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            )" (parenthesized_expression "(*(code *)PTR___assert_fail_00053378)" ( (pointer_expression "*(code *)PTR___assert_fail_00053378" * (cast_expression "(code *)PTR___assert_fail_00053378" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            )" ( (binary_expression "PTR_UINT_00053118 + 0x2114" identifier + number_literal) , (binary_expression "PTR_UINT_00053118 + 0x2098" identifier + number_literal) , identifier , (binary_expression "PTR_UINT_00053118 + 0x2620" identifier + number_literal) ))) ;)) (expression_statement "uVar9 = extraout_v1;" (assignment_expression "uVar9 = extraout_v1" identifier = identifier) ;) (expression_statement "param_1 = &local_b4;" (assignment_expression "param_1 = &local_b4" identifier = (pointer_expression "&local_b4" & identifier)) ;) (labeled_statement "LAB_00035138:\n  uVar30 = 8;" statement_identifier : (expression_statement "uVar30 = 8;" (assignment_expression "uVar30 = 8" identifier = number_literal) ;)) (goto_statement "goto LAB_0003412c;" goto statement_identifier ;) })))
(translation_unit "reg_errcode_t\nre_search_internal(regex_t *preg,char *string,Idx length,Idx start,Idx last_start,Idx stop,\n                  size_t nmatch,regmatch_t *pmatch,int eflags)\n\n{\n  bool bVar1;\n  bool bVar2;\n  re_dfa_t *prVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined1 *puVar9;\n  reg_errcode_t rVar10;\n  int iVar11;\n  uint uVar12;\n  __re_long_size_t _Var13;\n  re_backref_cache_entry *prVar14;\n  uint uVar15;\n  int *piVar16;\n  int *piVar17;\n  reg_errcode_t rVar18;\n  code *pcVar19;\n  code *pcVar20;\n  Idx IVar21;\n  re_dfastate_t **pprVar22;\n  re_dfastate_t **pprVar23;\n  char cVar29;\n  Idx *pIVar24;\n  code *pcVar25;\n  code *pcVar26;\n  regmatch_t *prVar27;\n  regmatch_t *prVar28;\n  bool bVar30;\n  uint extraout_v1;\n  reg_errcode_t *prVar31;\n  code *pcVar32;\n  int iVar33;\n  uint uVar34;\n  uint uVar35;\n  int iVar36;\n  re_dfastate_t *prVar37;\n  re_node_set *src2;\n  undefined4 uVar38;\n  int iVar39;\n  uchar *puVar40;\n  re_dfastate_t *prVar41;\n  int iVar42;\n  Idx **nodes_1;\n  undefined1 *puVar43;\n  re_dfastate_t *prVar44;\n  re_token_t *prVar45;\n  re_dfa_t *prVar46;\n  re_dfastate_t *prStack_160;\n  re_dfastate_t **pprStack_15c;\n  reg_errcode_t rStack_154;\n  char *pcStack_150;\n  int *piStack_14c;\n  undefined1 *puStack_140;\n  int iStack_f0;\n  Idx match_first;\n  reg_errcode_t err;\n  reg_errcode_t err_1;\n  re_node_set dest_nodes;\n  re_dfastate_t *prStack_c4;\n  re_match_context_t mctx;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  iVar11 = *(int *)PTR___stack_chk_guard_000534f0;\n  prVar46 = preg->buffer;\n  (*(code *)PTR_memset_00053430)(&mctx,0,0x88);\n  pcStack_150 = preg->fastmap;\n  if (pcStack_150 != (char *)0x0) {\n    if (((preg->field_0x1c & 0x10) == 0) || (start == last_start)) {\n      pcStack_150 = (char *)0x0;\n    }\n    else if ((char)preg->field_0x1c < '\0') {\n      pcStack_150 = (char *)0x0;\n    }\n  }\n  uVar12 = preg->re_nsub;\n  if (uVar12 < nmatch) {\n    iStack_f0 = (nmatch - 1) - uVar12;\n    nmatch = nmatch + (uVar12 - (nmatch - 1));\n    _Var13 = preg->used;\n  }\n  else {\n    _Var13 = preg->used;\n    iStack_f0 = 0;\n  }\n  mctx.dfa = prVar46;\n  if ((((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)) ||\n      (prVar46->init_state_word == (re_dfastate_t *)0x0)) ||\n     ((prVar46->init_state_nl == (re_dfastate_t *)0x0 ||\n      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0)))) {\nLAB_000341d0:\n    rStack_154 = _REG_NOMATCH;\n    goto LAB_000341d4;\n  }\n  if ((((prVar46->init_state->nodes).nelem == 0) && ((prVar46->init_state_word->nodes).nelem == 0))\n     && (((prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0)))) {\n    if (start == 0) {\n      last_start = 0;\n    }\n    else {\n      if (last_start != 0) goto LAB_000341d0;\n      start = 0;\n    }\n  }\n  if (nmatch == 0) {\n    bVar30 = prVar46->nbackref != 0;\n  }\n  else {\n    bVar30 = true;\n  }\n  mctx.input.mb_cur_max = prVar46->mb_cur_max;\n  iVar39 = prVar46->nodes_len + 1;\n  puVar40 = preg->translate;\n  if (iVar39 < mctx.input.mb_cur_max) {\n    iVar39 = mctx.input.mb_cur_max;\n  }\n  mctx.input.icase = (uchar)((preg->syntax << 9) >> 0x1f);\n  mctx.input.mbs_allocated = 1;\n  if (puVar40 == (uchar *)0x0) {\n    mctx.input.mbs_allocated = mctx.input.icase;\n  }\n  iVar42 = length + 1;\n  if (iVar39 <= length + 1) {\n    iVar42 = iVar39;\n  }\n  mctx.input.is_utf8 = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 2) >> 0x1f);\n  mctx.input.map_notascii = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 3) >> 0x1f);\n  mctx.input.raw_mbs = (uchar *)string;\n  mctx.input.raw_len = length;\n  mctx.input.len = length;\n  mctx.input.raw_stop = length;\n  mctx.input.stop = length;\n  mctx.input.trans = puVar40;\n  rStack_154 = re_string_realloc_buffers(&mctx.input,iVar42);\n  pprVar22 = mctx.state_log;\n  if (rStack_154 != _REG_NOERROR) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(pprVar22);\n      if (prVar46->nbackref != 0) {\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }\nLAB_00034250:\n      re_string_destruct(&mctx.input);\nLAB_000341d4:\n      if (iVar11 == *(int *)puVar8) break;\n      rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      pprVar22 = mctx.state_log;\n    }\n    return rStack_154;\n  }\n  mctx.input.word_char = prVar46->word_char;\n  mctx.input.word_ops_used = (byte)((uint)(*(int *)&prVar46->field_0x58 << 4) >> 0x1f);\n  if ((mctx.input.mbs_allocated != '\0') ||\n     (mctx.input.mbs = (uchar *)string, mctx.input.valid_len = length, 1 < prVar46->mb_cur_max)) {\n    mctx.input.valid_len = 0;\n  }\n  mctx.input.stop = stop;\n  mctx.input.raw_stop = stop;\n  mctx.input.valid_raw_len = mctx.input.valid_len;\n  mctx.input.newline_anchor = (byte)((uint)(*(int *)&preg->field_0x1c << 7) >> 0x1f);\n  iVar39 = prVar46->nbackref;\n  iVar42 = iVar39 * 2;\n  mctx.eflags = eflags;\n  mctx.match_last = -1;\n  if (0 < iVar42) {\n    if (0xccccccc < iVar42) goto LAB_00034274;\n    prVar14 = (re_backref_cache_entry *)(*(code *)PTR_malloc_00053474)(iVar39 * 0x28);\n    mctx.bkref_ents = prVar14;\n    mctx.sub_tops = (re_sub_match_top_t **)(*(code *)PTR_malloc_00053474)(iVar39 * 8);\n    if ((prVar14 == (re_backref_cache_entry *)0x0) || (mctx.sub_tops == (re_sub_match_top_t **)0x0))\n    goto LAB_00034274;\n  }\n  mctx.abkref_ents = iVar42;\n  mctx.asub_tops = iVar42;\n  bVar1 = 1 < nmatch;\n  mctx.max_mb_elem_len = 1;\n  if ((bVar1) || ((prVar46->field_0x58 & 0x40) != 0)) {\n    if (0x3ffffffe < (uint)mctx.input.bufs_len) {\nLAB_00034274:\n      rStack_154 = _REG_ESPACE;\n      (*(code *)PTR_free_000534fc)(mctx.state_log);\n      if (prVar46->nbackref == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    mctx.state_log = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 4)\n    ;\n    pprVar22 = mctx.state_log;\n    if (mctx.state_log == (re_dfastate_t **)0x0) {\nLAB_00034230:\n      rStack_154 = _REG_ESPACE;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    mctx.state_log = (re_dfastate_t **)0x0;\n  }\n  iVar42 = prVar46->mb_cur_max;\n  iVar39 = -1;\n  match_first = start;\n  mctx.input.tip_context = 6;\n  if ((eflags & 1U) != 0) {\n    mctx.input.tip_context = 4;\n  }\n  uVar12 = (uint)(last_start < start);\n  prVar31 = (reg_errcode_t *)last_start;\n  if (uVar12 == 0) {\n    iVar39 = 1;\n    prVar31 = (reg_errcode_t *)start;\n  }\n  if (last_start <= start) {\n    last_start = start;\n  }\n  if (pcStack_150 == (char *)0x0) goto LAB_00035138;\n  uVar15 = 4;\n  if (((iVar42 != 1) && (uVar15 = 0, -1 < (int)(preg->syntax << 9))) &&\n     (uVar15 = 4, puVar40 != (uchar *)0x0)) {\n    uVar15 = 0;\n  }\n  uVar35 = 2;\n  if (uVar12 != 0) {\n    uVar35 = 0;\n  }\n  uVar35 = puVar40 != (uchar *)0x0 | uVar15 | uVar35;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)prVar31 <= start) && (start <= last_start)) {\n    piVar16 = &match_first;\n    if (uVar12 != 0) {\n      piVar16 = (int *)0x0;\n    }\n    piVar17 = (int *)(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4);\n    pcVar32 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = mctx.input.raw_mbs_idx;\n    do {\n      if (uVar35 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        rVar18 = (*(code *)(&_gp + *piVar17))();\n        return rVar18;\n      }\n      mctx.input.raw_mbs_idx = iVar33;\n      while( true ) {\n        uVar12 = start - iVar33;\n        if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }\n        if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }\n        if (cVar29 != '\0') break;\n        start = start + iVar39;\n        match_first = start;\n        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;\n      }\n      rVar18 = re_string_reconstruct(&mctx.input,start,eflags);\n      prVar3 = mctx.dfa;\n      prVar37 = (re_dfastate_t *)mctx.input.cur_idx;\n      pprVar22 = mctx.state_log;\n      rStack_154 = rVar18;\n      if (rVar18 != _REG_NOERROR) goto LAB_0003423c;\n      if (((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)) {\n        mctx.max_mb_elem_len = 0;\n        mctx.nbkref_ents = 0;\n        prVar44 = (mctx.dfa)->init_state;\n        puStack_140 = (undefined1 *)mctx.input.cur_idx;\n        mctx.state_log_top = 0;\n        err = _REG_NOERROR;\n        if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;\n        if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        pprVar22 = mctx.state_log;\n        puVar7 = PTR_LAB_0005332c;\n        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        match_ctx_clean(&mctx);\n        start = match_first;\n      }\n      start = start + iVar39;\n      match_first = start;\n      if ((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  rStack_154 = _REG_NOMATCH;\n  pprVar22 = mctx.state_log;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  rStack_154 = err;\n  pprVar22 = mctx.state_log;\n  if (err == _REG_ESPACE) goto LAB_0003423c;\n  uVar38 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_DAT_00053118 + 0x2114,PTR_DAT_00053118 + 0x2098,uVar38,PTR_DAT_00053118 + 0x2620);\n  uVar12 = extraout_v1;\n  preg = (regex_t *)&mctx;\nLAB_00035138:\n  uVar35 = 8;\n  goto LAB_0003412c;\n}\n\n" (function_definition "reg_errcode_t\nre_search_internal(regex_t *preg,char *string,Idx length,Idx start,Idx last_start,Idx stop,\n                  size_t nmatch,regmatch_t *pmatch,int eflags)\n\n{\n  bool bVar1;\n  bool bVar2;\n  re_dfa_t *prVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined1 *puVar9;\n  reg_errcode_t rVar10;\n  int iVar11;\n  uint uVar12;\n  __re_long_size_t _Var13;\n  re_backref_cache_entry *prVar14;\n  uint uVar15;\n  int *piVar16;\n  int *piVar17;\n  reg_errcode_t rVar18;\n  code *pcVar19;\n  code *pcVar20;\n  Idx IVar21;\n  re_dfastate_t **pprVar22;\n  re_dfastate_t **pprVar23;\n  char cVar29;\n  Idx *pIVar24;\n  code *pcVar25;\n  code *pcVar26;\n  regmatch_t *prVar27;\n  regmatch_t *prVar28;\n  bool bVar30;\n  uint extraout_v1;\n  reg_errcode_t *prVar31;\n  code *pcVar32;\n  int iVar33;\n  uint uVar34;\n  uint uVar35;\n  int iVar36;\n  re_dfastate_t *prVar37;\n  re_node_set *src2;\n  undefined4 uVar38;\n  int iVar39;\n  uchar *puVar40;\n  re_dfastate_t *prVar41;\n  int iVar42;\n  Idx **nodes_1;\n  undefined1 *puVar43;\n  re_dfastate_t *prVar44;\n  re_token_t *prVar45;\n  re_dfa_t *prVar46;\n  re_dfastate_t *prStack_160;\n  re_dfastate_t **pprStack_15c;\n  reg_errcode_t rStack_154;\n  char *pcStack_150;\n  int *piStack_14c;\n  undefined1 *puStack_140;\n  int iStack_f0;\n  Idx match_first;\n  reg_errcode_t err;\n  reg_errcode_t err_1;\n  re_node_set dest_nodes;\n  re_dfastate_t *prStack_c4;\n  re_match_context_t mctx;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  iVar11 = *(int *)PTR___stack_chk_guard_000534f0;\n  prVar46 = preg->buffer;\n  (*(code *)PTR_memset_00053430)(&mctx,0,0x88);\n  pcStack_150 = preg->fastmap;\n  if (pcStack_150 != (char *)0x0) {\n    if (((preg->field_0x1c & 0x10) == 0) || (start == last_start)) {\n      pcStack_150 = (char *)0x0;\n    }\n    else if ((char)preg->field_0x1c < '\0') {\n      pcStack_150 = (char *)0x0;\n    }\n  }\n  uVar12 = preg->re_nsub;\n  if (uVar12 < nmatch) {\n    iStack_f0 = (nmatch - 1) - uVar12;\n    nmatch = nmatch + (uVar12 - (nmatch - 1));\n    _Var13 = preg->used;\n  }\n  else {\n    _Var13 = preg->used;\n    iStack_f0 = 0;\n  }\n  mctx.dfa = prVar46;\n  if ((((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)) ||\n      (prVar46->init_state_word == (re_dfastate_t *)0x0)) ||\n     ((prVar46->init_state_nl == (re_dfastate_t *)0x0 ||\n      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0)))) {\nLAB_000341d0:\n    rStack_154 = _REG_NOMATCH;\n    goto LAB_000341d4;\n  }\n  if ((((prVar46->init_state->nodes).nelem == 0) && ((prVar46->init_state_word->nodes).nelem == 0))\n     && (((prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0)))) {\n    if (start == 0) {\n      last_start = 0;\n    }\n    else {\n      if (last_start != 0) goto LAB_000341d0;\n      start = 0;\n    }\n  }\n  if (nmatch == 0) {\n    bVar30 = prVar46->nbackref != 0;\n  }\n  else {\n    bVar30 = true;\n  }\n  mctx.input.mb_cur_max = prVar46->mb_cur_max;\n  iVar39 = prVar46->nodes_len + 1;\n  puVar40 = preg->translate;\n  if (iVar39 < mctx.input.mb_cur_max) {\n    iVar39 = mctx.input.mb_cur_max;\n  }\n  mctx.input.icase = (uchar)((preg->syntax << 9) >> 0x1f);\n  mctx.input.mbs_allocated = 1;\n  if (puVar40 == (uchar *)0x0) {\n    mctx.input.mbs_allocated = mctx.input.icase;\n  }\n  iVar42 = length + 1;\n  if (iVar39 <= length + 1) {\n    iVar42 = iVar39;\n  }\n  mctx.input.is_utf8 = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 2) >> 0x1f);\n  mctx.input.map_notascii = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 3) >> 0x1f);\n  mctx.input.raw_mbs = (uchar *)string;\n  mctx.input.raw_len = length;\n  mctx.input.len = length;\n  mctx.input.raw_stop = length;\n  mctx.input.stop = length;\n  mctx.input.trans = puVar40;\n  rStack_154 = re_string_realloc_buffers(&mctx.input,iVar42);\n  pprVar22 = mctx.state_log;\n  if (rStack_154 != _REG_NOERROR) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(pprVar22);\n      if (prVar46->nbackref != 0) {\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }\nLAB_00034250:\n      re_string_destruct(&mctx.input);\nLAB_000341d4:\n      if (iVar11 == *(int *)puVar8) break;\n      rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      pprVar22 = mctx.state_log;\n    }\n    return rStack_154;\n  }\n  mctx.input.word_char = prVar46->word_char;\n  mctx.input.word_ops_used = (byte)((uint)(*(int *)&prVar46->field_0x58 << 4) >> 0x1f);\n  if ((mctx.input.mbs_allocated != '\0') ||\n     (mctx.input.mbs = (uchar *)string, mctx.input.valid_len = length, 1 < prVar46->mb_cur_max)) {\n    mctx.input.valid_len = 0;\n  }\n  mctx.input.stop = stop;\n  mctx.input.raw_stop = stop;\n  mctx.input.valid_raw_len = mctx.input.valid_len;\n  mctx.input.newline_anchor = (byte)((uint)(*(int *)&preg->field_0x1c << 7) >> 0x1f);\n  iVar39 = prVar46->nbackref;\n  iVar42 = iVar39 * 2;\n  mctx.eflags = eflags;\n  mctx.match_last = -1;\n  if (0 < iVar42) {\n    if (0xccccccc < iVar42) goto LAB_00034274;\n    prVar14 = (re_backref_cache_entry *)(*(code *)PTR_malloc_00053474)(iVar39 * 0x28);\n    mctx.bkref_ents = prVar14;\n    mctx.sub_tops = (re_sub_match_top_t **)(*(code *)PTR_malloc_00053474)(iVar39 * 8);\n    if ((prVar14 == (re_backref_cache_entry *)0x0) || (mctx.sub_tops == (re_sub_match_top_t **)0x0))\n    goto LAB_00034274;\n  }\n  mctx.abkref_ents = iVar42;\n  mctx.asub_tops = iVar42;\n  bVar1 = 1 < nmatch;\n  mctx.max_mb_elem_len = 1;\n  if ((bVar1) || ((prVar46->field_0x58 & 0x40) != 0)) {\n    if (0x3ffffffe < (uint)mctx.input.bufs_len) {\nLAB_00034274:\n      rStack_154 = _REG_ESPACE;\n      (*(code *)PTR_free_000534fc)(mctx.state_log);\n      if (prVar46->nbackref == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    mctx.state_log = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 4)\n    ;\n    pprVar22 = mctx.state_log;\n    if (mctx.state_log == (re_dfastate_t **)0x0) {\nLAB_00034230:\n      rStack_154 = _REG_ESPACE;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    mctx.state_log = (re_dfastate_t **)0x0;\n  }\n  iVar42 = prVar46->mb_cur_max;\n  iVar39 = -1;\n  match_first = start;\n  mctx.input.tip_context = 6;\n  if ((eflags & 1U) != 0) {\n    mctx.input.tip_context = 4;\n  }\n  uVar12 = (uint)(last_start < start);\n  prVar31 = (reg_errcode_t *)last_start;\n  if (uVar12 == 0) {\n    iVar39 = 1;\n    prVar31 = (reg_errcode_t *)start;\n  }\n  if (last_start <= start) {\n    last_start = start;\n  }\n  if (pcStack_150 == (char *)0x0) goto LAB_00035138;\n  uVar15 = 4;\n  if (((iVar42 != 1) && (uVar15 = 0, -1 < (int)(preg->syntax << 9))) &&\n     (uVar15 = 4, puVar40 != (uchar *)0x0)) {\n    uVar15 = 0;\n  }\n  uVar35 = 2;\n  if (uVar12 != 0) {\n    uVar35 = 0;\n  }\n  uVar35 = puVar40 != (uchar *)0x0 | uVar15 | uVar35;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)prVar31 <= start) && (start <= last_start)) {\n    piVar16 = &match_first;\n    if (uVar12 != 0) {\n      piVar16 = (int *)0x0;\n    }\n    piVar17 = (int *)(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4);\n    pcVar32 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = mctx.input.raw_mbs_idx;\n    do {\n      if (uVar35 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        rVar18 = (*(code *)(&_gp + *piVar17))();\n        return rVar18;\n      }\n      mctx.input.raw_mbs_idx = iVar33;\n      while( true ) {\n        uVar12 = start - iVar33;\n        if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }\n        if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }\n        if (cVar29 != '\0') break;\n        start = start + iVar39;\n        match_first = start;\n        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;\n      }\n      rVar18 = re_string_reconstruct(&mctx.input,start,eflags);\n      prVar3 = mctx.dfa;\n      prVar37 = (re_dfastate_t *)mctx.input.cur_idx;\n      pprVar22 = mctx.state_log;\n      rStack_154 = rVar18;\n      if (rVar18 != _REG_NOERROR) goto LAB_0003423c;\n      if (((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)) {\n        mctx.max_mb_elem_len = 0;\n        mctx.nbkref_ents = 0;\n        prVar44 = (mctx.dfa)->init_state;\n        puStack_140 = (undefined1 *)mctx.input.cur_idx;\n        mctx.state_log_top = 0;\n        err = _REG_NOERROR;\n        if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;\n        if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        pprVar22 = mctx.state_log;\n        puVar7 = PTR_LAB_0005332c;\n        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        match_ctx_clean(&mctx);\n        start = match_first;\n      }\n      start = start + iVar39;\n      match_first = start;\n      if ((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  rStack_154 = _REG_NOMATCH;\n  pprVar22 = mctx.state_log;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  rStack_154 = err;\n  pprVar22 = mctx.state_log;\n  if (err == _REG_ESPACE) goto LAB_0003423c;\n  uVar38 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_DAT_00053118 + 0x2114,PTR_DAT_00053118 + 0x2098,uVar38,PTR_DAT_00053118 + 0x2620);\n  uVar12 = extraout_v1;\n  preg = (regex_t *)&mctx;\nLAB_00035138:\n  uVar35 = 8;\n  goto LAB_0003412c;\n}" type_identifier (function_declarator "re_search_internal(regex_t *preg,char *string,Idx length,Idx start,Idx last_start,Idx stop,\n                  size_t nmatch,regmatch_t *pmatch,int eflags)" identifier (parameter_list "(regex_t *preg,char *string,Idx length,Idx start,Idx last_start,Idx stop,\n                  size_t nmatch,regmatch_t *pmatch,int eflags)" ( (parameter_declaration "regex_t *preg" type_identifier (pointer_declarator "*preg" * identifier)) , (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "Idx length" type_identifier identifier) , (parameter_declaration "Idx start" type_identifier identifier) , (parameter_declaration "Idx last_start" type_identifier identifier) , (parameter_declaration "Idx stop" type_identifier identifier) , (parameter_declaration "size_t nmatch" primitive_type identifier) , (parameter_declaration "regmatch_t *pmatch" type_identifier (pointer_declarator "*pmatch" * identifier)) , (parameter_declaration "int eflags" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  re_dfa_t *prVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  undefined1 *puVar9;\n  reg_errcode_t rVar10;\n  int iVar11;\n  uint uVar12;\n  __re_long_size_t _Var13;\n  re_backref_cache_entry *prVar14;\n  uint uVar15;\n  int *piVar16;\n  int *piVar17;\n  reg_errcode_t rVar18;\n  code *pcVar19;\n  code *pcVar20;\n  Idx IVar21;\n  re_dfastate_t **pprVar22;\n  re_dfastate_t **pprVar23;\n  char cVar29;\n  Idx *pIVar24;\n  code *pcVar25;\n  code *pcVar26;\n  regmatch_t *prVar27;\n  regmatch_t *prVar28;\n  bool bVar30;\n  uint extraout_v1;\n  reg_errcode_t *prVar31;\n  code *pcVar32;\n  int iVar33;\n  uint uVar34;\n  uint uVar35;\n  int iVar36;\n  re_dfastate_t *prVar37;\n  re_node_set *src2;\n  undefined4 uVar38;\n  int iVar39;\n  uchar *puVar40;\n  re_dfastate_t *prVar41;\n  int iVar42;\n  Idx **nodes_1;\n  undefined1 *puVar43;\n  re_dfastate_t *prVar44;\n  re_token_t *prVar45;\n  re_dfa_t *prVar46;\n  re_dfastate_t *prStack_160;\n  re_dfastate_t **pprStack_15c;\n  reg_errcode_t rStack_154;\n  char *pcStack_150;\n  int *piStack_14c;\n  undefined1 *puStack_140;\n  int iStack_f0;\n  Idx match_first;\n  reg_errcode_t err;\n  reg_errcode_t err_1;\n  re_node_set dest_nodes;\n  re_dfastate_t *prStack_c4;\n  re_match_context_t mctx;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  iVar11 = *(int *)PTR___stack_chk_guard_000534f0;\n  prVar46 = preg->buffer;\n  (*(code *)PTR_memset_00053430)(&mctx,0,0x88);\n  pcStack_150 = preg->fastmap;\n  if (pcStack_150 != (char *)0x0) {\n    if (((preg->field_0x1c & 0x10) == 0) || (start == last_start)) {\n      pcStack_150 = (char *)0x0;\n    }\n    else if ((char)preg->field_0x1c < '\0') {\n      pcStack_150 = (char *)0x0;\n    }\n  }\n  uVar12 = preg->re_nsub;\n  if (uVar12 < nmatch) {\n    iStack_f0 = (nmatch - 1) - uVar12;\n    nmatch = nmatch + (uVar12 - (nmatch - 1));\n    _Var13 = preg->used;\n  }\n  else {\n    _Var13 = preg->used;\n    iStack_f0 = 0;\n  }\n  mctx.dfa = prVar46;\n  if ((((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)) ||\n      (prVar46->init_state_word == (re_dfastate_t *)0x0)) ||\n     ((prVar46->init_state_nl == (re_dfastate_t *)0x0 ||\n      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0)))) {\nLAB_000341d0:\n    rStack_154 = _REG_NOMATCH;\n    goto LAB_000341d4;\n  }\n  if ((((prVar46->init_state->nodes).nelem == 0) && ((prVar46->init_state_word->nodes).nelem == 0))\n     && (((prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0)))) {\n    if (start == 0) {\n      last_start = 0;\n    }\n    else {\n      if (last_start != 0) goto LAB_000341d0;\n      start = 0;\n    }\n  }\n  if (nmatch == 0) {\n    bVar30 = prVar46->nbackref != 0;\n  }\n  else {\n    bVar30 = true;\n  }\n  mctx.input.mb_cur_max = prVar46->mb_cur_max;\n  iVar39 = prVar46->nodes_len + 1;\n  puVar40 = preg->translate;\n  if (iVar39 < mctx.input.mb_cur_max) {\n    iVar39 = mctx.input.mb_cur_max;\n  }\n  mctx.input.icase = (uchar)((preg->syntax << 9) >> 0x1f);\n  mctx.input.mbs_allocated = 1;\n  if (puVar40 == (uchar *)0x0) {\n    mctx.input.mbs_allocated = mctx.input.icase;\n  }\n  iVar42 = length + 1;\n  if (iVar39 <= length + 1) {\n    iVar42 = iVar39;\n  }\n  mctx.input.is_utf8 = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 2) >> 0x1f);\n  mctx.input.map_notascii = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 3) >> 0x1f);\n  mctx.input.raw_mbs = (uchar *)string;\n  mctx.input.raw_len = length;\n  mctx.input.len = length;\n  mctx.input.raw_stop = length;\n  mctx.input.stop = length;\n  mctx.input.trans = puVar40;\n  rStack_154 = re_string_realloc_buffers(&mctx.input,iVar42);\n  pprVar22 = mctx.state_log;\n  if (rStack_154 != _REG_NOERROR) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(pprVar22);\n      if (prVar46->nbackref != 0) {\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }\nLAB_00034250:\n      re_string_destruct(&mctx.input);\nLAB_000341d4:\n      if (iVar11 == *(int *)puVar8) break;\n      rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      pprVar22 = mctx.state_log;\n    }\n    return rStack_154;\n  }\n  mctx.input.word_char = prVar46->word_char;\n  mctx.input.word_ops_used = (byte)((uint)(*(int *)&prVar46->field_0x58 << 4) >> 0x1f);\n  if ((mctx.input.mbs_allocated != '\0') ||\n     (mctx.input.mbs = (uchar *)string, mctx.input.valid_len = length, 1 < prVar46->mb_cur_max)) {\n    mctx.input.valid_len = 0;\n  }\n  mctx.input.stop = stop;\n  mctx.input.raw_stop = stop;\n  mctx.input.valid_raw_len = mctx.input.valid_len;\n  mctx.input.newline_anchor = (byte)((uint)(*(int *)&preg->field_0x1c << 7) >> 0x1f);\n  iVar39 = prVar46->nbackref;\n  iVar42 = iVar39 * 2;\n  mctx.eflags = eflags;\n  mctx.match_last = -1;\n  if (0 < iVar42) {\n    if (0xccccccc < iVar42) goto LAB_00034274;\n    prVar14 = (re_backref_cache_entry *)(*(code *)PTR_malloc_00053474)(iVar39 * 0x28);\n    mctx.bkref_ents = prVar14;\n    mctx.sub_tops = (re_sub_match_top_t **)(*(code *)PTR_malloc_00053474)(iVar39 * 8);\n    if ((prVar14 == (re_backref_cache_entry *)0x0) || (mctx.sub_tops == (re_sub_match_top_t **)0x0))\n    goto LAB_00034274;\n  }\n  mctx.abkref_ents = iVar42;\n  mctx.asub_tops = iVar42;\n  bVar1 = 1 < nmatch;\n  mctx.max_mb_elem_len = 1;\n  if ((bVar1) || ((prVar46->field_0x58 & 0x40) != 0)) {\n    if (0x3ffffffe < (uint)mctx.input.bufs_len) {\nLAB_00034274:\n      rStack_154 = _REG_ESPACE;\n      (*(code *)PTR_free_000534fc)(mctx.state_log);\n      if (prVar46->nbackref == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    mctx.state_log = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 4)\n    ;\n    pprVar22 = mctx.state_log;\n    if (mctx.state_log == (re_dfastate_t **)0x0) {\nLAB_00034230:\n      rStack_154 = _REG_ESPACE;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    mctx.state_log = (re_dfastate_t **)0x0;\n  }\n  iVar42 = prVar46->mb_cur_max;\n  iVar39 = -1;\n  match_first = start;\n  mctx.input.tip_context = 6;\n  if ((eflags & 1U) != 0) {\n    mctx.input.tip_context = 4;\n  }\n  uVar12 = (uint)(last_start < start);\n  prVar31 = (reg_errcode_t *)last_start;\n  if (uVar12 == 0) {\n    iVar39 = 1;\n    prVar31 = (reg_errcode_t *)start;\n  }\n  if (last_start <= start) {\n    last_start = start;\n  }\n  if (pcStack_150 == (char *)0x0) goto LAB_00035138;\n  uVar15 = 4;\n  if (((iVar42 != 1) && (uVar15 = 0, -1 < (int)(preg->syntax << 9))) &&\n     (uVar15 = 4, puVar40 != (uchar *)0x0)) {\n    uVar15 = 0;\n  }\n  uVar35 = 2;\n  if (uVar12 != 0) {\n    uVar35 = 0;\n  }\n  uVar35 = puVar40 != (uchar *)0x0 | uVar15 | uVar35;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)prVar31 <= start) && (start <= last_start)) {\n    piVar16 = &match_first;\n    if (uVar12 != 0) {\n      piVar16 = (int *)0x0;\n    }\n    piVar17 = (int *)(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4);\n    pcVar32 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = mctx.input.raw_mbs_idx;\n    do {\n      if (uVar35 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        rVar18 = (*(code *)(&_gp + *piVar17))();\n        return rVar18;\n      }\n      mctx.input.raw_mbs_idx = iVar33;\n      while( true ) {\n        uVar12 = start - iVar33;\n        if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }\n        if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }\n        if (cVar29 != '\0') break;\n        start = start + iVar39;\n        match_first = start;\n        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;\n      }\n      rVar18 = re_string_reconstruct(&mctx.input,start,eflags);\n      prVar3 = mctx.dfa;\n      prVar37 = (re_dfastate_t *)mctx.input.cur_idx;\n      pprVar22 = mctx.state_log;\n      rStack_154 = rVar18;\n      if (rVar18 != _REG_NOERROR) goto LAB_0003423c;\n      if (((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)) {\n        mctx.max_mb_elem_len = 0;\n        mctx.nbkref_ents = 0;\n        prVar44 = (mctx.dfa)->init_state;\n        puStack_140 = (undefined1 *)mctx.input.cur_idx;\n        mctx.state_log_top = 0;\n        err = _REG_NOERROR;\n        if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;\n        if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        pprVar22 = mctx.state_log;\n        puVar7 = PTR_LAB_0005332c;\n        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        match_ctx_clean(&mctx);\n        start = match_first;\n      }\n      start = start + iVar39;\n      match_first = start;\n      if ((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  rStack_154 = _REG_NOMATCH;\n  pprVar22 = mctx.state_log;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  rStack_154 = err;\n  pprVar22 = mctx.state_log;\n  if (err == _REG_ESPACE) goto LAB_0003423c;\n  uVar38 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_DAT_00053118 + 0x2114,PTR_DAT_00053118 + 0x2098,uVar38,PTR_DAT_00053118 + 0x2620);\n  uVar12 = extraout_v1;\n  preg = (regex_t *)&mctx;\nLAB_00035138:\n  uVar35 = 8;\n  goto LAB_0003412c;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "re_dfa_t *prVar3;" type_identifier (pointer_declarator "*prVar3" * identifier) ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "reg_errcode_t rVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "__re_long_size_t _Var13;" type_identifier identifier ;) (declaration "re_backref_cache_entry *prVar14;" type_identifier (pointer_declarator "*prVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "reg_errcode_t rVar18;" type_identifier identifier ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "Idx IVar21;" type_identifier identifier ;) (declaration "re_dfastate_t **pprVar22;" type_identifier (pointer_declarator "**pprVar22" * (pointer_declarator "*pprVar22" * identifier)) ;) (declaration "re_dfastate_t **pprVar23;" type_identifier (pointer_declarator "**pprVar23" * (pointer_declarator "*pprVar23" * identifier)) ;) (declaration "char cVar29;" primitive_type identifier ;) (declaration "Idx *pIVar24;" type_identifier (pointer_declarator "*pIVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "code *pcVar26;" type_identifier (pointer_declarator "*pcVar26" * identifier) ;) (declaration "regmatch_t *prVar27;" type_identifier (pointer_declarator "*prVar27" * identifier) ;) (declaration "regmatch_t *prVar28;" type_identifier (pointer_declarator "*prVar28" * identifier) ;) (declaration "bool bVar30;" primitive_type identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "reg_errcode_t *prVar31;" type_identifier (pointer_declarator "*prVar31" * identifier) ;) (declaration "code *pcVar32;" type_identifier (pointer_declarator "*pcVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "uint uVar34;" type_identifier identifier ;) (declaration "uint uVar35;" type_identifier identifier ;) (declaration "int iVar36;" primitive_type identifier ;) (declaration "re_dfastate_t *prVar37;" type_identifier (pointer_declarator "*prVar37" * identifier) ;) (declaration "re_node_set *src2;" type_identifier (pointer_declarator "*src2" * identifier) ;) (declaration "undefined4 uVar38;" type_identifier identifier ;) (declaration "int iVar39;" primitive_type identifier ;) (declaration "uchar *puVar40;" type_identifier (pointer_declarator "*puVar40" * identifier) ;) (declaration "re_dfastate_t *prVar41;" type_identifier (pointer_declarator "*prVar41" * identifier) ;) (declaration "int iVar42;" primitive_type identifier ;) (declaration "Idx **nodes_1;" type_identifier (pointer_declarator "**nodes_1" * (pointer_declarator "*nodes_1" * identifier)) ;) (declaration "undefined1 *puVar43;" type_identifier (pointer_declarator "*puVar43" * identifier) ;) (declaration "re_dfastate_t *prVar44;" type_identifier (pointer_declarator "*prVar44" * identifier) ;) (declaration "re_token_t *prVar45;" type_identifier (pointer_declarator "*prVar45" * identifier) ;) (declaration "re_dfa_t *prVar46;" type_identifier (pointer_declarator "*prVar46" * identifier) ;) (declaration "re_dfastate_t *prStack_160;" type_identifier (pointer_declarator "*prStack_160" * identifier) ;) (declaration "re_dfastate_t **pprStack_15c;" type_identifier (pointer_declarator "**pprStack_15c" * (pointer_declarator "*pprStack_15c" * identifier)) ;) (declaration "reg_errcode_t rStack_154;" type_identifier identifier ;) (declaration "char *pcStack_150;" primitive_type (pointer_declarator "*pcStack_150" * identifier) ;) (declaration "int *piStack_14c;" primitive_type (pointer_declarator "*piStack_14c" * identifier) ;) (declaration "undefined1 *puStack_140;" type_identifier (pointer_declarator "*puStack_140" * identifier) ;) (declaration "int iStack_f0;" primitive_type identifier ;) (declaration "Idx match_first;" type_identifier identifier ;) (declaration "reg_errcode_t err;" type_identifier identifier ;) (declaration "reg_errcode_t err_1;" type_identifier identifier ;) (declaration "re_node_set dest_nodes;" type_identifier identifier ;) (declaration "re_dfastate_t *prStack_c4;" type_identifier (pointer_declarator "*prStack_c4" * identifier) ;) (declaration "re_match_context_t mctx;" type_identifier identifier ;) (expression_statement "puVar8 = PTR___stack_chk_guard_000534f0;" (assignment_expression "puVar8 = PTR___stack_chk_guard_000534f0" identifier = identifier) ;) (expression_statement "iVar11 = *(int *)PTR___stack_chk_guard_000534f0;" (assignment_expression "iVar11 = *(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 "prVar46 = preg->buffer;" (assignment_expression "prVar46 = preg->buffer" identifier = (field_expression "preg->buffer" identifier -> field_identifier)) ;) (expression_statement "(*(code *)PTR_memset_00053430)(&mctx,0,0x88);" (call_expression "(*(code *)PTR_memset_00053430)(&mctx,0,0x88)" (parenthesized_expression "(*(code *)PTR_memset_00053430)" ( (pointer_expression "*(code *)PTR_memset_00053430" * (cast_expression "(code *)PTR_memset_00053430" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&mctx,0,0x88)" ( (pointer_expression "&mctx" & identifier) , number_literal , number_literal ))) ;) (expression_statement "pcStack_150 = preg->fastmap;" (assignment_expression "pcStack_150 = preg->fastmap" identifier = (field_expression "preg->fastmap" identifier -> field_identifier)) ;) (if_statement "if (pcStack_150 != (char *)0x0) {\n    if (((preg->field_0x1c & 0x10) == 0) || (start == last_start)) {\n      pcStack_150 = (char *)0x0;\n    }\n    else if ((char)preg->field_0x1c < '\0') {\n      pcStack_150 = (char *)0x0;\n    }\n  }" if (parenthesized_expression "(pcStack_150 != (char *)0x0)" ( (binary_expression "pcStack_150 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (((preg->field_0x1c & 0x10) == 0) || (start == last_start)) {\n      pcStack_150 = (char *)0x0;\n    }\n    else if ((char)preg->field_0x1c < '\0') {\n      pcStack_150 = (char *)0x0;\n    }\n  }" { (if_statement "if (((preg->field_0x1c & 0x10) == 0) || (start == last_start)) {\n      pcStack_150 = (char *)0x0;\n    }\n    else if ((char)preg->field_0x1c < '\0') {\n      pcStack_150 = (char *)0x0;\n    }" if (parenthesized_expression "(((preg->field_0x1c & 0x10) == 0) || (start == last_start))" ( (binary_expression "((preg->field_0x1c & 0x10) == 0) || (start == last_start)" (parenthesized_expression "((preg->field_0x1c & 0x10) == 0)" ( (binary_expression "(preg->field_0x1c & 0x10) == 0" (parenthesized_expression "(preg->field_0x1c & 0x10)" ( (binary_expression "preg->field_0x1c & 0x10" (field_expression "preg->field_0x1c" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "(start == last_start)" ( (binary_expression "start == last_start" identifier == identifier) ))) )) (compound_statement "{\n      pcStack_150 = (char *)0x0;\n    }" { (expression_statement "pcStack_150 = (char *)0x0;" (assignment_expression "pcStack_150 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if ((char)preg->field_0x1c < '\0') {\n      pcStack_150 = (char *)0x0;\n    }" else (if_statement "if ((char)preg->field_0x1c < '\0') {\n      pcStack_150 = (char *)0x0;\n    }" if (parenthesized_expression "((char)preg->field_0x1c < '\0')" ( (binary_expression "(char)preg->field_0x1c < '\0'" (cast_expression "(char)preg->field_0x1c" ( (type_descriptor "char" primitive_type) ) (field_expression "preg->field_0x1c" identifier -> field_identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcStack_150 = (char *)0x0;\n    }" { (expression_statement "pcStack_150 = (char *)0x0;" (assignment_expression "pcStack_150 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })))) })) (expression_statement "uVar12 = preg->re_nsub;" (assignment_expression "uVar12 = preg->re_nsub" identifier = (field_expression "preg->re_nsub" identifier -> field_identifier)) ;) (if_statement "if (uVar12 < nmatch) {\n    iStack_f0 = (nmatch - 1) - uVar12;\n    nmatch = nmatch + (uVar12 - (nmatch - 1));\n    _Var13 = preg->used;\n  }\n  else {\n    _Var13 = preg->used;\n    iStack_f0 = 0;\n  }" if (parenthesized_expression "(uVar12 < nmatch)" ( (binary_expression "uVar12 < nmatch" identifier < identifier) )) (compound_statement "{\n    iStack_f0 = (nmatch - 1) - uVar12;\n    nmatch = nmatch + (uVar12 - (nmatch - 1));\n    _Var13 = preg->used;\n  }" { (expression_statement "iStack_f0 = (nmatch - 1) - uVar12;" (assignment_expression "iStack_f0 = (nmatch - 1) - uVar12" identifier = (binary_expression "(nmatch - 1) - uVar12" (parenthesized_expression "(nmatch - 1)" ( (binary_expression "nmatch - 1" identifier - number_literal) )) - identifier)) ;) (expression_statement "nmatch = nmatch + (uVar12 - (nmatch - 1));" (assignment_expression "nmatch = nmatch + (uVar12 - (nmatch - 1))" identifier = (binary_expression "nmatch + (uVar12 - (nmatch - 1))" identifier + (parenthesized_expression "(uVar12 - (nmatch - 1))" ( (binary_expression "uVar12 - (nmatch - 1)" identifier - (parenthesized_expression "(nmatch - 1)" ( (binary_expression "nmatch - 1" identifier - number_literal) ))) )))) ;) (expression_statement "_Var13 = preg->used;" (assignment_expression "_Var13 = preg->used" identifier = (field_expression "preg->used" identifier -> field_identifier)) ;) }) (else_clause "else {\n    _Var13 = preg->used;\n    iStack_f0 = 0;\n  }" else (compound_statement "{\n    _Var13 = preg->used;\n    iStack_f0 = 0;\n  }" { (expression_statement "_Var13 = preg->used;" (assignment_expression "_Var13 = preg->used" identifier = (field_expression "preg->used" identifier -> field_identifier)) ;) (expression_statement "iStack_f0 = 0;" (assignment_expression "iStack_f0 = 0" identifier = number_literal) ;) }))) (expression_statement "mctx.dfa = prVar46;" (assignment_expression "mctx.dfa = prVar46" (field_expression "mctx.dfa" identifier . field_identifier) = identifier) ;) (if_statement "if ((((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)) ||\n      (prVar46->init_state_word == (re_dfastate_t *)0x0)) ||\n     ((prVar46->init_state_nl == (re_dfastate_t *)0x0 ||\n      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0)))) {\nLAB_000341d0:\n    rStack_154 = _REG_NOMATCH;\n    goto LAB_000341d4;\n  }" if (parenthesized_expression "((((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)) ||\n      (prVar46->init_state_word == (re_dfastate_t *)0x0)) ||\n     ((prVar46->init_state_nl == (re_dfastate_t *)0x0 ||\n      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0))))" ( (binary_expression "(((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)) ||\n      (prVar46->init_state_word == (re_dfastate_t *)0x0)) ||\n     ((prVar46->init_state_nl == (re_dfastate_t *)0x0 ||\n      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0)))" (parenthesized_expression "(((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)) ||\n      (prVar46->init_state_word == (re_dfastate_t *)0x0))" ( (binary_expression "((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)) ||\n      (prVar46->init_state_word == (re_dfastate_t *)0x0)" (parenthesized_expression "((_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0))" ( (binary_expression "(_Var13 == 0) || (prVar46->init_state == (re_dfastate_t *)0x0)" (parenthesized_expression "(_Var13 == 0)" ( (binary_expression "_Var13 == 0" identifier == number_literal) )) || (parenthesized_expression "(prVar46->init_state == (re_dfastate_t *)0x0)" ( (binary_expression "prVar46->init_state == (re_dfastate_t *)0x0" (field_expression "prVar46->init_state" identifier -> field_identifier) == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(prVar46->init_state_word == (re_dfastate_t *)0x0)" ( (binary_expression "prVar46->init_state_word == (re_dfastate_t *)0x0" (field_expression "prVar46->init_state_word" identifier -> field_identifier) == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "((prVar46->init_state_nl == (re_dfastate_t *)0x0 ||\n      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0)))" ( (parenthesized_expression "(prVar46->init_state_nl == (re_dfastate_t *)0x0 ||\n      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0))" ( (binary_expression "prVar46->init_state_nl == (re_dfastate_t *)0x0 ||\n      (prVar46->init_state_begbuf == (re_dfastate_t *)0x0)" (binary_expression "prVar46->init_state_nl == (re_dfastate_t *)0x0" (field_expression "prVar46->init_state_nl" identifier -> field_identifier) == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "(prVar46->init_state_begbuf == (re_dfastate_t *)0x0)" ( (binary_expression "prVar46->init_state_begbuf == (re_dfastate_t *)0x0" (field_expression "prVar46->init_state_begbuf" identifier -> field_identifier) == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) ))) )) (compound_statement "{\nLAB_000341d0:\n    rStack_154 = _REG_NOMATCH;\n    goto LAB_000341d4;\n  }" { (labeled_statement "LAB_000341d0:\n    rStack_154 = _REG_NOMATCH;" statement_identifier : (expression_statement "rStack_154 = _REG_NOMATCH;" (assignment_expression "rStack_154 = _REG_NOMATCH" identifier = identifier) ;)) (goto_statement "goto LAB_000341d4;" goto statement_identifier ;) })) (if_statement "if ((((prVar46->init_state->nodes).nelem == 0) && ((prVar46->init_state_word->nodes).nelem == 0))\n     && (((prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0)))) {\n    if (start == 0) {\n      last_start = 0;\n    }\n    else {\n      if (last_start != 0) goto LAB_000341d0;\n      start = 0;\n    }\n  }" if (parenthesized_expression "((((prVar46->init_state->nodes).nelem == 0) && ((prVar46->init_state_word->nodes).nelem == 0))\n     && (((prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0))))" ( (binary_expression "(((prVar46->init_state->nodes).nelem == 0) && ((prVar46->init_state_word->nodes).nelem == 0))\n     && (((prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0)))" (parenthesized_expression "(((prVar46->init_state->nodes).nelem == 0) && ((prVar46->init_state_word->nodes).nelem == 0))" ( (binary_expression "((prVar46->init_state->nodes).nelem == 0) && ((prVar46->init_state_word->nodes).nelem == 0)" (parenthesized_expression "((prVar46->init_state->nodes).nelem == 0)" ( (binary_expression "(prVar46->init_state->nodes).nelem == 0" (field_expression "(prVar46->init_state->nodes).nelem" (parenthesized_expression "(prVar46->init_state->nodes)" ( (field_expression "prVar46->init_state->nodes" (field_expression "prVar46->init_state" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == number_literal) )) && (parenthesized_expression "((prVar46->init_state_word->nodes).nelem == 0)" ( (binary_expression "(prVar46->init_state_word->nodes).nelem == 0" (field_expression "(prVar46->init_state_word->nodes).nelem" (parenthesized_expression "(prVar46->init_state_word->nodes)" ( (field_expression "prVar46->init_state_word->nodes" (field_expression "prVar46->init_state_word" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == number_literal) ))) )) && (parenthesized_expression "(((prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0)))" ( (parenthesized_expression "((prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0))" ( (binary_expression "(prVar46->init_state_nl->nodes).nelem == 0 || ((preg->field_0x1c & 1) == 0)" (binary_expression "(prVar46->init_state_nl->nodes).nelem == 0" (field_expression "(prVar46->init_state_nl->nodes).nelem" (parenthesized_expression "(prVar46->init_state_nl->nodes)" ( (field_expression "prVar46->init_state_nl->nodes" (field_expression "prVar46->init_state_nl" identifier -> field_identifier) -> field_identifier) )) . field_identifier) == number_literal) || (parenthesized_expression "((preg->field_0x1c & 1) == 0)" ( (binary_expression "(preg->field_0x1c & 1) == 0" (parenthesized_expression "(preg->field_0x1c & 1)" ( (binary_expression "preg->field_0x1c & 1" (field_expression "preg->field_0x1c" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n    if (start == 0) {\n      last_start = 0;\n    }\n    else {\n      if (last_start != 0) goto LAB_000341d0;\n      start = 0;\n    }\n  }" { (if_statement "if (start == 0) {\n      last_start = 0;\n    }\n    else {\n      if (last_start != 0) goto LAB_000341d0;\n      start = 0;\n    }" if (parenthesized_expression "(start == 0)" ( (binary_expression "start == 0" identifier == number_literal) )) (compound_statement "{\n      last_start = 0;\n    }" { (expression_statement "last_start = 0;" (assignment_expression "last_start = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (last_start != 0) goto LAB_000341d0;\n      start = 0;\n    }" else (compound_statement "{\n      if (last_start != 0) goto LAB_000341d0;\n      start = 0;\n    }" { (if_statement "if (last_start != 0) goto LAB_000341d0;" if (parenthesized_expression "(last_start != 0)" ( (binary_expression "last_start != 0" identifier != number_literal) )) (goto_statement "goto LAB_000341d0;" goto statement_identifier ;)) (expression_statement "start = 0;" (assignment_expression "start = 0" identifier = number_literal) ;) }))) })) (if_statement "if (nmatch == 0) {\n    bVar30 = prVar46->nbackref != 0;\n  }\n  else {\n    bVar30 = true;\n  }" if (parenthesized_expression "(nmatch == 0)" ( (binary_expression "nmatch == 0" identifier == number_literal) )) (compound_statement "{\n    bVar30 = prVar46->nbackref != 0;\n  }" { (expression_statement "bVar30 = prVar46->nbackref != 0;" (assignment_expression "bVar30 = prVar46->nbackref != 0" identifier = (binary_expression "prVar46->nbackref != 0" (field_expression "prVar46->nbackref" identifier -> field_identifier) != number_literal)) ;) }) (else_clause "else {\n    bVar30 = true;\n  }" else (compound_statement "{\n    bVar30 = true;\n  }" { (expression_statement "bVar30 = true;" (assignment_expression "bVar30 = true" identifier = true) ;) }))) (expression_statement "mctx.input.mb_cur_max = prVar46->mb_cur_max;" (assignment_expression "mctx.input.mb_cur_max = prVar46->mb_cur_max" (field_expression "mctx.input.mb_cur_max" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (field_expression "prVar46->mb_cur_max" identifier -> field_identifier)) ;) (expression_statement "iVar39 = prVar46->nodes_len + 1;" (assignment_expression "iVar39 = prVar46->nodes_len + 1" identifier = (binary_expression "prVar46->nodes_len + 1" (field_expression "prVar46->nodes_len" identifier -> field_identifier) + number_literal)) ;) (expression_statement "puVar40 = preg->translate;" (assignment_expression "puVar40 = preg->translate" identifier = (field_expression "preg->translate" identifier -> field_identifier)) ;) (if_statement "if (iVar39 < mctx.input.mb_cur_max) {\n    iVar39 = mctx.input.mb_cur_max;\n  }" if (parenthesized_expression "(iVar39 < mctx.input.mb_cur_max)" ( (binary_expression "iVar39 < mctx.input.mb_cur_max" identifier < (field_expression "mctx.input.mb_cur_max" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) )) (compound_statement "{\n    iVar39 = mctx.input.mb_cur_max;\n  }" { (expression_statement "iVar39 = mctx.input.mb_cur_max;" (assignment_expression "iVar39 = mctx.input.mb_cur_max" identifier = (field_expression "mctx.input.mb_cur_max" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ;) })) (expression_statement "mctx.input.icase = (uchar)((preg->syntax << 9) >> 0x1f);" (assignment_expression "mctx.input.icase = (uchar)((preg->syntax << 9) >> 0x1f)" (field_expression "mctx.input.icase" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (call_expression "(uchar)((preg->syntax << 9) >> 0x1f)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((preg->syntax << 9) >> 0x1f)" ( (binary_expression "(preg->syntax << 9) >> 0x1f" (parenthesized_expression "(preg->syntax << 9)" ( (binary_expression "preg->syntax << 9" (field_expression "preg->syntax" identifier -> field_identifier) << number_literal) )) >> number_literal) )))) ;) (expression_statement "mctx.input.mbs_allocated = 1;" (assignment_expression "mctx.input.mbs_allocated = 1" (field_expression "mctx.input.mbs_allocated" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = number_literal) ;) (if_statement "if (puVar40 == (uchar *)0x0) {\n    mctx.input.mbs_allocated = mctx.input.icase;\n  }" if (parenthesized_expression "(puVar40 == (uchar *)0x0)" ( (binary_expression "puVar40 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    mctx.input.mbs_allocated = mctx.input.icase;\n  }" { (expression_statement "mctx.input.mbs_allocated = mctx.input.icase;" (assignment_expression "mctx.input.mbs_allocated = mctx.input.icase" (field_expression "mctx.input.mbs_allocated" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (field_expression "mctx.input.icase" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ;) })) (expression_statement "iVar42 = length + 1;" (assignment_expression "iVar42 = length + 1" identifier = (binary_expression "length + 1" identifier + number_literal)) ;) (if_statement "if (iVar39 <= length + 1) {\n    iVar42 = iVar39;\n  }" if (parenthesized_expression "(iVar39 <= length + 1)" ( (binary_expression "iVar39 <= length + 1" identifier <= (binary_expression "length + 1" identifier + number_literal)) )) (compound_statement "{\n    iVar42 = iVar39;\n  }" { (expression_statement "iVar42 = iVar39;" (assignment_expression "iVar42 = iVar39" identifier = identifier) ;) })) (expression_statement "mctx.input.is_utf8 = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 2) >> 0x1f);" (assignment_expression "mctx.input.is_utf8 = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 2) >> 0x1f)" (field_expression "mctx.input.is_utf8" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (call_expression "(uchar)((uint)(*(int *)&prVar46->field_0x58 << 2) >> 0x1f)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)(*(int *)&prVar46->field_0x58 << 2) >> 0x1f)" ( (binary_expression "(uint)(*(int *)&prVar46->field_0x58 << 2) >> 0x1f" (call_expression "(uint)(*(int *)&prVar46->field_0x58 << 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)&prVar46->field_0x58 << 2)" ( (binary_expression "*(int *)&prVar46->field_0x58 << 2" (pointer_expression "*(int *)&prVar46->field_0x58" * (cast_expression "(int *)&prVar46->field_0x58" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar46->field_0x58" & (field_expression "prVar46->field_0x58" identifier -> field_identifier)))) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "mctx.input.map_notascii = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 3) >> 0x1f);" (assignment_expression "mctx.input.map_notascii = (uchar)((uint)(*(int *)&prVar46->field_0x58 << 3) >> 0x1f)" (field_expression "mctx.input.map_notascii" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (call_expression "(uchar)((uint)(*(int *)&prVar46->field_0x58 << 3) >> 0x1f)" (parenthesized_expression "(uchar)" ( identifier )) (argument_list "((uint)(*(int *)&prVar46->field_0x58 << 3) >> 0x1f)" ( (binary_expression "(uint)(*(int *)&prVar46->field_0x58 << 3) >> 0x1f" (call_expression "(uint)(*(int *)&prVar46->field_0x58 << 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)&prVar46->field_0x58 << 3)" ( (binary_expression "*(int *)&prVar46->field_0x58 << 3" (pointer_expression "*(int *)&prVar46->field_0x58" * (cast_expression "(int *)&prVar46->field_0x58" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar46->field_0x58" & (field_expression "prVar46->field_0x58" identifier -> field_identifier)))) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "mctx.input.raw_mbs = (uchar *)string;" (assignment_expression "mctx.input.raw_mbs = (uchar *)string" (field_expression "mctx.input.raw_mbs" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (cast_expression "(uchar *)string" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "mctx.input.raw_len = length;" (assignment_expression "mctx.input.raw_len = length" (field_expression "mctx.input.raw_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "mctx.input.len = length;" (assignment_expression "mctx.input.len = length" (field_expression "mctx.input.len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "mctx.input.raw_stop = length;" (assignment_expression "mctx.input.raw_stop = length" (field_expression "mctx.input.raw_stop" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "mctx.input.stop = length;" (assignment_expression "mctx.input.stop = length" (field_expression "mctx.input.stop" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "mctx.input.trans = puVar40;" (assignment_expression "mctx.input.trans = puVar40" (field_expression "mctx.input.trans" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "rStack_154 = re_string_realloc_buffers(&mctx.input,iVar42);" (assignment_expression "rStack_154 = re_string_realloc_buffers(&mctx.input,iVar42)" identifier = (call_expression "re_string_realloc_buffers(&mctx.input,iVar42)" identifier (argument_list "(&mctx.input,iVar42)" ( (pointer_expression "&mctx.input" & (field_expression "mctx.input" identifier . field_identifier)) , identifier )))) ;) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (if_statement "if (rStack_154 != _REG_NOERROR) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(pprVar22);\n      if (prVar46->nbackref != 0) {\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }\nLAB_00034250:\n      re_string_destruct(&mctx.input);\nLAB_000341d4:\n      if (iVar11 == *(int *)puVar8) break;\n      rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      pprVar22 = mctx.state_log;\n    }\n    return rStack_154;\n  }" if (parenthesized_expression "(rStack_154 != _REG_NOERROR)" ( (binary_expression "rStack_154 != _REG_NOERROR" identifier != identifier) )) (compound_statement "{\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(pprVar22);\n      if (prVar46->nbackref != 0) {\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }\nLAB_00034250:\n      re_string_destruct(&mctx.input);\nLAB_000341d4:\n      if (iVar11 == *(int *)puVar8) break;\n      rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      pprVar22 = mctx.state_log;\n    }\n    return rStack_154;\n  }" { (labeled_statement "LAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(pprVar22);\n      if (prVar46->nbackref != 0) {\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }\nLAB_00034250:\n      re_string_destruct(&mctx.input);\nLAB_000341d4:\n      if (iVar11 == *(int *)puVar8) break;\n      rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      pprVar22 = mctx.state_log;\n    }" statement_identifier : (while_statement "while( true ) {\n      (*(code *)PTR_free_000534fc)(pprVar22);\n      if (prVar46->nbackref != 0) {\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }\nLAB_00034250:\n      re_string_destruct(&mctx.input);\nLAB_000341d4:\n      if (iVar11 == *(int *)puVar8) break;\n      rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      pprVar22 = mctx.state_log;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      (*(code *)PTR_free_000534fc)(pprVar22);\n      if (prVar46->nbackref != 0) {\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }\nLAB_00034250:\n      re_string_destruct(&mctx.input);\nLAB_000341d4:\n      if (iVar11 == *(int *)puVar8) break;\n      rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      pprVar22 = mctx.state_log;\n    }" { (expression_statement "(*(code *)PTR_free_000534fc)(pprVar22);" (call_expression "(*(code *)PTR_free_000534fc)(pprVar22)" (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 "(pprVar22)" ( identifier ))) ;) (if_statement "if (prVar46->nbackref != 0) {\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }" if (parenthesized_expression "(prVar46->nbackref != 0)" ( (binary_expression "prVar46->nbackref != 0" (field_expression "prVar46->nbackref" identifier -> field_identifier) != number_literal) )) (compound_statement "{\nLAB_00034290:\n        match_ctx_clean(&mctx);\n        (*(code *)PTR_free_000534fc)(mctx.sub_tops);\n        (*(code *)PTR_free_000534fc)(mctx.bkref_ents);\n      }" { (labeled_statement "LAB_00034290:\n        match_ctx_clean(&mctx);" statement_identifier : (expression_statement "match_ctx_clean(&mctx);" (call_expression "match_ctx_clean(&mctx)" identifier (argument_list "(&mctx)" ( (pointer_expression "&mctx" & identifier) ))) ;)) (expression_statement "(*(code *)PTR_free_000534fc)(mctx.sub_tops);" (call_expression "(*(code *)PTR_free_000534fc)(mctx.sub_tops)" (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 "(mctx.sub_tops)" ( (field_expression "mctx.sub_tops" identifier . field_identifier) ))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(mctx.bkref_ents);" (call_expression "(*(code *)PTR_free_000534fc)(mctx.bkref_ents)" (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 "(mctx.bkref_ents)" ( (field_expression "mctx.bkref_ents" identifier . field_identifier) ))) ;) })) (labeled_statement "LAB_00034250:\n      re_string_destruct(&mctx.input);" statement_identifier : (expression_statement "re_string_destruct(&mctx.input);" (call_expression "re_string_destruct(&mctx.input)" identifier (argument_list "(&mctx.input)" ( (pointer_expression "&mctx.input" & (field_expression "mctx.input" identifier . field_identifier)) ))) ;)) (labeled_statement "LAB_000341d4:\n      if (iVar11 == *(int *)puVar8) break;" statement_identifier : (if_statement "if (iVar11 == *(int *)puVar8) break;" if (parenthesized_expression "(iVar11 == *(int *)puVar8)" ( (binary_expression "iVar11 == *(int *)puVar8" identifier == (pointer_expression "*(int *)puVar8" * (cast_expression "(int *)puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (break_statement "break;" break ;))) (expression_statement "rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)();" (assignment_expression "rStack_154 = (*(code *)PTR___stack_chk_fail_000534d4)()" identifier = (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 "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) }))) (return_statement "return rStack_154;" return identifier ;) })) (expression_statement "mctx.input.word_char = prVar46->word_char;" (assignment_expression "mctx.input.word_char = prVar46->word_char" (field_expression "mctx.input.word_char" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (field_expression "prVar46->word_char" identifier -> field_identifier)) ;) (expression_statement "mctx.input.word_ops_used = (byte)((uint)(*(int *)&prVar46->field_0x58 << 4) >> 0x1f);" (assignment_expression "mctx.input.word_ops_used = (byte)((uint)(*(int *)&prVar46->field_0x58 << 4) >> 0x1f)" (field_expression "mctx.input.word_ops_used" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (call_expression "(byte)((uint)(*(int *)&prVar46->field_0x58 << 4) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(*(int *)&prVar46->field_0x58 << 4) >> 0x1f)" ( (binary_expression "(uint)(*(int *)&prVar46->field_0x58 << 4) >> 0x1f" (call_expression "(uint)(*(int *)&prVar46->field_0x58 << 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)&prVar46->field_0x58 << 4)" ( (binary_expression "*(int *)&prVar46->field_0x58 << 4" (pointer_expression "*(int *)&prVar46->field_0x58" * (cast_expression "(int *)&prVar46->field_0x58" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar46->field_0x58" & (field_expression "prVar46->field_0x58" identifier -> field_identifier)))) << number_literal) ))) >> number_literal) )))) ;) (if_statement "if ((mctx.input.mbs_allocated != '\0') ||\n     (mctx.input.mbs = (uchar *)string, mctx.input.valid_len = length, 1 < prVar46->mb_cur_max)) {\n    mctx.input.valid_len = 0;\n  }" if (parenthesized_expression "((mctx.input.mbs_allocated != '\0') ||\n     (mctx.input.mbs = (uchar *)string, mctx.input.valid_len = length, 1 < prVar46->mb_cur_max))" ( (binary_expression "(mctx.input.mbs_allocated != '\0') ||\n     (mctx.input.mbs = (uchar *)string, mctx.input.valid_len = length, 1 < prVar46->mb_cur_max)" (parenthesized_expression "(mctx.input.mbs_allocated != '\0')" ( (binary_expression "mctx.input.mbs_allocated != '\0'" (field_expression "mctx.input.mbs_allocated" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(mctx.input.mbs = (uchar *)string, mctx.input.valid_len = length, 1 < prVar46->mb_cur_max)" ( (comma_expression "mctx.input.mbs = (uchar *)string, mctx.input.valid_len = length, 1 < prVar46->mb_cur_max" (assignment_expression "mctx.input.mbs = (uchar *)string" (field_expression "mctx.input.mbs" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (cast_expression "(uchar *)string" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "mctx.input.valid_len = length, 1 < prVar46->mb_cur_max" (assignment_expression "mctx.input.valid_len = length" (field_expression "mctx.input.valid_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) , (binary_expression "1 < prVar46->mb_cur_max" number_literal < (field_expression "prVar46->mb_cur_max" identifier -> field_identifier)))) ))) )) (compound_statement "{\n    mctx.input.valid_len = 0;\n  }" { (expression_statement "mctx.input.valid_len = 0;" (assignment_expression "mctx.input.valid_len = 0" (field_expression "mctx.input.valid_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = number_literal) ;) })) (expression_statement "mctx.input.stop = stop;" (assignment_expression "mctx.input.stop = stop" (field_expression "mctx.input.stop" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "mctx.input.raw_stop = stop;" (assignment_expression "mctx.input.raw_stop = stop" (field_expression "mctx.input.raw_stop" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "mctx.input.valid_raw_len = mctx.input.valid_len;" (assignment_expression "mctx.input.valid_raw_len = mctx.input.valid_len" (field_expression "mctx.input.valid_raw_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (field_expression "mctx.input.valid_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ;) (expression_statement "mctx.input.newline_anchor = (byte)((uint)(*(int *)&preg->field_0x1c << 7) >> 0x1f);" (assignment_expression "mctx.input.newline_anchor = (byte)((uint)(*(int *)&preg->field_0x1c << 7) >> 0x1f)" (field_expression "mctx.input.newline_anchor" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (call_expression "(byte)((uint)(*(int *)&preg->field_0x1c << 7) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(*(int *)&preg->field_0x1c << 7) >> 0x1f)" ( (binary_expression "(uint)(*(int *)&preg->field_0x1c << 7) >> 0x1f" (call_expression "(uint)(*(int *)&preg->field_0x1c << 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)&preg->field_0x1c << 7)" ( (binary_expression "*(int *)&preg->field_0x1c << 7" (pointer_expression "*(int *)&preg->field_0x1c" * (cast_expression "(int *)&preg->field_0x1c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&preg->field_0x1c" & (field_expression "preg->field_0x1c" identifier -> field_identifier)))) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "iVar39 = prVar46->nbackref;" (assignment_expression "iVar39 = prVar46->nbackref" identifier = (field_expression "prVar46->nbackref" identifier -> field_identifier)) ;) (expression_statement "iVar42 = iVar39 * 2;" (assignment_expression "iVar42 = iVar39 * 2" identifier = (binary_expression "iVar39 * 2" identifier * number_literal)) ;) (expression_statement "mctx.eflags = eflags;" (assignment_expression "mctx.eflags = eflags" (field_expression "mctx.eflags" identifier . field_identifier) = identifier) ;) (expression_statement "mctx.match_last = -1;" (assignment_expression "mctx.match_last = -1" (field_expression "mctx.match_last" identifier . field_identifier) = number_literal) ;) (if_statement "if (0 < iVar42) {\n    if (0xccccccc < iVar42) goto LAB_00034274;\n    prVar14 = (re_backref_cache_entry *)(*(code *)PTR_malloc_00053474)(iVar39 * 0x28);\n    mctx.bkref_ents = prVar14;\n    mctx.sub_tops = (re_sub_match_top_t **)(*(code *)PTR_malloc_00053474)(iVar39 * 8);\n    if ((prVar14 == (re_backref_cache_entry *)0x0) || (mctx.sub_tops == (re_sub_match_top_t **)0x0))\n    goto LAB_00034274;\n  }" if (parenthesized_expression "(0 < iVar42)" ( (binary_expression "0 < iVar42" number_literal < identifier) )) (compound_statement "{\n    if (0xccccccc < iVar42) goto LAB_00034274;\n    prVar14 = (re_backref_cache_entry *)(*(code *)PTR_malloc_00053474)(iVar39 * 0x28);\n    mctx.bkref_ents = prVar14;\n    mctx.sub_tops = (re_sub_match_top_t **)(*(code *)PTR_malloc_00053474)(iVar39 * 8);\n    if ((prVar14 == (re_backref_cache_entry *)0x0) || (mctx.sub_tops == (re_sub_match_top_t **)0x0))\n    goto LAB_00034274;\n  }" { (if_statement "if (0xccccccc < iVar42) goto LAB_00034274;" if (parenthesized_expression "(0xccccccc < iVar42)" ( (binary_expression "0xccccccc < iVar42" number_literal < identifier) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (expression_statement "prVar14 = (re_backref_cache_entry *)(*(code *)PTR_malloc_00053474)(iVar39 * 0x28);" (assignment_expression "prVar14 = (re_backref_cache_entry *)(*(code *)PTR_malloc_00053474)(iVar39 * 0x28)" identifier = (cast_expression "(re_backref_cache_entry *)(*(code *)PTR_malloc_00053474)(iVar39 * 0x28)" ( (type_descriptor "re_backref_cache_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(iVar39 * 0x28)" (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 "(iVar39 * 0x28)" ( (binary_expression "iVar39 * 0x28" identifier * number_literal) ))))) ;) (expression_statement "mctx.bkref_ents = prVar14;" (assignment_expression "mctx.bkref_ents = prVar14" (field_expression "mctx.bkref_ents" identifier . field_identifier) = identifier) ;) (expression_statement "mctx.sub_tops = (re_sub_match_top_t **)(*(code *)PTR_malloc_00053474)(iVar39 * 8);" (assignment_expression "mctx.sub_tops = (re_sub_match_top_t **)(*(code *)PTR_malloc_00053474)(iVar39 * 8)" (field_expression "mctx.sub_tops" identifier . field_identifier) = (cast_expression "(re_sub_match_top_t **)(*(code *)PTR_malloc_00053474)(iVar39 * 8)" ( (type_descriptor "re_sub_match_top_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(*(code *)PTR_malloc_00053474)(iVar39 * 8)" (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 "(iVar39 * 8)" ( (binary_expression "iVar39 * 8" identifier * number_literal) ))))) ;) (if_statement "if ((prVar14 == (re_backref_cache_entry *)0x0) || (mctx.sub_tops == (re_sub_match_top_t **)0x0))\n    goto LAB_00034274;" if (parenthesized_expression "((prVar14 == (re_backref_cache_entry *)0x0) || (mctx.sub_tops == (re_sub_match_top_t **)0x0))" ( (binary_expression "(prVar14 == (re_backref_cache_entry *)0x0) || (mctx.sub_tops == (re_sub_match_top_t **)0x0)" (parenthesized_expression "(prVar14 == (re_backref_cache_entry *)0x0)" ( (binary_expression "prVar14 == (re_backref_cache_entry *)0x0" identifier == (cast_expression "(re_backref_cache_entry *)0x0" ( (type_descriptor "re_backref_cache_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(mctx.sub_tops == (re_sub_match_top_t **)0x0)" ( (binary_expression "mctx.sub_tops == (re_sub_match_top_t **)0x0" (field_expression "mctx.sub_tops" identifier . field_identifier) == (cast_expression "(re_sub_match_top_t **)0x0" ( (type_descriptor "re_sub_match_top_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ))) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) })) (expression_statement "mctx.abkref_ents = iVar42;" (assignment_expression "mctx.abkref_ents = iVar42" (field_expression "mctx.abkref_ents" identifier . field_identifier) = identifier) ;) (expression_statement "mctx.asub_tops = iVar42;" (assignment_expression "mctx.asub_tops = iVar42" (field_expression "mctx.asub_tops" identifier . field_identifier) = identifier) ;) (expression_statement "bVar1 = 1 < nmatch;" (assignment_expression "bVar1 = 1 < nmatch" identifier = (binary_expression "1 < nmatch" number_literal < identifier)) ;) (expression_statement "mctx.max_mb_elem_len = 1;" (assignment_expression "mctx.max_mb_elem_len = 1" (field_expression "mctx.max_mb_elem_len" identifier . field_identifier) = number_literal) ;) (if_statement "if ((bVar1) || ((prVar46->field_0x58 & 0x40) != 0)) {\n    if (0x3ffffffe < (uint)mctx.input.bufs_len) {\nLAB_00034274:\n      rStack_154 = _REG_ESPACE;\n      (*(code *)PTR_free_000534fc)(mctx.state_log);\n      if (prVar46->nbackref == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    mctx.state_log = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 4)\n    ;\n    pprVar22 = mctx.state_log;\n    if (mctx.state_log == (re_dfastate_t **)0x0) {\nLAB_00034230:\n      rStack_154 = _REG_ESPACE;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    mctx.state_log = (re_dfastate_t **)0x0;\n  }" if (parenthesized_expression "((bVar1) || ((prVar46->field_0x58 & 0x40) != 0))" ( (binary_expression "(bVar1) || ((prVar46->field_0x58 & 0x40) != 0)" (parenthesized_expression "(bVar1)" ( identifier )) || (parenthesized_expression "((prVar46->field_0x58 & 0x40) != 0)" ( (binary_expression "(prVar46->field_0x58 & 0x40) != 0" (parenthesized_expression "(prVar46->field_0x58 & 0x40)" ( (binary_expression "prVar46->field_0x58 & 0x40" (field_expression "prVar46->field_0x58" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    if (0x3ffffffe < (uint)mctx.input.bufs_len) {\nLAB_00034274:\n      rStack_154 = _REG_ESPACE;\n      (*(code *)PTR_free_000534fc)(mctx.state_log);\n      if (prVar46->nbackref == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    mctx.state_log = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 4)\n    ;\n    pprVar22 = mctx.state_log;\n    if (mctx.state_log == (re_dfastate_t **)0x0) {\nLAB_00034230:\n      rStack_154 = _REG_ESPACE;\n      goto LAB_0003423c;\n    }\n  }" { (if_statement "if (0x3ffffffe < (uint)mctx.input.bufs_len) {\nLAB_00034274:\n      rStack_154 = _REG_ESPACE;\n      (*(code *)PTR_free_000534fc)(mctx.state_log);\n      if (prVar46->nbackref == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }" if (parenthesized_expression "(0x3ffffffe < (uint)mctx.input.bufs_len)" ( (binary_expression "0x3ffffffe < (uint)mctx.input.bufs_len" number_literal < (cast_expression "(uint)mctx.input.bufs_len" ( (type_descriptor "uint" type_identifier) ) (field_expression "mctx.input.bufs_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) )) (compound_statement "{\nLAB_00034274:\n      rStack_154 = _REG_ESPACE;\n      (*(code *)PTR_free_000534fc)(mctx.state_log);\n      if (prVar46->nbackref == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }" { (labeled_statement "LAB_00034274:\n      rStack_154 = _REG_ESPACE;" statement_identifier : (expression_statement "rStack_154 = _REG_ESPACE;" (assignment_expression "rStack_154 = _REG_ESPACE" identifier = identifier) ;)) (expression_statement "(*(code *)PTR_free_000534fc)(mctx.state_log);" (call_expression "(*(code *)PTR_free_000534fc)(mctx.state_log)" (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 "(mctx.state_log)" ( (field_expression "mctx.state_log" identifier . field_identifier) ))) ;) (if_statement "if (prVar46->nbackref == 0) goto LAB_00034250;" if (parenthesized_expression "(prVar46->nbackref == 0)" ( (binary_expression "prVar46->nbackref == 0" (field_expression "prVar46->nbackref" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_00034250;" goto statement_identifier ;)) (goto_statement "goto LAB_00034290;" goto statement_identifier ;) })) (expression_statement "mctx.state_log = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 4)\n    ;" (assignment_expression "mctx.state_log = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 4)" (field_expression "mctx.state_log" identifier . field_identifier) = (cast_expression "(re_dfastate_t **)(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 4)" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(*(code *)PTR_malloc_00053474)((mctx.input.bufs_len + 1) * 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 "((mctx.input.bufs_len + 1) * 4)" ( (binary_expression "(mctx.input.bufs_len + 1) * 4" (parenthesized_expression "(mctx.input.bufs_len + 1)" ( (binary_expression "mctx.input.bufs_len + 1" (field_expression "mctx.input.bufs_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) + number_literal) )) * number_literal) ))))) ;) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (if_statement "if (mctx.state_log == (re_dfastate_t **)0x0) {\nLAB_00034230:\n      rStack_154 = _REG_ESPACE;\n      goto LAB_0003423c;\n    }" if (parenthesized_expression "(mctx.state_log == (re_dfastate_t **)0x0)" ( (binary_expression "mctx.state_log == (re_dfastate_t **)0x0" (field_expression "mctx.state_log" identifier . field_identifier) == (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\nLAB_00034230:\n      rStack_154 = _REG_ESPACE;\n      goto LAB_0003423c;\n    }" { (labeled_statement "LAB_00034230:\n      rStack_154 = _REG_ESPACE;" statement_identifier : (expression_statement "rStack_154 = _REG_ESPACE;" (assignment_expression "rStack_154 = _REG_ESPACE" identifier = identifier) ;)) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) }) (else_clause "else {\n    mctx.state_log = (re_dfastate_t **)0x0;\n  }" else (compound_statement "{\n    mctx.state_log = (re_dfastate_t **)0x0;\n  }" { (expression_statement "mctx.state_log = (re_dfastate_t **)0x0;" (assignment_expression "mctx.state_log = (re_dfastate_t **)0x0" (field_expression "mctx.state_log" identifier . field_identifier) = (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) }))) (expression_statement "iVar42 = prVar46->mb_cur_max;" (assignment_expression "iVar42 = prVar46->mb_cur_max" identifier = (field_expression "prVar46->mb_cur_max" identifier -> field_identifier)) ;) (expression_statement "iVar39 = -1;" (assignment_expression "iVar39 = -1" identifier = number_literal) ;) (expression_statement "match_first = start;" (assignment_expression "match_first = start" identifier = identifier) ;) (expression_statement "mctx.input.tip_context = 6;" (assignment_expression "mctx.input.tip_context = 6" (field_expression "mctx.input.tip_context" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = number_literal) ;) (if_statement "if ((eflags & 1U) != 0) {\n    mctx.input.tip_context = 4;\n  }" if (parenthesized_expression "((eflags & 1U) != 0)" ( (binary_expression "(eflags & 1U) != 0" (parenthesized_expression "(eflags & 1U)" ( (binary_expression "eflags & 1U" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    mctx.input.tip_context = 4;\n  }" { (expression_statement "mctx.input.tip_context = 4;" (assignment_expression "mctx.input.tip_context = 4" (field_expression "mctx.input.tip_context" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = number_literal) ;) })) (expression_statement "uVar12 = (uint)(last_start < start);" (assignment_expression "uVar12 = (uint)(last_start < start)" identifier = (call_expression "(uint)(last_start < start)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(last_start < start)" ( (binary_expression "last_start < start" identifier < identifier) )))) ;) (expression_statement "prVar31 = (reg_errcode_t *)last_start;" (assignment_expression "prVar31 = (reg_errcode_t *)last_start" identifier = (cast_expression "(reg_errcode_t *)last_start" ( (type_descriptor "reg_errcode_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (uVar12 == 0) {\n    iVar39 = 1;\n    prVar31 = (reg_errcode_t *)start;\n  }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar39 = 1;\n    prVar31 = (reg_errcode_t *)start;\n  }" { (expression_statement "iVar39 = 1;" (assignment_expression "iVar39 = 1" identifier = number_literal) ;) (expression_statement "prVar31 = (reg_errcode_t *)start;" (assignment_expression "prVar31 = (reg_errcode_t *)start" identifier = (cast_expression "(reg_errcode_t *)start" ( (type_descriptor "reg_errcode_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (if_statement "if (last_start <= start) {\n    last_start = start;\n  }" if (parenthesized_expression "(last_start <= start)" ( (binary_expression "last_start <= start" identifier <= identifier) )) (compound_statement "{\n    last_start = start;\n  }" { (expression_statement "last_start = start;" (assignment_expression "last_start = start" identifier = identifier) ;) })) (if_statement "if (pcStack_150 == (char *)0x0) goto LAB_00035138;" if (parenthesized_expression "(pcStack_150 == (char *)0x0)" ( (binary_expression "pcStack_150 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00035138;" goto statement_identifier ;)) (expression_statement "uVar15 = 4;" (assignment_expression "uVar15 = 4" identifier = number_literal) ;) (if_statement "if (((iVar42 != 1) && (uVar15 = 0, -1 < (int)(preg->syntax << 9))) &&\n     (uVar15 = 4, puVar40 != (uchar *)0x0)) {\n    uVar15 = 0;\n  }" if (parenthesized_expression "(((iVar42 != 1) && (uVar15 = 0, -1 < (int)(preg->syntax << 9))) &&\n     (uVar15 = 4, puVar40 != (uchar *)0x0))" ( (binary_expression "((iVar42 != 1) && (uVar15 = 0, -1 < (int)(preg->syntax << 9))) &&\n     (uVar15 = 4, puVar40 != (uchar *)0x0)" (parenthesized_expression "((iVar42 != 1) && (uVar15 = 0, -1 < (int)(preg->syntax << 9)))" ( (binary_expression "(iVar42 != 1) && (uVar15 = 0, -1 < (int)(preg->syntax << 9))" (parenthesized_expression "(iVar42 != 1)" ( (binary_expression "iVar42 != 1" identifier != number_literal) )) && (parenthesized_expression "(uVar15 = 0, -1 < (int)(preg->syntax << 9))" ( (comma_expression "uVar15 = 0, -1 < (int)(preg->syntax << 9)" (assignment_expression "uVar15 = 0" identifier = number_literal) , (binary_expression "-1 < (int)(preg->syntax << 9)" number_literal < (cast_expression "(int)(preg->syntax << 9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(preg->syntax << 9)" ( (binary_expression "preg->syntax << 9" (field_expression "preg->syntax" identifier -> field_identifier) << number_literal) ))))) ))) )) && (parenthesized_expression "(uVar15 = 4, puVar40 != (uchar *)0x0)" ( (comma_expression "uVar15 = 4, puVar40 != (uchar *)0x0" (assignment_expression "uVar15 = 4" identifier = number_literal) , (binary_expression "puVar40 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    uVar15 = 0;\n  }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) })) (expression_statement "uVar35 = 2;" (assignment_expression "uVar35 = 2" identifier = number_literal) ;) (if_statement "if (uVar12 != 0) {\n    uVar35 = 0;\n  }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar35 = 0;\n  }" { (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" identifier = number_literal) ;) })) (expression_statement "uVar35 = puVar40 != (uchar *)0x0 | uVar15 | uVar35;" (assignment_expression "uVar35 = puVar40 != (uchar *)0x0 | uVar15 | uVar35" identifier = (binary_expression "puVar40 != (uchar *)0x0 | uVar15 | uVar35" (binary_expression "puVar40 != (uchar *)0x0 | uVar15" (binary_expression "puVar40 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) | identifier) | identifier)) ;) (labeled_statement "LAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;" statement_identifier : (expression_statement "puVar6 = PTR_LAB_0005332c;" (assignment_expression "puVar6 = PTR_LAB_0005332c" identifier = identifier) ;)) (if_statement "if (((int)prVar31 <= start) && (start <= last_start)) {\n    piVar16 = &match_first;\n    if (uVar12 != 0) {\n      piVar16 = (int *)0x0;\n    }\n    piVar17 = (int *)(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4);\n    pcVar32 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = mctx.input.raw_mbs_idx;\n    do {\n      if (uVar35 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        rVar18 = (*(code *)(&_gp + *piVar17))();\n        return rVar18;\n      }\n      mctx.input.raw_mbs_idx = iVar33;\n      while( true ) {\n        uVar12 = start - iVar33;\n        if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }\n        if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }\n        if (cVar29 != '\0') break;\n        start = start + iVar39;\n        match_first = start;\n        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;\n      }\n      rVar18 = re_string_reconstruct(&mctx.input,start,eflags);\n      prVar3 = mctx.dfa;\n      prVar37 = (re_dfastate_t *)mctx.input.cur_idx;\n      pprVar22 = mctx.state_log;\n      rStack_154 = rVar18;\n      if (rVar18 != _REG_NOERROR) goto LAB_0003423c;\n      if (((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)) {\n        mctx.max_mb_elem_len = 0;\n        mctx.nbkref_ents = 0;\n        prVar44 = (mctx.dfa)->init_state;\n        puStack_140 = (undefined1 *)mctx.input.cur_idx;\n        mctx.state_log_top = 0;\n        err = _REG_NOERROR;\n        if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;\n        if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        pprVar22 = mctx.state_log;\n        puVar7 = PTR_LAB_0005332c;\n        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        match_ctx_clean(&mctx);\n        start = match_first;\n      }\n      start = start + iVar39;\n      match_first = start;\n      if ((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)) break;\n    } while( true );\n  }" if (parenthesized_expression "(((int)prVar31 <= start) && (start <= last_start))" ( (binary_expression "((int)prVar31 <= start) && (start <= last_start)" (parenthesized_expression "((int)prVar31 <= start)" ( (binary_expression "(int)prVar31 <= start" (cast_expression "(int)prVar31" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) && (parenthesized_expression "(start <= last_start)" ( (binary_expression "start <= last_start" identifier <= identifier) ))) )) (compound_statement "{\n    piVar16 = &match_first;\n    if (uVar12 != 0) {\n      piVar16 = (int *)0x0;\n    }\n    piVar17 = (int *)(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4);\n    pcVar32 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = mctx.input.raw_mbs_idx;\n    do {\n      if (uVar35 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        rVar18 = (*(code *)(&_gp + *piVar17))();\n        return rVar18;\n      }\n      mctx.input.raw_mbs_idx = iVar33;\n      while( true ) {\n        uVar12 = start - iVar33;\n        if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }\n        if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }\n        if (cVar29 != '\0') break;\n        start = start + iVar39;\n        match_first = start;\n        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;\n      }\n      rVar18 = re_string_reconstruct(&mctx.input,start,eflags);\n      prVar3 = mctx.dfa;\n      prVar37 = (re_dfastate_t *)mctx.input.cur_idx;\n      pprVar22 = mctx.state_log;\n      rStack_154 = rVar18;\n      if (rVar18 != _REG_NOERROR) goto LAB_0003423c;\n      if (((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)) {\n        mctx.max_mb_elem_len = 0;\n        mctx.nbkref_ents = 0;\n        prVar44 = (mctx.dfa)->init_state;\n        puStack_140 = (undefined1 *)mctx.input.cur_idx;\n        mctx.state_log_top = 0;\n        err = _REG_NOERROR;\n        if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;\n        if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        pprVar22 = mctx.state_log;\n        puVar7 = PTR_LAB_0005332c;\n        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        match_ctx_clean(&mctx);\n        start = match_first;\n      }\n      start = start + iVar39;\n      match_first = start;\n      if ((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)) break;\n    } while( true );\n  }" { (expression_statement "piVar16 = &match_first;" (assignment_expression "piVar16 = &match_first" identifier = (pointer_expression "&match_first" & identifier)) ;) (if_statement "if (uVar12 != 0) {\n      piVar16 = (int *)0x0;\n    }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar16 = (int *)0x0;\n    }" { (expression_statement "piVar16 = (int *)0x0;" (assignment_expression "piVar16 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "piVar17 = (int *)(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4);" (assignment_expression "piVar17 = (int *)(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4)" identifier = (cast_expression "(int *)(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4)" ( (binary_expression "PTR_DAT_00053118 + (uVar35 - 4) * 4 + 0x21d4" (binary_expression "PTR_DAT_00053118 + (uVar35 - 4) * 4" identifier + (binary_expression "(uVar35 - 4) * 4" (parenthesized_expression "(uVar35 - 4)" ( (binary_expression "uVar35 - 4" identifier - number_literal) )) * number_literal)) + number_literal) )))) ;) (expression_statement "pcVar32 = (code *)(PTR_LAB_0005332c + -0xe80);" (assignment_expression "pcVar32 = (code *)(PTR_LAB_0005332c + -0xe80)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0xe80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0xe80)" ( (binary_expression "PTR_LAB_0005332c + -0xe80" identifier + number_literal) )))) ;) (expression_statement "iVar33 = mctx.input.raw_mbs_idx;" (assignment_expression "iVar33 = mctx.input.raw_mbs_idx" identifier = (field_expression "mctx.input.raw_mbs_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ;) (do_statement "do {\n      if (uVar35 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        rVar18 = (*(code *)(&_gp + *piVar17))();\n        return rVar18;\n      }\n      mctx.input.raw_mbs_idx = iVar33;\n      while( true ) {\n        uVar12 = start - iVar33;\n        if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }\n        if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }\n        if (cVar29 != '\0') break;\n        start = start + iVar39;\n        match_first = start;\n        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;\n      }\n      rVar18 = re_string_reconstruct(&mctx.input,start,eflags);\n      prVar3 = mctx.dfa;\n      prVar37 = (re_dfastate_t *)mctx.input.cur_idx;\n      pprVar22 = mctx.state_log;\n      rStack_154 = rVar18;\n      if (rVar18 != _REG_NOERROR) goto LAB_0003423c;\n      if (((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)) {\n        mctx.max_mb_elem_len = 0;\n        mctx.nbkref_ents = 0;\n        prVar44 = (mctx.dfa)->init_state;\n        puStack_140 = (undefined1 *)mctx.input.cur_idx;\n        mctx.state_log_top = 0;\n        err = _REG_NOERROR;\n        if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;\n        if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        pprVar22 = mctx.state_log;\n        puVar7 = PTR_LAB_0005332c;\n        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        match_ctx_clean(&mctx);\n        start = match_first;\n      }\n      start = start + iVar39;\n      match_first = start;\n      if ((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)) break;\n    } while( true );" do (compound_statement "{\n      if (uVar35 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        rVar18 = (*(code *)(&_gp + *piVar17))();\n        return rVar18;\n      }\n      mctx.input.raw_mbs_idx = iVar33;\n      while( true ) {\n        uVar12 = start - iVar33;\n        if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }\n        if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }\n        if (cVar29 != '\0') break;\n        start = start + iVar39;\n        match_first = start;\n        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;\n      }\n      rVar18 = re_string_reconstruct(&mctx.input,start,eflags);\n      prVar3 = mctx.dfa;\n      prVar37 = (re_dfastate_t *)mctx.input.cur_idx;\n      pprVar22 = mctx.state_log;\n      rStack_154 = rVar18;\n      if (rVar18 != _REG_NOERROR) goto LAB_0003423c;\n      if (((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)) {\n        mctx.max_mb_elem_len = 0;\n        mctx.nbkref_ents = 0;\n        prVar44 = (mctx.dfa)->init_state;\n        puStack_140 = (undefined1 *)mctx.input.cur_idx;\n        mctx.state_log_top = 0;\n        err = _REG_NOERROR;\n        if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;\n        if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        pprVar22 = mctx.state_log;\n        puVar7 = PTR_LAB_0005332c;\n        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        match_ctx_clean(&mctx);\n        start = match_first;\n      }\n      start = start + iVar39;\n      match_first = start;\n      if ((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)) break;\n    }" { (if_statement "if (uVar35 - 4 < 5) {\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        rVar18 = (*(code *)(&_gp + *piVar17))();\n        return rVar18;\n      }" if (parenthesized_expression "(uVar35 - 4 < 5)" ( (binary_expression "uVar35 - 4 < 5" (binary_expression "uVar35 - 4" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        rVar18 = (*(code *)(&_gp + *piVar17))();\n        return rVar18;\n      }" { comment comment (expression_statement "rVar18 = (*(code *)(&_gp + *piVar17))();" (assignment_expression "rVar18 = (*(code *)(&_gp + *piVar17))()" identifier = (call_expression "(*(code *)(&_gp + *piVar17))()" (parenthesized_expression "(*(code *)(&_gp + *piVar17))" ( (pointer_expression "*(code *)(&_gp + *piVar17)" * (cast_expression "(code *)(&_gp + *piVar17)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *piVar17)" ( (binary_expression "&_gp + *piVar17" (pointer_expression "&_gp" & identifier) + (pointer_expression "*piVar17" * identifier)) )))) )) (argument_list "()" ( )))) ;) (return_statement "return rVar18;" return identifier ;) })) (expression_statement "mctx.input.raw_mbs_idx = iVar33;" (assignment_expression "mctx.input.raw_mbs_idx = iVar33" (field_expression "mctx.input.raw_mbs_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) (while_statement "while( true ) {\n        uVar12 = start - iVar33;\n        if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }\n        if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }\n        if (cVar29 != '\0') break;\n        start = start + iVar39;\n        match_first = start;\n        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar12 = start - iVar33;\n        if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }\n        if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }\n        if (cVar29 != '\0') break;\n        start = start + iVar39;\n        match_first = start;\n        if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;\n      }" { (expression_statement "uVar12 = start - iVar33;" (assignment_expression "uVar12 = start - iVar33" identifier = (binary_expression "start - iVar33" identifier - identifier)) ;) (if_statement "if ((uint)mctx.input.valid_raw_len <= uVar12) {\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }" if (parenthesized_expression "((uint)mctx.input.valid_raw_len <= uVar12)" ( (binary_expression "(uint)mctx.input.valid_raw_len <= uVar12" (cast_expression "(uint)mctx.input.valid_raw_len" ( (type_descriptor "uint" type_identifier) ) (field_expression "mctx.input.valid_raw_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) <= identifier) )) (compound_statement "{\n          rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);\n          pprVar22 = mctx.state_log;\n          if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n          uVar12 = start - mctx.input.raw_mbs_idx;\n          iVar33 = mctx.input.raw_mbs_idx;\n        }" { (expression_statement "rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags);" (assignment_expression "rStack_154 = (*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags)" identifier = (call_expression "(*(code *)(puVar6 + -0x1ac4))(&mctx,start,eflags)" (parenthesized_expression "(*(code *)(puVar6 + -0x1ac4))" ( (pointer_expression "*(code *)(puVar6 + -0x1ac4)" * (cast_expression "(code *)(puVar6 + -0x1ac4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1ac4)" ( (binary_expression "puVar6 + -0x1ac4" identifier + number_literal) )))) )) (argument_list "(&mctx,start,eflags)" ( (pointer_expression "&mctx" & identifier) , identifier , identifier )))) ;) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (if_statement "if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;" if (parenthesized_expression "(rStack_154 != _REG_NOERROR)" ( (binary_expression "rStack_154 != _REG_NOERROR" identifier != identifier) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "uVar12 = start - mctx.input.raw_mbs_idx;" (assignment_expression "uVar12 = start - mctx.input.raw_mbs_idx" identifier = (binary_expression "start - mctx.input.raw_mbs_idx" identifier - (field_expression "mctx.input.raw_mbs_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;) (expression_statement "iVar33 = mctx.input.raw_mbs_idx;" (assignment_expression "iVar33 = mctx.input.raw_mbs_idx" identifier = (field_expression "mctx.input.raw_mbs_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ;) })) (if_statement "if (start < length) {\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }\n        else {\n          cVar29 = *pcStack_150;\n        }" if (parenthesized_expression "(start < length)" ( (binary_expression "start < length" identifier < identifier) )) (compound_statement "{\n          cVar29 = pcStack_150[mctx.input.mbs[uVar12]];\n        }" { (expression_statement "cVar29 = pcStack_150[mctx.input.mbs[uVar12]];" (assignment_expression "cVar29 = pcStack_150[mctx.input.mbs[uVar12]]" identifier = (subscript_expression "pcStack_150[mctx.input.mbs[uVar12]]" identifier [ (subscript_expression "mctx.input.mbs[uVar12]" (field_expression "mctx.input.mbs" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) [ identifier ]) ])) ;) }) (else_clause "else {\n          cVar29 = *pcStack_150;\n        }" else (compound_statement "{\n          cVar29 = *pcStack_150;\n        }" { (expression_statement "cVar29 = *pcStack_150;" (assignment_expression "cVar29 = *pcStack_150" identifier = (pointer_expression "*pcStack_150" * identifier)) ;) }))) (if_statement "if (cVar29 != '\0') break;" if (parenthesized_expression "(cVar29 != '\0')" ( (binary_expression "cVar29 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "start = start + iVar39;" (assignment_expression "start = start + iVar39" identifier = (binary_expression "start + iVar39" identifier + identifier)) ;) (expression_statement "match_first = start;" (assignment_expression "match_first = start" identifier = identifier) ;) (if_statement "if ((start < (int)prVar31) || (last_start < start)) goto LAB_000345e4;" if (parenthesized_expression "((start < (int)prVar31) || (last_start < start))" ( (binary_expression "(start < (int)prVar31) || (last_start < start)" (parenthesized_expression "(start < (int)prVar31)" ( (binary_expression "start < (int)prVar31" identifier < (cast_expression "(int)prVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "(last_start < start)" ( (binary_expression "last_start < start" identifier < identifier) ))) )) (goto_statement "goto LAB_000345e4;" goto statement_identifier ;)) })) (expression_statement "rVar18 = re_string_reconstruct(&mctx.input,start,eflags);" (assignment_expression "rVar18 = re_string_reconstruct(&mctx.input,start,eflags)" identifier = (call_expression "re_string_reconstruct(&mctx.input,start,eflags)" identifier (argument_list "(&mctx.input,start,eflags)" ( (pointer_expression "&mctx.input" & (field_expression "mctx.input" identifier . field_identifier)) , identifier , identifier )))) ;) (expression_statement "prVar3 = mctx.dfa;" (assignment_expression "prVar3 = mctx.dfa" identifier = (field_expression "mctx.dfa" identifier . field_identifier)) ;) (expression_statement "prVar37 = (re_dfastate_t *)mctx.input.cur_idx;" (assignment_expression "prVar37 = (re_dfastate_t *)mctx.input.cur_idx" identifier = (cast_expression "(re_dfastate_t *)mctx.input.cur_idx" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (expression_statement "rStack_154 = rVar18;" (assignment_expression "rStack_154 = rVar18" identifier = identifier) ;) (if_statement "if (rVar18 != _REG_NOERROR) goto LAB_0003423c;" if (parenthesized_expression "(rVar18 != _REG_NOERROR)" ( (binary_expression "rVar18 != _REG_NOERROR" identifier != identifier) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (if_statement "if (((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)) {\n        mctx.max_mb_elem_len = 0;\n        mctx.nbkref_ents = 0;\n        prVar44 = (mctx.dfa)->init_state;\n        puStack_140 = (undefined1 *)mctx.input.cur_idx;\n        mctx.state_log_top = 0;\n        err = _REG_NOERROR;\n        if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;\n        if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        pprVar22 = mctx.state_log;\n        puVar7 = PTR_LAB_0005332c;\n        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        match_ctx_clean(&mctx);\n        start = match_first;\n      }" if (parenthesized_expression "(((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff))" ( (binary_expression "((iVar42 == 1) || (mctx.input.valid_len == 0)) || (*mctx.input.wcs != 0xffffffff)" (parenthesized_expression "((iVar42 == 1) || (mctx.input.valid_len == 0))" ( (binary_expression "(iVar42 == 1) || (mctx.input.valid_len == 0)" (parenthesized_expression "(iVar42 == 1)" ( (binary_expression "iVar42 == 1" identifier == number_literal) )) || (parenthesized_expression "(mctx.input.valid_len == 0)" ( (binary_expression "mctx.input.valid_len == 0" (field_expression "mctx.input.valid_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) == number_literal) ))) )) || (parenthesized_expression "(*mctx.input.wcs != 0xffffffff)" ( (binary_expression "*mctx.input.wcs != 0xffffffff" (pointer_expression "*mctx.input.wcs" * (field_expression "mctx.input.wcs" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) != number_literal) ))) )) (compound_statement "{\n        mctx.max_mb_elem_len = 0;\n        mctx.nbkref_ents = 0;\n        prVar44 = (mctx.dfa)->init_state;\n        puStack_140 = (undefined1 *)mctx.input.cur_idx;\n        mctx.state_log_top = 0;\n        err = _REG_NOERROR;\n        if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;\n        if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        pprVar22 = mctx.state_log;\n        puVar7 = PTR_LAB_0005332c;\n        if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        match_ctx_clean(&mctx);\n        start = match_first;\n      }" { (expression_statement "mctx.max_mb_elem_len = 0;" (assignment_expression "mctx.max_mb_elem_len = 0" (field_expression "mctx.max_mb_elem_len" identifier . field_identifier) = number_literal) ;) (expression_statement "mctx.nbkref_ents = 0;" (assignment_expression "mctx.nbkref_ents = 0" (field_expression "mctx.nbkref_ents" identifier . field_identifier) = number_literal) ;) (expression_statement "prVar44 = (mctx.dfa)->init_state;" (assignment_expression "prVar44 = (mctx.dfa)->init_state" identifier = (field_expression "(mctx.dfa)->init_state" (parenthesized_expression "(mctx.dfa)" ( (field_expression "mctx.dfa" identifier . field_identifier) )) -> field_identifier)) ;) (expression_statement "puStack_140 = (undefined1 *)mctx.input.cur_idx;" (assignment_expression "puStack_140 = (undefined1 *)mctx.input.cur_idx" identifier = (cast_expression "(undefined1 *)mctx.input.cur_idx" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;) (expression_statement "mctx.state_log_top = 0;" (assignment_expression "mctx.state_log_top = 0" (field_expression "mctx.state_log_top" identifier . field_identifier) = number_literal) ;) (expression_statement "err = _REG_NOERROR;" (assignment_expression "err = _REG_NOERROR" identifier = identifier) ;) (if_statement "if ((prVar44->field_0x34 & 1) != 0) {\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }" if (parenthesized_expression "((prVar44->field_0x34 & 1) != 0)" ( (binary_expression "(prVar44->field_0x34 & 1) != 0" (parenthesized_expression "(prVar44->field_0x34 & 1)" ( (binary_expression "prVar44->field_0x34 & 1" (field_expression "prVar44->field_0x34" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n          if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }\n          if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;\n        }" { (expression_statement "uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);" (assignment_expression "uVar12 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags)" identifier = (call_expression "re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags)" identifier (argument_list "(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags)" ( (pointer_expression "&mctx.input" & (field_expression "mctx.input" identifier . field_identifier)) , (binary_expression "mctx.input.cur_idx + -1" (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) + number_literal) , (field_expression "mctx.eflags" identifier . field_identifier) )))) ;) (if_statement "if ((uVar12 & 1) == 0) {\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }\n          else {\n            prVar44 = prVar3->init_state_word;\n          }" if (parenthesized_expression "((uVar12 & 1) == 0)" ( (binary_expression "(uVar12 & 1) == 0" (parenthesized_expression "(uVar12 & 1)" ( (binary_expression "uVar12 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if (uVar12 == 0) goto LAB_000343a0;\n            if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }\n          }" { (if_statement "if (uVar12 == 0) goto LAB_000343a0;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000343a0;" goto statement_identifier ;)) (if_statement "if ((uVar12 & 6) == 6) {\n              prVar44 = prVar3->init_state_begbuf;\n            }\n            else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }" if (parenthesized_expression "((uVar12 & 6) == 6)" ( (binary_expression "(uVar12 & 6) == 6" (parenthesized_expression "(uVar12 & 6)" ( (binary_expression "uVar12 & 6" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              prVar44 = prVar3->init_state_begbuf;\n            }" { (expression_statement "prVar44 = prVar3->init_state_begbuf;" (assignment_expression "prVar44 = prVar3->init_state_begbuf" identifier = (field_expression "prVar3->init_state_begbuf" identifier -> field_identifier)) ;) }) (else_clause "else if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }" else (if_statement "if ((uVar12 & 2) == 0) {\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }\n            else {\n              prVar44 = prVar3->init_state_nl;\n            }" if (parenthesized_expression "((uVar12 & 2) == 0)" ( (binary_expression "(uVar12 & 2) == 0" (parenthesized_expression "(uVar12 & 2)" ( (binary_expression "uVar12 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((uVar12 & 4) == 0) goto LAB_000343a0;\n              prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);\n            }" { (if_statement "if ((uVar12 & 4) == 0) goto LAB_000343a0;" if (parenthesized_expression "((uVar12 & 4) == 0)" ( (binary_expression "(uVar12 & 4) == 0" (parenthesized_expression "(uVar12 & 4)" ( (binary_expression "uVar12 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000343a0;" goto statement_identifier ;)) (expression_statement "prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12);" (assignment_expression "prVar44 = re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12)" identifier = (call_expression "re_acquire_state_context(&err,prVar3,prVar44->entrance_nodes,uVar12)" identifier (argument_list "(&err,prVar3,prVar44->entrance_nodes,uVar12)" ( (pointer_expression "&err" & identifier) , identifier , (field_expression "prVar44->entrance_nodes" identifier -> field_identifier) , identifier )))) ;) }) (else_clause "else {\n              prVar44 = prVar3->init_state_nl;\n            }" else (compound_statement "{\n              prVar44 = prVar3->init_state_nl;\n            }" { (expression_statement "prVar44 = prVar3->init_state_nl;" (assignment_expression "prVar44 = prVar3->init_state_nl" identifier = (field_expression "prVar3->init_state_nl" identifier -> field_identifier)) ;) }))))) }) (else_clause "else {\n            prVar44 = prVar3->init_state_word;\n          }" else (compound_statement "{\n            prVar44 = prVar3->init_state_word;\n          }" { (expression_statement "prVar44 = prVar3->init_state_word;" (assignment_expression "prVar44 = prVar3->init_state_word" identifier = (field_expression "prVar3->init_state_word" identifier -> field_identifier)) ;) }))) (if_statement "if (prVar44 == (re_dfastate_t *)0x0) goto code_r0x000350f8;" if (parenthesized_expression "(prVar44 == (re_dfastate_t *)0x0)" ( (binary_expression "prVar44 == (re_dfastate_t *)0x0" identifier == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x000350f8;" goto statement_identifier ;)) })) (labeled_statement "LAB_000343a0:\n        bVar4 = piVar16 != (int *)0x0;" statement_identifier : (expression_statement "bVar4 = piVar16 != (int *)0x0;" (assignment_expression "bVar4 = piVar16 != (int *)0x0" identifier = (binary_expression "piVar16 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ;)) (if_statement "if ((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)) {\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }\n        else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" if (parenthesized_expression "((mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0))" ( (binary_expression "(mctx.state_log == (re_dfastate_t **)0x0) ||\n           (iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)" (parenthesized_expression "(mctx.state_log == (re_dfastate_t **)0x0)" ( (binary_expression "mctx.state_log == (re_dfastate_t **)0x0" (field_expression "mctx.state_log" identifier . field_identifier) == (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) || (parenthesized_expression "(iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0)" ( (comma_expression "iVar33 = prVar3->nbackref, mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0" (assignment_expression "iVar33 = prVar3->nbackref" identifier = (field_expression "prVar3->nbackref" identifier -> field_identifier)) , (comma_expression "mctx.state_log[(int)prVar37] = prVar44, iVar33 == 0" (assignment_expression "mctx.state_log[(int)prVar37] = prVar44" (subscript_expression "mctx.state_log[(int)prVar37]" (field_expression "mctx.state_log" identifier . field_identifier) [ (cast_expression "(int)prVar37" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) , (binary_expression "iVar33 == 0" identifier == number_literal))) ))) )) (compound_statement "{\nLAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }\n          pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n          piStack_14c = piVar16;\n          while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }\nLAB_00034748:\n          prStack_c4 = prVar37;\n          if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }\n        }" { (labeled_statement "LAB_000343c4:\n          if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }" statement_identifier : (if_statement "if (*(int *)&prVar44->field_0x34 << 4 < 0) {\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }" if (parenthesized_expression "(*(int *)&prVar44->field_0x34 << 4 < 0)" ( (binary_expression "*(int *)&prVar44->field_0x34 << 4 < 0" (binary_expression "*(int *)&prVar44->field_0x34 << 4" (pointer_expression "*(int *)&prVar44->field_0x34" * (cast_expression "(int *)&prVar44->field_0x34" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar44->field_0x34" & (field_expression "prVar44->field_0x34" identifier -> field_identifier)))) << number_literal) < number_literal) )) (compound_statement "{\n            if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }\n          }" { (if_statement "if (((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)) {\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }\n            else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }" if (parenthesized_expression "(((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0))" ( (binary_expression "((prVar44->field_0x34 & 1) == 0) ||\n               (IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)" (parenthesized_expression "((prVar44->field_0x34 & 1) == 0)" ( (binary_expression "(prVar44->field_0x34 & 1) == 0" (parenthesized_expression "(prVar44->field_0x34 & 1)" ( (binary_expression "prVar44->field_0x34 & 1" (field_expression "prVar44->field_0x34" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "(IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0)" ( (comma_expression "IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37), IVar21 != 0" (assignment_expression "IVar21 = check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37)" identifier = (call_expression "check_halt_state_context\n                                   (&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37)" identifier (argument_list "(&mctx,(re_dfastate_t *)(prVar44->nodes).nelem,\n                                    (Idx)&(prVar44->nodes).elems,prVar37)" ( (pointer_expression "&mctx" & identifier) , (cast_expression "(re_dfastate_t *)(prVar44->nodes).nelem" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(prVar44->nodes).nelem" (parenthesized_expression "(prVar44->nodes)" ( (field_expression "prVar44->nodes" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "(Idx)&(prVar44->nodes).elems" (parenthesized_expression "(Idx)" ( identifier )) & (field_expression "(prVar44->nodes).elems" (parenthesized_expression "(prVar44->nodes)" ( (field_expression "prVar44->nodes" identifier -> field_identifier) )) . field_identifier)) , identifier )))) , (binary_expression "IVar21 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              prStack_c4 = prVar37;\n              bVar5 = bVar30;\n              if (!bVar30) goto LAB_00034760;\n            }" { (expression_statement "prStack_c4 = prVar37;" (assignment_expression "prStack_c4 = prVar37" identifier = identifier) ;) (expression_statement "bVar5 = bVar30;" (assignment_expression "bVar5 = bVar30" identifier = identifier) ;) (if_statement "if (!bVar30) goto LAB_00034760;" if (parenthesized_expression "(!bVar30)" ( (unary_expression "!bVar30" ! identifier) )) (goto_statement "goto LAB_00034760;" goto statement_identifier ;)) }) (else_clause "else {\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }" else (compound_statement "{\n              prVar37 = (re_dfastate_t *)0xffffffff;\n              bVar5 = false;\n            }" { (expression_statement "prVar37 = (re_dfastate_t *)0xffffffff;" (assignment_expression "prVar37 = (re_dfastate_t *)0xffffffff" identifier = (cast_expression "(re_dfastate_t *)0xffffffff" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) }))) }) (else_clause "else {\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }" else (compound_statement "{\n            prVar37 = (re_dfastate_t *)0xffffffff;\n            bVar5 = false;\n          }" { (expression_statement "prVar37 = (re_dfastate_t *)0xffffffff;" (assignment_expression "prVar37 = (re_dfastate_t *)0xffffffff" identifier = (cast_expression "(re_dfastate_t *)0xffffffff" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) })))) (expression_statement "pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c);" (assignment_expression "pcVar19 = (code *)(PTR_LAB_0005332c + -0x576c)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x576c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x576c)" ( (binary_expression "PTR_LAB_0005332c + -0x576c" identifier + number_literal) )))) ;) (expression_statement "pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0);" (assignment_expression "pcVar20 = (code *)(PTR_LAB_0005332c + 0x17e0)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + 0x17e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + 0x17e0)" ( (binary_expression "PTR_LAB_0005332c + 0x17e0" identifier + number_literal) )))) ;) (expression_statement "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;" (assignment_expression "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx" identifier = (cast_expression "(re_dfastate_t *)mctx.input.cur_idx" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;) (expression_statement "piStack_14c = piVar16;" (assignment_expression "piStack_14c = piVar16" identifier = identifier) ;) (while_statement "while ((int)prStack_c4 < mctx.input.stop) {\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }" while (parenthesized_expression "((int)prStack_c4 < mctx.input.stop)" ( (binary_expression "(int)prStack_c4 < mctx.input.stop" (cast_expression "(int)prStack_c4" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "mctx.input.stop" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) )) (compound_statement "{\n            puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);\n            if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }\n            mctx.dfa = prVar3;\n            if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }\n            mctx.input.cur_idx = (int)&prStack_c4->hash + 1;\n            uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];\n            do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);\n            err = _REG_ESPACE;\n            rVar10 = err;\njoined_r0x00034dec:\n            err = rVar10;\n            if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }\n            prVar41 = (re_dfastate_t *)0x0;\nLAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);\nLAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n            if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }\n            puVar9 = puStack_140;\n            if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }\n            puStack_140 = puVar9;\n            prVar44 = prVar41;\n            mctx.input.cur_idx = (Idx)prStack_c4;\n            if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }\n          }" { (expression_statement "puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1);" (assignment_expression "puVar43 = (undefined1 *)((int)&prStack_c4->hash + 1)" identifier = (cast_expression "(undefined1 *)((int)&prStack_c4->hash + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prStack_c4->hash + 1)" ( (binary_expression "(int)&prStack_c4->hash + 1" (cast_expression "(int)&prStack_c4->hash" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prStack_c4->hash" & (field_expression "prStack_c4->hash" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if ((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))\n            {\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }\n            else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }" if (parenthesized_expression "((((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))))" ( (binary_expression "(((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)) &&\n               (((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len)))" (parenthesized_expression "(((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len))" ( (binary_expression "((int)puVar43 < mctx.input.bufs_len) || (mctx.input.len <= mctx.input.bufs_len)" (parenthesized_expression "((int)puVar43 < mctx.input.bufs_len)" ( (binary_expression "(int)puVar43 < mctx.input.bufs_len" (cast_expression "(int)puVar43" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "mctx.input.bufs_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) )) || (parenthesized_expression "(mctx.input.len <= mctx.input.bufs_len)" ( (binary_expression "mctx.input.len <= mctx.input.bufs_len" (field_expression "mctx.input.len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) <= (field_expression "mctx.input.bufs_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ))) )) && (parenthesized_expression "(((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len)))" ( (parenthesized_expression "((int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len))" ( (binary_expression "(int)puVar43 < mctx.input.valid_len || (mctx.input.len <= mctx.input.valid_len)" (binary_expression "(int)puVar43 < mctx.input.valid_len" (cast_expression "(int)puVar43" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "mctx.input.valid_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) || (parenthesized_expression "(mctx.input.len <= mctx.input.valid_len)" ( (binary_expression "mctx.input.len <= mctx.input.valid_len" (field_expression "mctx.input.len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) <= (field_expression "mctx.input.valid_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ))) )) ))) )) (compound_statement "{\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prVar3 = mctx.dfa;\n            }" { (expression_statement "iVar33 = *(int *)&prVar44->field_0x34;" (assignment_expression "iVar33 = *(int *)&prVar44->field_0x34" identifier = (pointer_expression "*(int *)&prVar44->field_0x34" * (cast_expression "(int *)&prVar44->field_0x34" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar44->field_0x34" & (field_expression "prVar44->field_0x34" identifier -> field_identifier))))) ;) (expression_statement "prVar3 = mctx.dfa;" (assignment_expression "prVar3 = mctx.dfa" identifier = (field_expression "mctx.dfa" identifier . field_identifier)) ;) }) (else_clause "else {\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }" else (compound_statement "{\n              err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));\n              if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar33 = *(int *)&prVar44->field_0x34;\n              prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n              prVar3 = mctx.dfa;\n            }" { (expression_statement "err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2));" (assignment_expression "err = (*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2))" identifier = (call_expression "(*pcVar19)(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2))" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(&mctx,(undefined1 *)((int)&prStack_c4->hash + 2))" ( (pointer_expression "&mctx" & identifier) , (cast_expression "(undefined1 *)((int)&prStack_c4->hash + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prStack_c4->hash + 2)" ( (binary_expression "(int)&prStack_c4->hash + 2" (cast_expression "(int)&prStack_c4->hash" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prStack_c4->hash" & (field_expression "prStack_c4->hash" identifier -> field_identifier))) + number_literal) ))) )))) ;) (if_statement "if (err != _REG_NOERROR) {\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }" if (parenthesized_expression "(err != _REG_NOERROR)" ( (binary_expression "err != _REG_NOERROR" identifier != identifier) )) (compound_statement "{\n                if (err == _REG_ESPACE) goto LAB_00034274;\n                uVar38 = 0x468;\n                goto LAB_00035118;\n              }" { (if_statement "if (err == _REG_ESPACE) goto LAB_00034274;" if (parenthesized_expression "(err == _REG_ESPACE)" ( (binary_expression "err == _REG_ESPACE" identifier == identifier) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (expression_statement "uVar38 = 0x468;" (assignment_expression "uVar38 = 0x468" identifier = number_literal) ;) (goto_statement "goto LAB_00035118;" goto statement_identifier ;) })) (expression_statement "iVar33 = *(int *)&prVar44->field_0x34;" (assignment_expression "iVar33 = *(int *)&prVar44->field_0x34" identifier = (pointer_expression "*(int *)&prVar44->field_0x34" * (cast_expression "(int *)&prVar44->field_0x34" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar44->field_0x34" & (field_expression "prVar44->field_0x34" identifier -> field_identifier))))) ;) (expression_statement "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;" (assignment_expression "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx" identifier = (cast_expression "(re_dfastate_t *)mctx.input.cur_idx" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;) (expression_statement "prVar3 = mctx.dfa;" (assignment_expression "prVar3 = mctx.dfa" identifier = (field_expression "mctx.dfa" identifier . field_identifier)) ;) }))) (expression_statement "mctx.dfa = prVar3;" (assignment_expression "mctx.dfa = prVar3" (field_expression "mctx.dfa" identifier . field_identifier) = identifier) ;) (if_statement "if (iVar33 << 5 < 0) {\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }" if (parenthesized_expression "(iVar33 << 5 < 0)" ( (binary_expression "iVar33 << 5 < 0" (binary_expression "iVar33 << 5" identifier << number_literal) < number_literal) )) (compound_statement "{\n              iVar33 = (prVar44->nodes).nelem;\n              if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }\n              err = _REG_NOERROR;\n            }" { (expression_statement "iVar33 = (prVar44->nodes).nelem;" (assignment_expression "iVar33 = (prVar44->nodes).nelem" identifier = (field_expression "(prVar44->nodes).nelem" (parenthesized_expression "(prVar44->nodes)" ( (field_expression "prVar44->nodes" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (0 < iVar33) {\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }" if (parenthesized_expression "(0 < iVar33)" ( (binary_expression "0 < iVar33" number_literal < identifier) )) (compound_statement "{\n                start = 0;\n                pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);\n              }" { (expression_statement "start = 0;" (assignment_expression "start = 0" identifier = number_literal) ;) (expression_statement "pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0);" (assignment_expression "pcVar25 = (code *)(PTR_LAB_0005332c + -0x55a0)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x55a0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x55a0)" ( (binary_expression "PTR_LAB_0005332c + -0x55a0" identifier + number_literal) )))) ;) (expression_statement "pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0);" (assignment_expression "pcVar26 = (code *)(PTR_LAB_0005332c + -0x1ec0)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x1ec0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x1ec0)" ( (binary_expression "PTR_LAB_0005332c + -0x1ec0" identifier + number_literal) )))) ;) (do_statement "do {\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                } while (start < iVar33);" do (compound_statement "{\n                  prVar45 = prVar3->nodes;\n                  iVar36 = (prVar44->nodes).elems[start];\n                  uVar12 = *(uint *)&prVar45[iVar36].field_0x4;\n                  if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }\nLAB_00034cec:\n                  start = start + 1;\n                }" { (expression_statement "prVar45 = prVar3->nodes;" (assignment_expression "prVar45 = prVar3->nodes" identifier = (field_expression "prVar3->nodes" identifier -> field_identifier)) ;) (expression_statement "iVar36 = (prVar44->nodes).elems[start];" (assignment_expression "iVar36 = (prVar44->nodes).elems[start]" identifier = (subscript_expression "(prVar44->nodes).elems[start]" (field_expression "(prVar44->nodes).elems" (parenthesized_expression "(prVar44->nodes)" ( (field_expression "prVar44->nodes" identifier -> field_identifier) )) . field_identifier) [ identifier ])) ;) (expression_statement "uVar12 = *(uint *)&prVar45[iVar36].field_0x4;" (assignment_expression "uVar12 = *(uint *)&prVar45[iVar36].field_0x4" identifier = (pointer_expression "*(uint *)&prVar45[iVar36].field_0x4" * (cast_expression "(uint *)&prVar45[iVar36].field_0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar45[iVar36].field_0x4" & (field_expression "prVar45[iVar36].field_0x4" (subscript_expression "prVar45[iVar36]" identifier [ identifier ]) . field_identifier))))) ;) (if_statement "if ((uVar12 & 0x800) != 0) {\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }" if (parenthesized_expression "((uVar12 & 0x800) != 0)" ( (binary_expression "(uVar12 & 0x800) != 0" (parenthesized_expression "(uVar12 & 0x800)" ( (binary_expression "uVar12 & 0x800" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);\n                    if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }\n                    iVar33 = (prVar44->nodes).nelem;\n                    prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                  }" { (if_statement "if ((uVar12 & 0xffc000) != 0) {\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }" if (parenthesized_expression "((uVar12 & 0xffc000) != 0)" ( (binary_expression "(uVar12 & 0xffc000) != 0" (parenthesized_expression "(uVar12 & 0xffc000)" ( (binary_expression "uVar12 & 0xffc000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                      uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);\n                      uVar12 = (uVar12 << 8) >> 0x16;\n                      if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;\n                    }" { (expression_statement "uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags);" (assignment_expression "uVar15 = (*pcVar26)(&mctx,prStack_c4,mctx.eflags)" identifier = (call_expression "(*pcVar26)(&mctx,prStack_c4,mctx.eflags)" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "(&mctx,prStack_c4,mctx.eflags)" ( (pointer_expression "&mctx" & identifier) , identifier , (field_expression "mctx.eflags" identifier . field_identifier) )))) ;) (expression_statement "uVar12 = (uVar12 << 8) >> 0x16;" (assignment_expression "uVar12 = (uVar12 << 8) >> 0x16" identifier = (binary_expression "(uVar12 << 8) >> 0x16" (parenthesized_expression "(uVar12 << 8)" ( (binary_expression "uVar12 << 8" identifier << number_literal) )) >> number_literal)) ;) (if_statement "if ((uVar12 & 4) == 0) {\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }" if (parenthesized_expression "((uVar12 & 4) == 0)" ( (binary_expression "(uVar12 & 4) == 0" (parenthesized_expression "(uVar12 & 4)" ( (binary_expression "uVar12 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                        uVar34 = uVar15 & 1;\n                        if ((uVar12 & 8) != 0) goto joined_r0x00034b90;\n                      }" { (expression_statement "uVar34 = uVar15 & 1;" (assignment_expression "uVar34 = uVar15 & 1" identifier = (binary_expression "uVar15 & 1" identifier & number_literal)) ;) (if_statement "if ((uVar12 & 8) != 0) goto joined_r0x00034b90;" if (parenthesized_expression "((uVar12 & 8) != 0)" ( (binary_expression "(uVar12 & 8) != 0" (parenthesized_expression "(uVar12 & 8)" ( (binary_expression "uVar12 & 8" identifier & number_literal) )) != number_literal) )) (goto_statement "goto joined_r0x00034b90;" goto statement_identifier ;)) }) (else_clause "else {\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }" else (compound_statement "{\n                        uVar34 = uVar12 & 8;\n                        if ((uVar15 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;\n                      }" { (expression_statement "uVar34 = uVar12 & 8;" (assignment_expression "uVar34 = uVar12 & 8" identifier = (binary_expression "uVar12 & 8" identifier & number_literal)) ;) (if_statement "if ((uVar15 & 1) == 0) goto LAB_00034cec;" if (parenthesized_expression "((uVar15 & 1) == 0)" ( (binary_expression "(uVar15 & 1) == 0" (parenthesized_expression "(uVar15 & 1)" ( (binary_expression "uVar15 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00034cec;" goto statement_identifier ;)) (labeled_statement "joined_r0x00034b90:\n                        if (uVar34 != 0) goto LAB_00034cec;" statement_identifier : (if_statement "if (uVar34 != 0) goto LAB_00034cec;" if (parenthesized_expression "(uVar34 != 0)" ( (binary_expression "uVar34 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00034cec;" goto statement_identifier ;))) }))) (if_statement "if ((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))) goto LAB_00034cec;" if (parenthesized_expression "((((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0))))" ( (binary_expression "(((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)) ||\n                         (((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))" (parenthesized_expression "(((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0))" ( (binary_expression "((uVar12 & 0x20) != 0) && ((uVar15 & 2) == 0)" (parenthesized_expression "((uVar12 & 0x20) != 0)" ( (binary_expression "(uVar12 & 0x20) != 0" (parenthesized_expression "(uVar12 & 0x20)" ( (binary_expression "uVar12 & 0x20" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((uVar15 & 2) == 0)" ( (binary_expression "(uVar15 & 2) == 0" (parenthesized_expression "(uVar15 & 2)" ( (binary_expression "uVar15 & 2" identifier & number_literal) )) == number_literal) ))) )) || (parenthesized_expression "(((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)))" ( (parenthesized_expression "((uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0))" ( (binary_expression "(uVar12 & 0x80) != 0 && ((uVar15 & 8) == 0)" (binary_expression "(uVar12 & 0x80) != 0" (parenthesized_expression "(uVar12 & 0x80)" ( (binary_expression "uVar12 & 0x80" identifier & number_literal) )) != number_literal) && (parenthesized_expression "((uVar15 & 8) == 0)" ( (binary_expression "(uVar15 & 8) == 0" (parenthesized_expression "(uVar15 & 8)" ( (binary_expression "uVar15 & 8" identifier & number_literal) )) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_00034cec;" goto statement_identifier ;)) })) (expression_statement "iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4);" (assignment_expression "iVar33 = (*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4)" identifier = (call_expression "(*pcVar20)(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(prVar45,&prVar3->syntax,iVar36,&mctx,prStack_c4)" ( identifier , (pointer_expression "&prVar3->syntax" & (field_expression "prVar3->syntax" identifier -> field_identifier)) , identifier , (pointer_expression "&mctx" & identifier) , identifier )))) ;) (if_statement "if (iVar33 != 0) {\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (compound_statement "{\n                      if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }\n                      iVar33 = iVar33 + mctx.input.cur_idx;\n                      err_1 = (*pcVar25)(&mctx,iVar33);\n                      rVar10 = err_1;\n                      if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                      pprVar22 = mctx.state_log + iVar33;\n                      prVar41 = *pprVar22;\n                      src2 = prVar3->eclosures + prVar3->nexts[iVar36];\n                      if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }\n                      if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;\n                    }" { (if_statement "if (mctx.max_mb_elem_len < iVar33) {\n                        mctx.max_mb_elem_len = iVar33;\n                      }" if (parenthesized_expression "(mctx.max_mb_elem_len < iVar33)" ( (binary_expression "mctx.max_mb_elem_len < iVar33" (field_expression "mctx.max_mb_elem_len" identifier . field_identifier) < identifier) )) (compound_statement "{\n                        mctx.max_mb_elem_len = iVar33;\n                      }" { (expression_statement "mctx.max_mb_elem_len = iVar33;" (assignment_expression "mctx.max_mb_elem_len = iVar33" (field_expression "mctx.max_mb_elem_len" identifier . field_identifier) = identifier) ;) })) (expression_statement "iVar33 = iVar33 + mctx.input.cur_idx;" (assignment_expression "iVar33 = iVar33 + mctx.input.cur_idx" identifier = (binary_expression "iVar33 + mctx.input.cur_idx" identifier + (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;) (expression_statement "err_1 = (*pcVar25)(&mctx,iVar33);" (assignment_expression "err_1 = (*pcVar25)(&mctx,iVar33)" identifier = (call_expression "(*pcVar25)(&mctx,iVar33)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(&mctx,iVar33)" ( (pointer_expression "&mctx" & identifier) , identifier )))) ;) (expression_statement "rVar10 = err_1;" (assignment_expression "rVar10 = err_1" identifier = identifier) ;) (if_statement "if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;" if (parenthesized_expression "(err_1 != _REG_NOERROR)" ( (binary_expression "err_1 != _REG_NOERROR" identifier != identifier) )) (goto_statement "goto joined_r0x00034dec;" goto statement_identifier ;)) (expression_statement "pprVar22 = mctx.state_log + iVar33;" (assignment_expression "pprVar22 = mctx.state_log + iVar33" identifier = (binary_expression "mctx.state_log + iVar33" (field_expression "mctx.state_log" identifier . field_identifier) + identifier)) ;) (expression_statement "prVar41 = *pprVar22;" (assignment_expression "prVar41 = *pprVar22" identifier = (pointer_expression "*pprVar22" * identifier)) ;) (expression_statement "src2 = prVar3->eclosures + prVar3->nexts[iVar36];" (assignment_expression "src2 = prVar3->eclosures + prVar3->nexts[iVar36]" identifier = (binary_expression "prVar3->eclosures + prVar3->nexts[iVar36]" (field_expression "prVar3->eclosures" identifier -> field_identifier) + (subscript_expression "prVar3->nexts[iVar36]" (field_expression "prVar3->nexts" identifier -> field_identifier) [ identifier ]))) ;) (if_statement "if (prVar41 == (re_dfastate_t *)0x0) {\n                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }\n                      else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }" if (parenthesized_expression "(prVar41 == (re_dfastate_t *)0x0)" ( (binary_expression "prVar41 == (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                        dest_nodes.alloc = src2->alloc;\n                        dest_nodes.nelem = src2->nelem;\n                        dest_nodes.elems = src2->elems;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        *pprVar22 = prVar41;\n                      }" { (expression_statement "dest_nodes.alloc = src2->alloc;" (assignment_expression "dest_nodes.alloc = src2->alloc" (field_expression "dest_nodes.alloc" identifier . field_identifier) = (field_expression "src2->alloc" identifier -> field_identifier)) ;) (expression_statement "dest_nodes.nelem = src2->nelem;" (assignment_expression "dest_nodes.nelem = src2->nelem" (field_expression "dest_nodes.nelem" identifier . field_identifier) = (field_expression "src2->nelem" identifier -> field_identifier)) ;) (expression_statement "dest_nodes.elems = src2->elems;" (assignment_expression "dest_nodes.elems = src2->elems" (field_expression "dest_nodes.elems" identifier . field_identifier) = (field_expression "src2->elems" identifier -> field_identifier)) ;) (expression_statement "uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);" (assignment_expression "uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags)" identifier = (call_expression "(*pcVar26)(&mctx,iVar33 + -1,mctx.eflags)" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "(&mctx,iVar33 + -1,mctx.eflags)" ( (pointer_expression "&mctx" & identifier) , (binary_expression "iVar33 + -1" identifier + number_literal) , (field_expression "mctx.eflags" identifier . field_identifier) )))) ;) (expression_statement "prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);" (assignment_expression "prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12)" identifier = (call_expression "re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12)" identifier (argument_list "(&err_1,prVar3,&dest_nodes,uVar12)" ( (pointer_expression "&err_1" & identifier) , identifier , (pointer_expression "&dest_nodes" & identifier) , identifier )))) ;) (expression_statement "*pprVar22 = prVar41;" (assignment_expression "*pprVar22 = prVar41" (pointer_expression "*pprVar22" * identifier) = identifier) ;) }) (else_clause "else {\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }" else (compound_statement "{\n                        err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);\n                        rVar10 = err_1;\n                        if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;\n                        uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);\n                        pprVar22 = mctx.state_log + iVar33;\n                        prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);\n                        puVar7 = PTR_free_000534fc;\n                        *pprVar22 = prVar41;\n                        (*(code *)puVar7)(dest_nodes.elems);\n                      }" { (expression_statement "err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2);" (assignment_expression "err_1 = re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2)" identifier = (call_expression "re_node_set_init_union(&dest_nodes,prVar41->entrance_nodes,src2)" identifier (argument_list "(&dest_nodes,prVar41->entrance_nodes,src2)" ( (pointer_expression "&dest_nodes" & identifier) , (field_expression "prVar41->entrance_nodes" identifier -> field_identifier) , identifier )))) ;) (expression_statement "rVar10 = err_1;" (assignment_expression "rVar10 = err_1" identifier = identifier) ;) (if_statement "if (err_1 != _REG_NOERROR) goto joined_r0x00034dec;" if (parenthesized_expression "(err_1 != _REG_NOERROR)" ( (binary_expression "err_1 != _REG_NOERROR" identifier != identifier) )) (goto_statement "goto joined_r0x00034dec;" goto statement_identifier ;)) (expression_statement "uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags);" (assignment_expression "uVar12 = (*pcVar26)(&mctx,iVar33 + -1,mctx.eflags)" identifier = (call_expression "(*pcVar26)(&mctx,iVar33 + -1,mctx.eflags)" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "(&mctx,iVar33 + -1,mctx.eflags)" ( (pointer_expression "&mctx" & identifier) , (binary_expression "iVar33 + -1" identifier + number_literal) , (field_expression "mctx.eflags" identifier . field_identifier) )))) ;) (expression_statement "pprVar22 = mctx.state_log + iVar33;" (assignment_expression "pprVar22 = mctx.state_log + iVar33" identifier = (binary_expression "mctx.state_log + iVar33" (field_expression "mctx.state_log" identifier . field_identifier) + identifier)) ;) (expression_statement "prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12);" (assignment_expression "prVar41 = re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12)" identifier = (call_expression "re_acquire_state_context(&err_1,prVar3,&dest_nodes,uVar12)" identifier (argument_list "(&err_1,prVar3,&dest_nodes,uVar12)" ( (pointer_expression "&err_1" & identifier) , identifier , (pointer_expression "&dest_nodes" & identifier) , identifier )))) ;) (expression_statement "puVar7 = PTR_free_000534fc;" (assignment_expression "puVar7 = PTR_free_000534fc" identifier = identifier) ;) (expression_statement "*pprVar22 = prVar41;" (assignment_expression "*pprVar22 = prVar41" (pointer_expression "*pprVar22" * identifier) = identifier) ;) (expression_statement "(*(code *)puVar7)(dest_nodes.elems);" (call_expression "(*(code *)puVar7)(dest_nodes.elems)" (parenthesized_expression "(*(code *)puVar7)" ( (pointer_expression "*(code *)puVar7" * (cast_expression "(code *)puVar7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dest_nodes.elems)" ( (field_expression "dest_nodes.elems" identifier . field_identifier) ))) ;) }))) (if_statement "if ((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)) goto joined_r0x00034dec;" if (parenthesized_expression "((mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR))" ( (binary_expression "(mctx.state_log[iVar33] == (re_dfastate_t *)0x0) &&\n                         (rVar10 = err_1, err_1 != _REG_NOERROR)" (parenthesized_expression "(mctx.state_log[iVar33] == (re_dfastate_t *)0x0)" ( (binary_expression "mctx.state_log[iVar33] == (re_dfastate_t *)0x0" (subscript_expression "mctx.state_log[iVar33]" (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 "(rVar10 = err_1, err_1 != _REG_NOERROR)" ( (comma_expression "rVar10 = err_1, err_1 != _REG_NOERROR" (assignment_expression "rVar10 = err_1" identifier = identifier) , (binary_expression "err_1 != _REG_NOERROR" identifier != identifier)) ))) )) (goto_statement "goto joined_r0x00034dec;" goto statement_identifier ;)) })) (expression_statement "iVar33 = (prVar44->nodes).nelem;" (assignment_expression "iVar33 = (prVar44->nodes).nelem" identifier = (field_expression "(prVar44->nodes).nelem" (parenthesized_expression "(prVar44->nodes)" ( (field_expression "prVar44->nodes" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;" (assignment_expression "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx" identifier = (cast_expression "(re_dfastate_t *)mctx.input.cur_idx" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;) })) (labeled_statement "LAB_00034cec:\n                  start = start + 1;" statement_identifier : (expression_statement "start = start + 1;" (assignment_expression "start = start + 1" identifier = (binary_expression "start + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(start < iVar33)" ( (binary_expression "start < iVar33" identifier < identifier) )) ;) })) (expression_statement "err = _REG_NOERROR;" (assignment_expression "err = _REG_NOERROR" identifier = identifier) ;) })) (expression_statement "mctx.input.cur_idx = (int)&prStack_c4->hash + 1;" (assignment_expression "mctx.input.cur_idx = (int)&prStack_c4->hash + 1" (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (binary_expression "(int)&prStack_c4->hash + 1" (cast_expression "(int)&prStack_c4->hash" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prStack_c4->hash" & (field_expression "prStack_c4->hash" identifier -> field_identifier))) + number_literal)) ;) (expression_statement "uVar12 = (uint)mctx.input.mbs[(int)prStack_c4];" (assignment_expression "uVar12 = (uint)mctx.input.mbs[(int)prStack_c4]" identifier = (cast_expression "(uint)mctx.input.mbs[(int)prStack_c4]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "mctx.input.mbs[(int)prStack_c4]" (field_expression "mctx.input.mbs" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) [ (cast_expression "(int)prStack_c4" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;) (do_statement "do {\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            } while (iVar33 != 0);" do (compound_statement "{\n              if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              pprVar22 = prVar44->word_trtable;\n              if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }\n              iVar33 = (*pcVar32)(mctx.dfa,prVar44);\n            }" { (if_statement "if (prVar44->trtable != (re_dfastate_t **)0x0) {\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }" if (parenthesized_expression "(prVar44->trtable != (re_dfastate_t **)0x0)" ( (binary_expression "prVar44->trtable != (re_dfastate_t **)0x0" (field_expression "prVar44->trtable" identifier -> field_identifier) != (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n                prVar41 = prVar44->trtable[uVar12];\nLAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }" { (expression_statement "prVar41 = prVar44->trtable[uVar12];" (assignment_expression "prVar41 = prVar44->trtable[uVar12]" identifier = (subscript_expression "prVar44->trtable[uVar12]" (field_expression "prVar44->trtable" identifier -> field_identifier) [ identifier ])) ;) (labeled_statement "LAB_0003446c:\n                if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;" statement_identifier : (if_statement "if (mctx.state_log != (re_dfastate_t **)0x0) goto LAB_00034478;" if (parenthesized_expression "(mctx.state_log != (re_dfastate_t **)0x0)" ( (binary_expression "mctx.state_log != (re_dfastate_t **)0x0" (field_expression "mctx.state_log" identifier . field_identifier) != (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (goto_statement "goto LAB_00034478;" goto statement_identifier ;))) (goto_statement "goto LAB_00034498;" goto statement_identifier ;) })) (expression_statement "pprVar22 = prVar44->word_trtable;" (assignment_expression "pprVar22 = prVar44->word_trtable" identifier = (field_expression "prVar44->word_trtable" identifier -> field_identifier)) ;) (if_statement "if (pprVar22 != (re_dfastate_t **)0x0) {\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }" if (parenthesized_expression "(pprVar22 != (re_dfastate_t **)0x0)" ( (binary_expression "pprVar22 != (re_dfastate_t **)0x0" identifier != (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n                uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);\n                if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }\n                goto LAB_0003446c;\n              }" { (expression_statement "uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags);" (assignment_expression "uVar15 = re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags)" identifier = (call_expression "re_string_context_at(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags)" identifier (argument_list "(&mctx.input,mctx.input.cur_idx + -1,mctx.eflags)" ( (pointer_expression "&mctx.input" & (field_expression "mctx.input" identifier . field_identifier)) , (binary_expression "mctx.input.cur_idx + -1" (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) + number_literal) , (field_expression "mctx.eflags" identifier . field_identifier) )))) ;) (if_statement "if ((uVar15 & 1) == 0) {\n                  prVar41 = pprVar22[uVar12];\n                }\n                else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }" if (parenthesized_expression "((uVar15 & 1) == 0)" ( (binary_expression "(uVar15 & 1) == 0" (parenthesized_expression "(uVar15 & 1)" ( (binary_expression "uVar15 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  prVar41 = pprVar22[uVar12];\n                }" { (expression_statement "prVar41 = pprVar22[uVar12];" (assignment_expression "prVar41 = pprVar22[uVar12]" identifier = (subscript_expression "pprVar22[uVar12]" identifier [ identifier ])) ;) }) (else_clause "else {\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }" else (compound_statement "{\n                  prVar41 = pprVar22[uVar12 + 0x100];\n                }" { (expression_statement "prVar41 = pprVar22[uVar12 + 0x100];" (assignment_expression "prVar41 = pprVar22[uVar12 + 0x100]" identifier = (subscript_expression "pprVar22[uVar12 + 0x100]" identifier [ (binary_expression "uVar12 + 0x100" identifier + number_literal) ])) ;) }))) (goto_statement "goto LAB_0003446c;" goto statement_identifier ;) })) (expression_statement "iVar33 = (*pcVar32)(mctx.dfa,prVar44);" (assignment_expression "iVar33 = (*pcVar32)(mctx.dfa,prVar44)" identifier = (call_expression "(*pcVar32)(mctx.dfa,prVar44)" (parenthesized_expression "(*pcVar32)" ( (pointer_expression "*pcVar32" * identifier) )) (argument_list "(mctx.dfa,prVar44)" ( (field_expression "mctx.dfa" identifier . field_identifier) , identifier )))) ;) }) while (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) ;) (expression_statement "err = _REG_ESPACE;" (assignment_expression "err = _REG_ESPACE" identifier = identifier) ;) (expression_statement "rVar10 = err;" (assignment_expression "rVar10 = err" identifier = identifier) ;) (labeled_statement "joined_r0x00034dec:\n            err = rVar10;" statement_identifier : (expression_statement "err = rVar10;" (assignment_expression "err = rVar10" identifier = identifier) ;)) (if_statement "if (mctx.state_log == (re_dfastate_t **)0x0) {\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }" if (parenthesized_expression "(mctx.state_log == (re_dfastate_t **)0x0)" ( (binary_expression "mctx.state_log == (re_dfastate_t **)0x0" (field_expression "mctx.state_log" identifier . field_identifier) == (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n              pprVar22 = (re_dfastate_t **)0x0;\n              goto LAB_00034230;\n            }" { (expression_statement "pprVar22 = (re_dfastate_t **)0x0;" (assignment_expression "pprVar22 = (re_dfastate_t **)0x0" identifier = (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (goto_statement "goto LAB_00034230;" goto statement_identifier ;) })) (expression_statement "prVar41 = (re_dfastate_t *)0x0;" (assignment_expression "prVar41 = (re_dfastate_t *)0x0" identifier = (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00034478:\n            prVar41 = merge_state_with_log(&err,&mctx,prVar41);" statement_identifier : (expression_statement "prVar41 = merge_state_with_log(&err,&mctx,prVar41);" (assignment_expression "prVar41 = merge_state_with_log(&err,&mctx,prVar41)" identifier = (call_expression "merge_state_with_log(&err,&mctx,prVar41)" identifier (argument_list "(&err,&mctx,prVar41)" ( (pointer_expression "&err" & identifier) , (pointer_expression "&mctx" & identifier) , identifier )))) ;)) (labeled_statement "LAB_00034498:\n            prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;" statement_identifier : (expression_statement "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;" (assignment_expression "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx" identifier = (cast_expression "(re_dfastate_t *)mctx.input.cur_idx" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;)) (if_statement "if (prVar41 == (re_dfastate_t *)0x0) {\n              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }" if (parenthesized_expression "(prVar41 == (re_dfastate_t *)0x0)" ( (binary_expression "prVar41 == (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              pprVar22 = mctx.state_log;\n              if (err != _REG_NOERROR) goto LAB_00034230;\n              if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;\n              start = (Idx)&err;\n              do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);\n            }" { (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (if_statement "if (err != _REG_NOERROR) goto LAB_00034230;" if (parenthesized_expression "(err != _REG_NOERROR)" ( (binary_expression "err != _REG_NOERROR" identifier != identifier) )) (goto_statement "goto LAB_00034230;" goto statement_identifier ;)) (if_statement "if ((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))) break;" if (parenthesized_expression "((mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30))))" ( (binary_expression "(mctx.state_log == (re_dfastate_t **)0x0) || ((bVar5 && (!bVar30)))" (parenthesized_expression "(mctx.state_log == (re_dfastate_t **)0x0)" ( (binary_expression "mctx.state_log == (re_dfastate_t **)0x0" (field_expression "mctx.state_log" identifier . field_identifier) == (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) || (parenthesized_expression "((bVar5 && (!bVar30)))" ( (parenthesized_expression "(bVar5 && (!bVar30))" ( (binary_expression "bVar5 && (!bVar30)" identifier && (parenthesized_expression "(!bVar30)" ( (unary_expression "!bVar30" ! identifier) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "start = (Idx)&err;" (assignment_expression "start = (Idx)&err" identifier = (binary_expression "(Idx)&err" (parenthesized_expression "(Idx)" ( identifier )) & identifier)) ;) (do_statement "do {\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              } while (prVar41 == (re_dfastate_t *)0x0);" do (compound_statement "{\n                bVar2 = false;\n                pprVar22 = mctx.state_log + mctx.input.cur_idx;\n                IVar21 = mctx.input.cur_idx;\n                do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);\n                mctx.input.cur_idx = iVar33;\n                prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);\n                prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;\n                if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }\n              }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "pprVar22 = mctx.state_log + mctx.input.cur_idx;" (assignment_expression "pprVar22 = mctx.state_log + mctx.input.cur_idx" identifier = (binary_expression "mctx.state_log + mctx.input.cur_idx" (field_expression "mctx.state_log" identifier . field_identifier) + (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;) (expression_statement "IVar21 = mctx.input.cur_idx;" (assignment_expression "IVar21 = mctx.input.cur_idx" identifier = (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ;) (do_statement "do {\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                } while (*pprVar22 == (re_dfastate_t *)0x0);" do (compound_statement "{\n                  iVar33 = IVar21 + 1;\n                  pprVar22 = pprVar22 + 1;\n                  if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar2 = true;\n                  IVar21 = iVar33;\n                }" { (expression_statement "iVar33 = IVar21 + 1;" (assignment_expression "iVar33 = IVar21 + 1" identifier = (binary_expression "IVar21 + 1" identifier + number_literal)) ;) (expression_statement "pprVar22 = pprVar22 + 1;" (assignment_expression "pprVar22 = pprVar22 + 1" identifier = (binary_expression "pprVar22 + 1" identifier + number_literal)) ;) (if_statement "if (mctx.state_log_top < iVar33) {\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }" if (parenthesized_expression "(mctx.state_log_top < iVar33)" ( (binary_expression "mctx.state_log_top < iVar33" (field_expression "mctx.state_log_top" identifier . field_identifier) < identifier) )) (compound_statement "{\n                    if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }\n                    goto LAB_00034748;\n                  }" { (if_statement "if (bVar2) {\n                      mctx.input.cur_idx = IVar21;\n                    }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n                      mctx.input.cur_idx = IVar21;\n                    }" { (expression_statement "mctx.input.cur_idx = IVar21;" (assignment_expression "mctx.input.cur_idx = IVar21" (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) })) (goto_statement "goto LAB_00034748;" goto statement_identifier ;) })) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "IVar21 = iVar33;" (assignment_expression "IVar21 = iVar33" identifier = identifier) ;) }) while (parenthesized_expression "(*pprVar22 == (re_dfastate_t *)0x0)" ( (binary_expression "*pprVar22 == (re_dfastate_t *)0x0" (pointer_expression "*pprVar22" * identifier) == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "mctx.input.cur_idx = iVar33;" (assignment_expression "mctx.input.cur_idx = iVar33" (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0);" (assignment_expression "prVar41 = merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0)" identifier = (call_expression "merge_state_with_log((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0)" identifier (argument_list "((reg_errcode_t *)start,&mctx,(re_dfastate_t *)0x0)" ( (cast_expression "(reg_errcode_t *)start" ( (type_descriptor "reg_errcode_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&mctx" & identifier) , (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx;" (assignment_expression "prStack_c4 = (re_dfastate_t *)mctx.input.cur_idx" identifier = (cast_expression "(re_dfastate_t *)mctx.input.cur_idx" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier))) ;) (if_statement "if (err != _REG_NOERROR) {\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }" if (parenthesized_expression "(err != _REG_NOERROR)" ( (binary_expression "err != _REG_NOERROR" identifier != identifier) )) (compound_statement "{\n                  if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;\n                  break;\n                }" { (if_statement "if (prVar41 == (re_dfastate_t *)0x0) goto LAB_00034748;" if (parenthesized_expression "(prVar41 == (re_dfastate_t *)0x0)" ( (binary_expression "prVar41 == (re_dfastate_t *)0x0" identifier == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00034748;" goto statement_identifier ;)) (break_statement "break;" break ;) })) }) while (parenthesized_expression "(prVar41 == (re_dfastate_t *)0x0)" ( (binary_expression "prVar41 == (re_dfastate_t *)0x0" identifier == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "puVar9 = puStack_140;" (assignment_expression "puVar9 = puStack_140" identifier = identifier) ;) (if_statement "if ((bVar4) && (puVar9 = puVar43, prVar44 != prVar41)) {\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }" if (parenthesized_expression "((bVar4) && (puVar9 = puVar43, prVar44 != prVar41))" ( (binary_expression "(bVar4) && (puVar9 = puVar43, prVar44 != prVar41)" (parenthesized_expression "(bVar4)" ( identifier )) && (parenthesized_expression "(puVar9 = puVar43, prVar44 != prVar41)" ( (comma_expression "puVar9 = puVar43, prVar44 != prVar41" (assignment_expression "puVar9 = puVar43" identifier = identifier) , (binary_expression "prVar44 != prVar41" identifier != identifier)) ))) )) (compound_statement "{\n              bVar4 = false;\n              puVar9 = puStack_140;\n            }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "puVar9 = puStack_140;" (assignment_expression "puVar9 = puStack_140" identifier = identifier) ;) })) (expression_statement "puStack_140 = puVar9;" (assignment_expression "puStack_140 = puVar9" identifier = identifier) ;) (expression_statement "prVar44 = prVar41;" (assignment_expression "prVar44 = prVar41" identifier = identifier) ;) (expression_statement "mctx.input.cur_idx = (Idx)prStack_c4;" (assignment_expression "mctx.input.cur_idx = (Idx)prStack_c4" (field_expression "mctx.input.cur_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) = (cast_expression "(Idx)prStack_c4" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (if_statement "if (((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))) {\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }" if (parenthesized_expression "(((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0))))" ( (binary_expression "((prVar41->field_0x34 & 8) != 0) &&\n               (((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))" (parenthesized_expression "((prVar41->field_0x34 & 8) != 0)" ( (binary_expression "(prVar41->field_0x34 & 8) != 0" (parenthesized_expression "(prVar41->field_0x34 & 8)" ( (binary_expression "prVar41->field_0x34 & 8" (field_expression "prVar41->field_0x34" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)))" ( (parenthesized_expression "((prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0))" ( (binary_expression "(prVar41->field_0x34 & 1) == 0 ||\n                (IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)" (binary_expression "(prVar41->field_0x34 & 1) == 0" (parenthesized_expression "(prVar41->field_0x34 & 1)" ( (binary_expression "prVar41->field_0x34 & 1" (field_expression "prVar41->field_0x34" identifier -> field_identifier) & number_literal) )) == number_literal) || (parenthesized_expression "(IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0)" ( (comma_expression "IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4), IVar21 != 0" (assignment_expression "IVar21 = check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4)" identifier = (call_expression "check_halt_state_context\n                                    (&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4)" identifier (argument_list "(&mctx,(re_dfastate_t *)(prVar41->nodes).nelem,\n                                     (Idx)&(prVar41->nodes).elems,prStack_c4)" ( (pointer_expression "&mctx" & identifier) , (cast_expression "(re_dfastate_t *)(prVar41->nodes).nelem" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(prVar41->nodes).nelem" (parenthesized_expression "(prVar41->nodes)" ( (field_expression "prVar41->nodes" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "(Idx)&(prVar41->nodes).elems" (parenthesized_expression "(Idx)" ( identifier )) & (field_expression "(prVar41->nodes).elems" (parenthesized_expression "(prVar41->nodes)" ( (field_expression "prVar41->nodes" identifier -> field_identifier) )) . field_identifier)) , identifier )))) , (binary_expression "IVar21 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n              if (!bVar30) goto LAB_00034760;\n              piStack_14c = (int *)0x0;\n              prVar37 = prStack_c4;\n              bVar5 = bVar30;\n            }" { (if_statement "if (!bVar30) goto LAB_00034760;" if (parenthesized_expression "(!bVar30)" ( (unary_expression "!bVar30" ! identifier) )) (goto_statement "goto LAB_00034760;" goto statement_identifier ;)) (expression_statement "piStack_14c = (int *)0x0;" (assignment_expression "piStack_14c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prVar37 = prStack_c4;" (assignment_expression "prVar37 = prStack_c4" identifier = identifier) ;) (expression_statement "bVar5 = bVar30;" (assignment_expression "bVar5 = bVar30" identifier = identifier) ;) })) })) (labeled_statement "LAB_00034748:\n          prStack_c4 = prVar37;" statement_identifier : (expression_statement "prStack_c4 = prVar37;" (assignment_expression "prStack_c4 = prVar37" identifier = identifier) ;)) (if_statement "if (piStack_14c != (int *)0x0) {\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }" if (parenthesized_expression "(piStack_14c != (int *)0x0)" ( (binary_expression "piStack_14c != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *piStack_14c = (int)(puStack_140 + *piStack_14c);\n          }" { (expression_statement "*piStack_14c = (int)(puStack_140 + *piStack_14c);" (assignment_expression "*piStack_14c = (int)(puStack_140 + *piStack_14c)" (pointer_expression "*piStack_14c" * identifier) = (cast_expression "(int)(puStack_140 + *piStack_14c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puStack_140 + *piStack_14c)" ( (binary_expression "puStack_140 + *piStack_14c" identifier + (pointer_expression "*piStack_14c" * identifier)) )))) ;) })) }) (else_clause "else {\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" else (compound_statement "{\n          pIVar24 = &(prVar44->nodes).nelem;\n          nodes_1 = &(prVar44->nodes).elems;\n          prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);\n          err = (reg_errcode_t)prStack_c4;\n          if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" { (expression_statement "pIVar24 = &(prVar44->nodes).nelem;" (assignment_expression "pIVar24 = &(prVar44->nodes).nelem" identifier = (pointer_expression "&(prVar44->nodes).nelem" & (field_expression "(prVar44->nodes).nelem" (parenthesized_expression "(prVar44->nodes)" ( (field_expression "prVar44->nodes" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "nodes_1 = &(prVar44->nodes).elems;" (assignment_expression "nodes_1 = &(prVar44->nodes).elems" identifier = (pointer_expression "&(prVar44->nodes).elems" & (field_expression "(prVar44->nodes).elems" (parenthesized_expression "(prVar44->nodes)" ( (field_expression "prVar44->nodes" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0);" (assignment_expression "prStack_c4 = (re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0)" identifier = (cast_expression "(re_dfastate_t *)\n                       check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0)" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "check_subexp_matching_top\n                                 (&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0)" identifier (argument_list "(&mctx,(re_node_set *)pIVar24,(Idx)nodes_1,(re_node_set *)0x0)" ( (pointer_expression "&mctx" & identifier) , (cast_expression "(re_node_set *)pIVar24" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Idx)nodes_1" ( (type_descriptor "Idx" type_identifier) ) identifier) , (cast_expression "(re_node_set *)0x0" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "err = (reg_errcode_t)prStack_c4;" (assignment_expression "err = (reg_errcode_t)prStack_c4" identifier = (cast_expression "(reg_errcode_t)prStack_c4" ( (type_descriptor "reg_errcode_t" type_identifier) ) identifier)) ;) (if_statement "if (prStack_c4 == (re_dfastate_t *)0x0) {\n            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }" if (parenthesized_expression "(prStack_c4 == (re_dfastate_t *)0x0)" ( (binary_expression "prStack_c4 == (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            if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }" { (if_statement "if ((prVar44->field_0x34 & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }" if (parenthesized_expression "((prVar44->field_0x34 & 2) == 0)" ( (binary_expression "(prVar44->field_0x34 & 2) == 0" (parenthesized_expression "(prVar44->field_0x34 & 2)" ( (binary_expression "prVar44->field_0x34 & 2" (field_expression "prVar44->field_0x34" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n              bVar4 = false;\n            }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else {\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }" else (compound_statement "{\n              prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);\n              err = (reg_errcode_t)prStack_c4;\n              if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;\n              bVar4 = false;\n            }" { (expression_statement "prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1);" (assignment_expression "prStack_c4 = (re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1)" identifier = (cast_expression "(re_dfastate_t *)\n                           transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1)" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "transit_state_bkref(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1)" identifier (argument_list "(&mctx,(re_node_set *)pIVar24,(re_node_set *)nodes_1)" ( (pointer_expression "&mctx" & identifier) , (cast_expression "(re_node_set *)pIVar24" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(re_node_set *)nodes_1" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) (expression_statement "err = (reg_errcode_t)prStack_c4;" (assignment_expression "err = (reg_errcode_t)prStack_c4" identifier = (cast_expression "(reg_errcode_t)prStack_c4" ( (type_descriptor "reg_errcode_t" type_identifier) ) identifier)) ;) (if_statement "if (prStack_c4 != (re_dfastate_t *)0x0) goto LAB_00034760;" if (parenthesized_expression "(prStack_c4 != (re_dfastate_t *)0x0)" ( (binary_expression "prStack_c4 != (re_dfastate_t *)0x0" identifier != (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00034760;" goto statement_identifier ;)) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))) (goto_statement "goto LAB_000343c4;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00034760:\n        pprVar22 = mctx.state_log;" statement_identifier : (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;)) (expression_statement "puVar7 = PTR_LAB_0005332c;" (assignment_expression "puVar7 = PTR_LAB_0005332c" identifier = identifier) ;) (if_statement "if (prStack_c4 != (re_dfastate_t *)0xffffffff) {\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }" if (parenthesized_expression "(prStack_c4 != (re_dfastate_t *)0xffffffff)" ( (binary_expression "prStack_c4 != (re_dfastate_t *)0xffffffff" identifier != (cast_expression "(re_dfastate_t *)0xffffffff" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;\n          mctx.match_last = (Idx)prStack_c4;\n          if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          pprVar22 = mctx.state_log;\n          rStack_154 = rVar18;\n          if (nmatch == 0) goto LAB_0003423c;\n          IVar21 = (((re_match_context_t *)preg)->input).valid_len;\n          if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          pmatch->rm_so = 0;\n          pmatch->rm_eo = mctx.match_last;\n          goto LAB_00034eb4;\n        }" { (if_statement "if (prStack_c4 == (re_dfastate_t *)&SUB_fffffffe) goto LAB_00034274;" if (parenthesized_expression "(prStack_c4 == (re_dfastate_t *)&SUB_fffffffe)" ( (binary_expression "prStack_c4 == (re_dfastate_t *)&SUB_fffffffe" identifier == (cast_expression "(re_dfastate_t *)&SUB_fffffffe" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SUB_fffffffe" & identifier))) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (expression_statement "mctx.match_last = (Idx)prStack_c4;" (assignment_expression "mctx.match_last = (Idx)prStack_c4" (field_expression "mctx.match_last" identifier . field_identifier) = (cast_expression "(Idx)prStack_c4" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (if_statement "if (((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0) {\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }" if (parenthesized_expression "(((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0)" ( (binary_expression "((((re_match_context_t *)preg)->input).valid_len & 0x8000000) == 0" (parenthesized_expression "((((re_match_context_t *)preg)->input).valid_len & 0x8000000)" ( (binary_expression "(((re_match_context_t *)preg)->input).valid_len & 0x8000000" (field_expression "(((re_match_context_t *)preg)->input).valid_len" (parenthesized_expression "(((re_match_context_t *)preg)->input)" ( (field_expression "((re_match_context_t *)preg)->input" (parenthesized_expression "((re_match_context_t *)preg)" ( (cast_expression "(re_match_context_t *)preg" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }\n            mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\n            if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;\n          }" { (if_statement "if (!bVar1) {\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n              iVar33 = prVar46->nbackref;\n              goto joined_r0x00034fc8;\n            }" { (expression_statement "iVar33 = prVar46->nbackref;" (assignment_expression "iVar33 = prVar46->nbackref" identifier = (field_expression "prVar46->nbackref" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x00034fc8;" goto statement_identifier ;) })) (expression_statement "mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);" (assignment_expression "mctx.last_node =\n                 check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4)" (field_expression "mctx.last_node" identifier . field_identifier) = (call_expression "check_halt_state_context\n                           (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4)" identifier (argument_list "(&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                            (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4)" ( (pointer_expression "&mctx" & identifier) , (cast_expression "(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(mctx.state_log[(int)prStack_c4]->nodes).nelem" (parenthesized_expression "(mctx.state_log[(int)prStack_c4]->nodes)" ( (field_expression "mctx.state_log[(int)prStack_c4]->nodes" (subscript_expression "mctx.state_log[(int)prStack_c4]" (field_expression "mctx.state_log" identifier . field_identifier) [ (cast_expression "(int)prStack_c4" ( (type_descriptor "int" primitive_type) ) identifier) ]) -> field_identifier) )) . field_identifier)) , (binary_expression "(Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems" (parenthesized_expression "(Idx)" ( identifier )) & (field_expression "(mctx.state_log[(int)prStack_c4]->nodes).elems" (parenthesized_expression "(mctx.state_log[(int)prStack_c4]->nodes)" ( (field_expression "mctx.state_log[(int)prStack_c4]->nodes" (subscript_expression "mctx.state_log[(int)prStack_c4]" (field_expression "mctx.state_log" identifier . field_identifier) [ (cast_expression "(int)prStack_c4" ( (type_descriptor "int" primitive_type) ) identifier) ]) -> field_identifier) )) . field_identifier)) , identifier )))) ;) (if_statement "if (((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)) goto LAB_000347ec;" if (parenthesized_expression "(((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0))" ( (binary_expression "((char)prVar46->field_0x58 < '\0') || (prVar46->nbackref != 0)" (parenthesized_expression "((char)prVar46->field_0x58 < '\0')" ( (binary_expression "(char)prVar46->field_0x58 < '\0'" (cast_expression "(char)prVar46->field_0x58" ( (type_descriptor "char" primitive_type) ) (field_expression "prVar46->field_0x58" identifier -> field_identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(prVar46->nbackref != 0)" ( (binary_expression "prVar46->nbackref != 0" (field_expression "prVar46->nbackref" identifier -> field_identifier) != number_literal) ))) )) (goto_statement "goto LAB_000347ec;" goto statement_identifier ;)) }) (else_clause "else {\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }" else (compound_statement "{\n            iVar33 = prVar46->nbackref;\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }\n          }" { (expression_statement "iVar33 = prVar46->nbackref;" (assignment_expression "iVar33 = prVar46->nbackref" identifier = (field_expression "prVar46->nbackref" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x00034fc8:\n            if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }" statement_identifier : (if_statement "if (iVar33 != 0) {\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (compound_statement "{\n              mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);\nLAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;\n              prVar3 = mctx.dfa;\n              if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              rStack_154 = _REG_ESPACE;\n              goto LAB_0003423c;\n            }" { (expression_statement "mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4);" (assignment_expression "mctx.last_node =\n                   check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4)" (field_expression "mctx.last_node" identifier . field_identifier) = (call_expression "check_halt_state_context\n                             (&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4)" identifier (argument_list "(&mctx,(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem,\n                              (Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems,prStack_c4)" ( (pointer_expression "&mctx" & identifier) , (cast_expression "(re_dfastate_t *)(mctx.state_log[(int)prStack_c4]->nodes).nelem" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(mctx.state_log[(int)prStack_c4]->nodes).nelem" (parenthesized_expression "(mctx.state_log[(int)prStack_c4]->nodes)" ( (field_expression "mctx.state_log[(int)prStack_c4]->nodes" (subscript_expression "mctx.state_log[(int)prStack_c4]" (field_expression "mctx.state_log" identifier . field_identifier) [ (cast_expression "(int)prStack_c4" ( (type_descriptor "int" primitive_type) ) identifier) ]) -> field_identifier) )) . field_identifier)) , (binary_expression "(Idx)&(mctx.state_log[(int)prStack_c4]->nodes).elems" (parenthesized_expression "(Idx)" ( identifier )) & (field_expression "(mctx.state_log[(int)prStack_c4]->nodes).elems" (parenthesized_expression "(mctx.state_log[(int)prStack_c4]->nodes)" ( (field_expression "mctx.state_log[(int)prStack_c4]->nodes" (subscript_expression "mctx.state_log[(int)prStack_c4]" (field_expression "mctx.state_log" identifier . field_identifier) [ (cast_expression "(int)prStack_c4" ( (type_descriptor "int" primitive_type) ) identifier) ]) -> field_identifier) )) . field_identifier)) , identifier )))) ;) (labeled_statement "LAB_000347ec:\n              pIVar24 = (Idx *)mctx.last_node;" statement_identifier : (expression_statement "pIVar24 = (Idx *)mctx.last_node;" (assignment_expression "pIVar24 = (Idx *)mctx.last_node" identifier = (cast_expression "(Idx *)mctx.last_node" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx.last_node" identifier . field_identifier))) ;)) (expression_statement "prVar3 = mctx.dfa;" (assignment_expression "prVar3 = mctx.dfa" identifier = (field_expression "mctx.dfa" identifier . field_identifier)) ;) (if_statement "if (prStack_c4 < (re_dfastate_t *)0x3fffffff) {\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }" if (parenthesized_expression "(prStack_c4 < (re_dfastate_t *)0x3fffffff)" ( (binary_expression "prStack_c4 < (re_dfastate_t *)0x3fffffff" identifier < (cast_expression "(re_dfastate_t *)0x3fffffff" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);\n                pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;\n                if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(pprVar22);\n                (*(code *)PTR_free_000534fc)(pprStack_15c);\n                pprVar22 = mctx.state_log;\n                if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;\n                goto LAB_0003423c;\n              }" { (expression_statement "prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1);" (assignment_expression "prStack_160 = (re_dfastate_t *)((int)&prStack_c4->hash + 1)" identifier = (cast_expression "(re_dfastate_t *)((int)&prStack_c4->hash + 1)" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prStack_c4->hash + 1)" ( (binary_expression "(int)&prStack_c4->hash + 1" (cast_expression "(int)&prStack_c4->hash" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prStack_c4->hash" & (field_expression "prStack_c4->hash" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);" (assignment_expression "pprVar22 = (re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4)" identifier = (cast_expression "(re_dfastate_t **)(*(code *)PTR_malloc_00053474)((int)prStack_160 * 4)" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(*(code *)PTR_malloc_00053474)((int)prStack_160 * 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 "((int)prStack_160 * 4)" ( (binary_expression "(int)prStack_160 * 4" (cast_expression "(int)prStack_160" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))))) ;) (if_statement "if (pprVar22 == (re_dfastate_t **)0x0) goto LAB_00034274;" if (parenthesized_expression "(pprVar22 == (re_dfastate_t **)0x0)" ( (binary_expression "pprVar22 == (re_dfastate_t **)0x0" identifier == (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (if_statement "if (prVar3->nbackref == 0) {\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }\n                else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }" if (parenthesized_expression "(prVar3->nbackref == 0)" ( (binary_expression "prVar3->nbackref == 0" (field_expression "prVar3->nbackref" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                  dest_nodes.nelem = 0;\n                  dest_nodes.alloc = (Idx)pprVar22;\n                  dest_nodes.elems = pIVar24;\n                  rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);\n                  (*(code *)PTR_free_000534fc)(0);\n                  if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;\n                }" { (expression_statement "dest_nodes.nelem = 0;" (assignment_expression "dest_nodes.nelem = 0" (field_expression "dest_nodes.nelem" identifier . field_identifier) = number_literal) ;) (expression_statement "dest_nodes.alloc = (Idx)pprVar22;" (assignment_expression "dest_nodes.alloc = (Idx)pprVar22" (field_expression "dest_nodes.alloc" identifier . field_identifier) = (cast_expression "(Idx)pprVar22" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "dest_nodes.elems = pIVar24;" (assignment_expression "dest_nodes.elems = pIVar24" (field_expression "dest_nodes.elems" identifier . field_identifier) = identifier) ;) (expression_statement "rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes);" (assignment_expression "rStack_154 = sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes)" identifier = (call_expression "sift_states_backward(&mctx,(re_sift_context_t *)&dest_nodes)" identifier (argument_list "(&mctx,(re_sift_context_t *)&dest_nodes)" ( (pointer_expression "&mctx" & identifier) , (cast_expression "(re_sift_context_t *)&dest_nodes" ( (type_descriptor "re_sift_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dest_nodes" & identifier)) )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(0);" (call_expression "(*(code *)PTR_free_000534fc)(0)" (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 "(0)" ( number_literal ))) ;) (if_statement "if (rStack_154 == _REG_NOERROR) {\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }" if (parenthesized_expression "(rStack_154 == _REG_NOERROR)" ( (binary_expression "rStack_154 == _REG_NOERROR" identifier == identifier) )) (compound_statement "{\n                    if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);\n                    mctx.match_last = (Idx)prStack_c4;\n                    mctx.last_node = (Idx)pIVar24;\n                    mctx.state_log = pprVar22;\n                    goto LAB_00034e5c;\n                  }" { (if_statement "if (*pprVar22 == (re_dfastate_t *)0x0) {\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }" if (parenthesized_expression "(*pprVar22 == (re_dfastate_t *)0x0)" ( (binary_expression "*pprVar22 == (re_dfastate_t *)0x0" (pointer_expression "*pprVar22" * identifier) == (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      (*(code *)PTR_free_000534fc)(pprVar22);\n                      goto LAB_00034950;\n                    }" { (expression_statement "(*(code *)PTR_free_000534fc)(pprVar22);" (call_expression "(*(code *)PTR_free_000534fc)(pprVar22)" (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 "(pprVar22)" ( identifier ))) ;) (goto_statement "goto LAB_00034950;" goto statement_identifier ;) })) (labeled_statement "LAB_00035074:\n                    (*(code *)PTR_free_000534fc)(mctx.state_log);" statement_identifier : (expression_statement "(*(code *)PTR_free_000534fc)(mctx.state_log);" (call_expression "(*(code *)PTR_free_000534fc)(mctx.state_log)" (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 "(mctx.state_log)" ( (field_expression "mctx.state_log" identifier . field_identifier) ))) ;)) (expression_statement "mctx.match_last = (Idx)prStack_c4;" (assignment_expression "mctx.match_last = (Idx)prStack_c4" (field_expression "mctx.match_last" identifier . field_identifier) = (cast_expression "(Idx)prStack_c4" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "mctx.last_node = (Idx)pIVar24;" (assignment_expression "mctx.last_node = (Idx)pIVar24" (field_expression "mctx.last_node" identifier . field_identifier) = (cast_expression "(Idx)pIVar24" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "mctx.state_log = pprVar22;" (assignment_expression "mctx.state_log = pprVar22" (field_expression "mctx.state_log" identifier . field_identifier) = identifier) ;) (goto_statement "goto LAB_00034e5c;" goto statement_identifier ;) })) (labeled_statement "LAB_00035394:\n                  pprStack_15c = (re_dfastate_t **)0x0;" statement_identifier : (expression_statement "pprStack_15c = (re_dfastate_t **)0x0;" (assignment_expression "pprStack_15c = (re_dfastate_t **)0x0" identifier = (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;)) }) (else_clause "else {\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }" else (compound_statement "{\n                  pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);\n                  if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }\n                  pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }\n                }" { (expression_statement "pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4);" (assignment_expression "pprStack_15c = (re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4)" identifier = (cast_expression "(re_dfastate_t **)\n                                 (*(code *)PTR_malloc_00053474)((int)prStack_160 * 4)" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(*(code *)PTR_malloc_00053474)((int)prStack_160 * 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 "((int)prStack_160 * 4)" ( (binary_expression "(int)prStack_160 * 4" (cast_expression "(int)prStack_160" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))))) ;) (if_statement "if (pprStack_15c == (re_dfastate_t **)0x0) {\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }" if (parenthesized_expression "(pprStack_15c == (re_dfastate_t **)0x0)" ( (binary_expression "pprStack_15c == (re_dfastate_t **)0x0" identifier == (cast_expression "(re_dfastate_t **)0x0" ( (type_descriptor "re_dfastate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n                    (*(code *)PTR_free_000534fc)(pprVar22);\n                    rStack_154 = _REG_ESPACE;\n                    pprVar22 = mctx.state_log;\n                    goto LAB_0003423c;\n                  }" { (expression_statement "(*(code *)PTR_free_000534fc)(pprVar22);" (call_expression "(*(code *)PTR_free_000534fc)(pprVar22)" (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 "(pprVar22)" ( identifier ))) ;) (expression_statement "rStack_154 = _REG_ESPACE;" (assignment_expression "rStack_154 = _REG_ESPACE" identifier = identifier) ;) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) (expression_statement "pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988);" (assignment_expression "pcVar19 = (code *)(PTR_LAB_0005332c + 0x3988)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + 0x3988)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + 0x3988)" ( (binary_expression "PTR_LAB_0005332c + 0x3988" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                    (*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);\n                    dest_nodes.alloc = (Idx)pprVar22;\n                    dest_nodes.nelem = (Idx)pprStack_15c;\n                    dest_nodes.elems = pIVar24;\n                    rStack_154 = (*pcVar19)(&mctx,&dest_nodes);\n                    (*(code *)PTR_free_000534fc)(0);\n                    if (rStack_154 != _REG_NOERROR) break;\n                    if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;\n                    prStack_160 = prStack_c4;\n                    while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }\n                    pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);\n                  }" { (expression_statement "(*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4);" (call_expression "(*(code *)PTR_memset_00053430)(pprStack_15c,0,(int)prStack_160 * 4)" (parenthesized_expression "(*(code *)PTR_memset_00053430)" ( (pointer_expression "*(code *)PTR_memset_00053430" * (cast_expression "(code *)PTR_memset_00053430" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pprStack_15c,0,(int)prStack_160 * 4)" ( identifier , number_literal , (binary_expression "(int)prStack_160 * 4" (cast_expression "(int)prStack_160" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) ;) (expression_statement "dest_nodes.alloc = (Idx)pprVar22;" (assignment_expression "dest_nodes.alloc = (Idx)pprVar22" (field_expression "dest_nodes.alloc" identifier . field_identifier) = (cast_expression "(Idx)pprVar22" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "dest_nodes.nelem = (Idx)pprStack_15c;" (assignment_expression "dest_nodes.nelem = (Idx)pprStack_15c" (field_expression "dest_nodes.nelem" identifier . field_identifier) = (cast_expression "(Idx)pprStack_15c" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "dest_nodes.elems = pIVar24;" (assignment_expression "dest_nodes.elems = pIVar24" (field_expression "dest_nodes.elems" identifier . field_identifier) = identifier) ;) (expression_statement "rStack_154 = (*pcVar19)(&mctx,&dest_nodes);" (assignment_expression "rStack_154 = (*pcVar19)(&mctx,&dest_nodes)" identifier = (call_expression "(*pcVar19)(&mctx,&dest_nodes)" (parenthesized_expression "(*pcVar19)" ( (pointer_expression "*pcVar19" * identifier) )) (argument_list "(&mctx,&dest_nodes)" ( (pointer_expression "&mctx" & identifier) , (pointer_expression "&dest_nodes" & identifier) )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(0);" (call_expression "(*(code *)PTR_free_000534fc)(0)" (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 "(0)" ( number_literal ))) ;) (if_statement "if (rStack_154 != _REG_NOERROR) break;" if (parenthesized_expression "(rStack_154 != _REG_NOERROR)" ( (binary_expression "rStack_154 != _REG_NOERROR" identifier != identifier) )) (break_statement "break;" break ;)) (if_statement "if ((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)) {\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }" if (parenthesized_expression "((*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0))" ( (binary_expression "(*pprVar22 != (re_dfastate_t *)0x0) ||\n                       (*pprStack_15c != (re_dfastate_t *)0x0)" (parenthesized_expression "(*pprVar22 != (re_dfastate_t *)0x0)" ( (binary_expression "*pprVar22 != (re_dfastate_t *)0x0" (pointer_expression "*pprVar22" * identifier) != (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pprStack_15c != (re_dfastate_t *)0x0)" ( (binary_expression "*pprStack_15c != (re_dfastate_t *)0x0" (pointer_expression "*pprStack_15c" * identifier) != (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                      rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);\n                      (*(code *)PTR_free_000534fc)(pprStack_15c);\n                      if (rStack_154 != _REG_NOERROR) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }" { (expression_statement "rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160);" (assignment_expression "rStack_154 = merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160)" identifier = (call_expression "merge_state_array(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160)" identifier (argument_list "(prVar3,pprVar22,pprStack_15c,(Idx)prStack_160)" ( identifier , identifier , identifier , (cast_expression "(Idx)prStack_160" ( (type_descriptor "Idx" type_identifier) ) identifier) )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(pprStack_15c);" (call_expression "(*(code *)PTR_free_000534fc)(pprStack_15c)" (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 "(pprStack_15c)" ( identifier ))) ;) (if_statement "if (rStack_154 != _REG_NOERROR) goto LAB_00035394;" if (parenthesized_expression "(rStack_154 != _REG_NOERROR)" ( (binary_expression "rStack_154 != _REG_NOERROR" identifier != identifier) )) (goto_statement "goto LAB_00035394;" goto statement_identifier ;)) (goto_statement "goto LAB_00035074;" goto statement_identifier ;) })) (expression_statement "pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37;" (assignment_expression "pprVar23 = mctx.state_log + (int)&prStack_160[-1].field_0x37" identifier = (binary_expression "mctx.state_log + (int)&prStack_160[-1].field_0x37" (field_expression "mctx.state_log" identifier . field_identifier) + (cast_expression "(int)&prStack_160[-1].field_0x37" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prStack_160[-1].field_0x37" & (field_expression "prStack_160[-1].field_0x37" (subscript_expression "prStack_160[-1]" identifier [ number_literal ]) . field_identifier))))) ;) (expression_statement "prStack_160 = prStack_c4;" (assignment_expression "prStack_160 = prStack_c4" identifier = identifier) ;) (while_statement "while( true ) {\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                      prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;\n                      if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }\n                      prVar37 = pprVar23[-1];\n                      if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;\n                      pprVar23 = pprVar23 + -1;\n                      prStack_160 = prStack_c4;\n                    }" { (expression_statement "prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37;" (assignment_expression "prStack_c4 = (re_dfastate_t *)&prStack_160[-1].field_0x37" identifier = (cast_expression "(re_dfastate_t *)&prStack_160[-1].field_0x37" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prStack_160[-1].field_0x37" & (field_expression "prStack_160[-1].field_0x37" (subscript_expression "prStack_160[-1]" identifier [ number_literal ]) . field_identifier)))) ;) (if_statement "if (prStack_c4 == (re_dfastate_t *)0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }" if (parenthesized_expression "(prStack_c4 == (re_dfastate_t *)0xffffffff)" ( (binary_expression "prStack_c4 == (re_dfastate_t *)0xffffffff" identifier == (cast_expression "(re_dfastate_t *)0xffffffff" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        (*(code *)PTR_free_000534fc)(pprVar22);\n                        (*(code *)PTR_free_000534fc)(pprStack_15c);\n                        goto LAB_00034950;\n                      }" { (expression_statement "(*(code *)PTR_free_000534fc)(pprVar22);" (call_expression "(*(code *)PTR_free_000534fc)(pprVar22)" (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 "(pprVar22)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(pprStack_15c);" (call_expression "(*(code *)PTR_free_000534fc)(pprStack_15c)" (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 "(pprStack_15c)" ( identifier ))) ;) (goto_statement "goto LAB_00034950;" goto statement_identifier ;) })) (expression_statement "prVar37 = pprVar23[-1];" (assignment_expression "prVar37 = pprVar23[-1]" identifier = (subscript_expression "pprVar23[-1]" identifier [ number_literal ])) ;) (if_statement "if ((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))\n                      break;" if (parenthesized_expression "((prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0))" ( (binary_expression "(prVar37 != (re_dfastate_t *)0x0) && ((prVar37->field_0x34 & 8) != 0)" (parenthesized_expression "(prVar37 != (re_dfastate_t *)0x0)" ( (binary_expression "prVar37 != (re_dfastate_t *)0x0" identifier != (cast_expression "(re_dfastate_t *)0x0" ( (type_descriptor "re_dfastate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((prVar37->field_0x34 & 8) != 0)" ( (binary_expression "(prVar37->field_0x34 & 8) != 0" (parenthesized_expression "(prVar37->field_0x34 & 8)" ( (binary_expression "prVar37->field_0x34 & 8" (field_expression "prVar37->field_0x34" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "pprVar23 = pprVar23 + -1;" (assignment_expression "pprVar23 = pprVar23 + -1" identifier = (binary_expression "pprVar23 + -1" identifier + number_literal)) ;) (expression_statement "prStack_160 = prStack_c4;" (assignment_expression "prStack_160 = prStack_c4" identifier = identifier) ;) })) (expression_statement "pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4);" (assignment_expression "pIVar24 = (Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4)" identifier = (cast_expression "(Idx *)(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(puVar7 + -0x1be4))\n                                               (&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4)" (parenthesized_expression "(*(code *)(puVar7 + -0x1be4))" ( (pointer_expression "*(code *)(puVar7 + -0x1be4)" * (cast_expression "(code *)(puVar7 + -0x1be4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x1be4)" ( (binary_expression "puVar7 + -0x1be4" identifier + number_literal) )))) )) (argument_list "(&mctx,(prVar37->nodes).nelem,&(prVar37->nodes).elems\n                                                ,prStack_c4)" ( (pointer_expression "&mctx" & identifier) , (field_expression "(prVar37->nodes).nelem" (parenthesized_expression "(prVar37->nodes)" ( (field_expression "prVar37->nodes" identifier -> field_identifier) )) . field_identifier) , (pointer_expression "&(prVar37->nodes).elems" & (field_expression "(prVar37->nodes).elems" (parenthesized_expression "(prVar37->nodes)" ( (field_expression "prVar37->nodes" identifier -> field_identifier) )) . field_identifier)) , identifier ))))) ;) })) }))) (expression_statement "(*(code *)PTR_free_000534fc)(pprVar22);" (call_expression "(*(code *)PTR_free_000534fc)(pprVar22)" (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 "(pprVar22)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(pprStack_15c);" (call_expression "(*(code *)PTR_free_000534fc)(pprStack_15c)" (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 "(pprStack_15c)" ( identifier ))) ;) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (if_statement "if (rStack_154 == _REG_NOMATCH) goto LAB_00034950;" if (parenthesized_expression "(rStack_154 == _REG_NOMATCH)" ( (binary_expression "rStack_154 == _REG_NOMATCH" identifier == identifier) )) (goto_statement "goto LAB_00034950;" goto statement_identifier ;)) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) (expression_statement "rStack_154 = _REG_ESPACE;" (assignment_expression "rStack_154 = _REG_ESPACE" identifier = identifier) ;) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) }))) }))) (labeled_statement "LAB_00034e5c:\n          pprVar22 = mctx.state_log;" statement_identifier : (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;)) (expression_statement "rStack_154 = rVar18;" (assignment_expression "rStack_154 = rVar18" identifier = identifier) ;) (if_statement "if (nmatch == 0) goto LAB_0003423c;" if (parenthesized_expression "(nmatch == 0)" ( (binary_expression "nmatch == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "IVar21 = (((re_match_context_t *)preg)->input).valid_len;" (assignment_expression "IVar21 = (((re_match_context_t *)preg)->input).valid_len" identifier = (field_expression "(((re_match_context_t *)preg)->input).valid_len" (parenthesized_expression "(((re_match_context_t *)preg)->input)" ( (field_expression "((re_match_context_t *)preg)->input" (parenthesized_expression "((re_match_context_t *)preg)" ( (cast_expression "(re_match_context_t *)preg" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) )) . field_identifier)) ;) (if_statement "if (bVar1) {\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n            prVar28 = pmatch + 1;\n            do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);\n            pmatch->rm_so = 0;\n            pmatch->rm_eo = mctx.match_last;\n            if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }\n            uVar12 = 0;\n            prVar28 = pmatch;\n            while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }\n            if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }\n            piVar16 = prVar46->subexp_map;\n            pprVar22 = mctx.state_log;\n            rStack_154 = rVar18;\n            if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }\n            goto LAB_0003423c;\n          }" { (expression_statement "prVar28 = pmatch + 1;" (assignment_expression "prVar28 = pmatch + 1" identifier = (binary_expression "pmatch + 1" identifier + number_literal)) ;) (do_statement "do {\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            } while (pmatch + nmatch != prVar27);" do (compound_statement "{\n              prVar28->rm_eo = -1;\n              prVar27 = prVar28 + 1;\n              prVar28->rm_so = -1;\n              prVar28 = prVar27;\n            }" { (expression_statement "prVar28->rm_eo = -1;" (assignment_expression "prVar28->rm_eo = -1" (field_expression "prVar28->rm_eo" identifier -> field_identifier) = number_literal) ;) (expression_statement "prVar27 = prVar28 + 1;" (assignment_expression "prVar27 = prVar28 + 1" identifier = (binary_expression "prVar28 + 1" identifier + number_literal)) ;) (expression_statement "prVar28->rm_so = -1;" (assignment_expression "prVar28->rm_so = -1" (field_expression "prVar28->rm_so" identifier -> field_identifier) = number_literal) ;) (expression_statement "prVar28 = prVar27;" (assignment_expression "prVar28 = prVar27" identifier = identifier) ;) }) while (parenthesized_expression "(pmatch + nmatch != prVar27)" ( (binary_expression "pmatch + nmatch != prVar27" (binary_expression "pmatch + nmatch" identifier + identifier) != identifier) )) ;) (expression_statement "pmatch->rm_so = 0;" (assignment_expression "pmatch->rm_so = 0" (field_expression "pmatch->rm_so" identifier -> field_identifier) = number_literal) ;) (expression_statement "pmatch->rm_eo = mctx.match_last;" (assignment_expression "pmatch->rm_eo = mctx.match_last" (field_expression "pmatch->rm_eo" identifier -> field_identifier) = (field_expression "mctx.match_last" identifier . field_identifier)) ;) (if_statement "if ((IVar21 & 0x8000000) == 0) {\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }\n            else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }" if (parenthesized_expression "((IVar21 & 0x8000000) == 0)" ( (binary_expression "(IVar21 & 0x8000000) == 0" (parenthesized_expression "(IVar21 & 0x8000000)" ( (binary_expression "IVar21 & 0x8000000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }\n              rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);\n              pprVar22 = mctx.state_log;\n              if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;\n              iVar39 = pmatch->rm_so;\n            }" { (if_statement "if ((char)prVar46->field_0x58 < '\0') {\n                bVar30 = 0 < prVar46->nbackref;\n              }\n              else {\n                bVar30 = false;\n              }" if (parenthesized_expression "((char)prVar46->field_0x58 < '\0')" ( (binary_expression "(char)prVar46->field_0x58 < '\0'" (cast_expression "(char)prVar46->field_0x58" ( (type_descriptor "char" primitive_type) ) (field_expression "prVar46->field_0x58" identifier -> field_identifier)) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                bVar30 = 0 < prVar46->nbackref;\n              }" { (expression_statement "bVar30 = 0 < prVar46->nbackref;" (assignment_expression "bVar30 = 0 < prVar46->nbackref" identifier = (binary_expression "0 < prVar46->nbackref" number_literal < (field_expression "prVar46->nbackref" identifier -> field_identifier))) ;) }) (else_clause "else {\n                bVar30 = false;\n              }" else (compound_statement "{\n                bVar30 = false;\n              }" { (expression_statement "bVar30 = false;" (assignment_expression "bVar30 = false" identifier = false) ;) }))) (expression_statement "rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30);" (assignment_expression "rStack_154 = set_regs(preg,&mctx,nmatch,pmatch,bVar30)" identifier = (call_expression "set_regs(preg,&mctx,nmatch,pmatch,bVar30)" identifier (argument_list "(preg,&mctx,nmatch,pmatch,bVar30)" ( identifier , (pointer_expression "&mctx" & identifier) , identifier , identifier , identifier )))) ;) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (if_statement "if (rStack_154 != _REG_NOERROR) goto LAB_0003423c;" if (parenthesized_expression "(rStack_154 != _REG_NOERROR)" ( (binary_expression "rStack_154 != _REG_NOERROR" identifier != identifier) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "iVar39 = pmatch->rm_so;" (assignment_expression "iVar39 = pmatch->rm_so" identifier = (field_expression "pmatch->rm_so" identifier -> field_identifier)) ;) }) (else_clause "else {\nLAB_00034eb4:\n              iVar39 = 0;\n            }" else (compound_statement "{\nLAB_00034eb4:\n              iVar39 = 0;\n            }" { (labeled_statement "LAB_00034eb4:\n              iVar39 = 0;" statement_identifier : (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;)) }))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "prVar28 = pmatch;" (assignment_expression "prVar28 = pmatch" identifier = identifier) ;) (while_statement "while( true ) {\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }\n              uVar12 = uVar12 + 1;\n              prVar28 = prVar28 + 1;\n              if (uVar12 == nmatch) break;\n              iVar39 = prVar28->rm_so;\n            }" { (if_statement "if (iVar39 != -1) {\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }" if (parenthesized_expression "(iVar39 != -1)" ( (binary_expression "iVar39 != -1" identifier != number_literal) )) (compound_statement "{\n                iVar36 = prVar28->rm_eo;\n                iVar42 = iVar39;\n                iVar33 = iVar36;\n                if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }\n                prVar28->rm_so = match_first + iVar42;\n                prVar28->rm_eo = match_first + iVar33;\n              }" { (expression_statement "iVar36 = prVar28->rm_eo;" (assignment_expression "iVar36 = prVar28->rm_eo" identifier = (field_expression "prVar28->rm_eo" identifier -> field_identifier)) ;) (expression_statement "iVar42 = iVar39;" (assignment_expression "iVar42 = iVar39" identifier = identifier) ;) (expression_statement "iVar33 = iVar36;" (assignment_expression "iVar33 = iVar36" identifier = identifier) ;) (if_statement "if (mctx.input.offsets_needed != '\0') {\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }" if (parenthesized_expression "(mctx.input.offsets_needed != '\0')" ( (binary_expression "mctx.input.offsets_needed != '\0'" (field_expression "mctx.input.offsets_needed" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  iVar42 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }\n                  prVar28->rm_so = iVar42;\n                  iVar33 = mctx.input.valid_raw_len;\n                  if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }\n                }" { (expression_statement "iVar42 = mctx.input.valid_raw_len;" (assignment_expression "iVar42 = mctx.input.valid_raw_len" identifier = (field_expression "mctx.input.valid_raw_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ;) (if_statement "if (mctx.input.valid_len != iVar39) {\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }" if (parenthesized_expression "(mctx.input.valid_len != iVar39)" ( (binary_expression "mctx.input.valid_len != iVar39" (field_expression "mctx.input.valid_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) != identifier) )) (compound_statement "{\n                    iVar42 = mctx.input.offsets[iVar39];\n                  }" { (expression_statement "iVar42 = mctx.input.offsets[iVar39];" (assignment_expression "iVar42 = mctx.input.offsets[iVar39]" identifier = (subscript_expression "mctx.input.offsets[iVar39]" (field_expression "mctx.input.offsets" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) [ identifier ])) ;) })) (expression_statement "prVar28->rm_so = iVar42;" (assignment_expression "prVar28->rm_so = iVar42" (field_expression "prVar28->rm_so" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar33 = mctx.input.valid_raw_len;" (assignment_expression "iVar33 = mctx.input.valid_raw_len" identifier = (field_expression "mctx.input.valid_raw_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) ;) (if_statement "if (mctx.input.valid_len != iVar36) {\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }" if (parenthesized_expression "(mctx.input.valid_len != iVar36)" ( (binary_expression "mctx.input.valid_len != iVar36" (field_expression "mctx.input.valid_len" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) != identifier) )) (compound_statement "{\n                    iVar33 = mctx.input.offsets[iVar36];\n                  }" { (expression_statement "iVar33 = mctx.input.offsets[iVar36];" (assignment_expression "iVar33 = mctx.input.offsets[iVar36]" identifier = (subscript_expression "mctx.input.offsets[iVar36]" (field_expression "mctx.input.offsets" (field_expression "mctx.input" identifier . field_identifier) . field_identifier) [ identifier ])) ;) })) })) (expression_statement "prVar28->rm_so = match_first + iVar42;" (assignment_expression "prVar28->rm_so = match_first + iVar42" (field_expression "prVar28->rm_so" identifier -> field_identifier) = (binary_expression "match_first + iVar42" identifier + identifier)) ;) (expression_statement "prVar28->rm_eo = match_first + iVar33;" (assignment_expression "prVar28->rm_eo = match_first + iVar33" (field_expression "prVar28->rm_eo" identifier -> field_identifier) = (binary_expression "match_first + iVar33" identifier + identifier)) ;) })) (expression_statement "uVar12 = uVar12 + 1;" (assignment_expression "uVar12 = uVar12 + 1" identifier = (binary_expression "uVar12 + 1" identifier + number_literal)) ;) (expression_statement "prVar28 = prVar28 + 1;" (assignment_expression "prVar28 = prVar28 + 1" identifier = (binary_expression "prVar28 + 1" identifier + number_literal)) ;) (if_statement "if (uVar12 == nmatch) break;" if (parenthesized_expression "(uVar12 == nmatch)" ( (binary_expression "uVar12 == nmatch" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar39 = prVar28->rm_so;" (assignment_expression "iVar39 = prVar28->rm_so" identifier = (field_expression "prVar28->rm_so" identifier -> field_identifier)) ;) })) (if_statement "if (0 < iStack_f0) {\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }" if (parenthesized_expression "(0 < iStack_f0)" ( (binary_expression "0 < iStack_f0" number_literal < identifier) )) (compound_statement "{\n              prVar28 = pmatch + nmatch;\n              do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);\n            }" { (expression_statement "prVar28 = pmatch + nmatch;" (assignment_expression "prVar28 = pmatch + nmatch" identifier = (binary_expression "pmatch + nmatch" identifier + identifier)) ;) (do_statement "do {\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              } while (pmatch + iStack_f0 + nmatch != prVar27);" do (compound_statement "{\n                prVar28->rm_so = -1;\n                prVar27 = prVar28 + 1;\n                prVar28->rm_eo = -1;\n                prVar28 = prVar27;\n              }" { (expression_statement "prVar28->rm_so = -1;" (assignment_expression "prVar28->rm_so = -1" (field_expression "prVar28->rm_so" identifier -> field_identifier) = number_literal) ;) (expression_statement "prVar27 = prVar28 + 1;" (assignment_expression "prVar27 = prVar28 + 1" identifier = (binary_expression "prVar28 + 1" identifier + number_literal)) ;) (expression_statement "prVar28->rm_eo = -1;" (assignment_expression "prVar28->rm_eo = -1" (field_expression "prVar28->rm_eo" identifier -> field_identifier) = number_literal) ;) (expression_statement "prVar28 = prVar27;" (assignment_expression "prVar28 = prVar27" identifier = identifier) ;) }) while (parenthesized_expression "(pmatch + iStack_f0 + nmatch != prVar27)" ( (binary_expression "pmatch + iStack_f0 + nmatch != prVar27" (binary_expression "pmatch + iStack_f0 + nmatch" (binary_expression "pmatch + iStack_f0" identifier + identifier) + identifier) != identifier) )) ;) })) (expression_statement "piVar16 = prVar46->subexp_map;" (assignment_expression "piVar16 = prVar46->subexp_map" identifier = (field_expression "prVar46->subexp_map" identifier -> field_identifier)) ;) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (expression_statement "rStack_154 = rVar18;" (assignment_expression "rStack_154 = rVar18" identifier = identifier) ;) (if_statement "if (piVar16 != (int *)0x0) {\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }" if (parenthesized_expression "(piVar16 != (int *)0x0)" ( (binary_expression "piVar16 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              prVar28 = pmatch;\n              for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }\n            }" { (expression_statement "prVar28 = pmatch;" (assignment_expression "prVar28 = pmatch" identifier = identifier) ;) (for_statement "for (iVar39 = 0; iVar39 != nmatch - 1; iVar39 = iVar39 + 1) {\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }" for ( (assignment_expression "iVar39 = 0" identifier = number_literal) ; (binary_expression "iVar39 != nmatch - 1" identifier != (binary_expression "nmatch - 1" identifier - number_literal)) ; (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ) (compound_statement "{\n                if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }\n                piVar16 = piVar16 + 1;\n                prVar28 = prVar28 + 1;\n              }" { (if_statement "if (*piVar16 != iVar39) {\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }" if (parenthesized_expression "(*piVar16 != iVar39)" ( (binary_expression "*piVar16 != iVar39" (pointer_expression "*piVar16" * identifier) != identifier) )) (compound_statement "{\n                  prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;\n                  prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;\n                }" { (expression_statement "prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so;" (assignment_expression "prVar28[1].rm_so = pmatch[*piVar16 + 1].rm_so" (field_expression "prVar28[1].rm_so" (subscript_expression "prVar28[1]" identifier [ number_literal ]) . field_identifier) = (field_expression "pmatch[*piVar16 + 1].rm_so" (subscript_expression "pmatch[*piVar16 + 1]" identifier [ (binary_expression "*piVar16 + 1" (pointer_expression "*piVar16" * identifier) + number_literal) ]) . field_identifier)) ;) (expression_statement "prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo;" (assignment_expression "prVar28[1].rm_eo = pmatch[*piVar16 + 1].rm_eo" (field_expression "prVar28[1].rm_eo" (subscript_expression "prVar28[1]" identifier [ number_literal ]) . field_identifier) = (field_expression "pmatch[*piVar16 + 1].rm_eo" (subscript_expression "pmatch[*piVar16 + 1]" identifier [ (binary_expression "*piVar16 + 1" (pointer_expression "*piVar16" * identifier) + number_literal) ]) . field_identifier)) ;) })) (expression_statement "piVar16 = piVar16 + 1;" (assignment_expression "piVar16 = piVar16 + 1" identifier = (binary_expression "piVar16 + 1" identifier + number_literal)) ;) (expression_statement "prVar28 = prVar28 + 1;" (assignment_expression "prVar28 = prVar28 + 1" identifier = (binary_expression "prVar28 + 1" identifier + number_literal)) ;) })) })) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) (expression_statement "pmatch->rm_so = 0;" (assignment_expression "pmatch->rm_so = 0" (field_expression "pmatch->rm_so" identifier -> field_identifier) = number_literal) ;) (expression_statement "pmatch->rm_eo = mctx.match_last;" (assignment_expression "pmatch->rm_eo = mctx.match_last" (field_expression "pmatch->rm_eo" identifier -> field_identifier) = (field_expression "mctx.match_last" identifier . field_identifier)) ;) (goto_statement "goto LAB_00034eb4;" goto statement_identifier ;) })) (labeled_statement "LAB_00034950:\n        match_ctx_clean(&mctx);" statement_identifier : (expression_statement "match_ctx_clean(&mctx);" (call_expression "match_ctx_clean(&mctx)" identifier (argument_list "(&mctx)" ( (pointer_expression "&mctx" & identifier) ))) ;)) (expression_statement "start = match_first;" (assignment_expression "start = match_first" identifier = identifier) ;) })) (expression_statement "start = start + iVar39;" (assignment_expression "start = start + iVar39" identifier = (binary_expression "start + iVar39" identifier + identifier)) ;) (expression_statement "match_first = start;" (assignment_expression "match_first = start" identifier = identifier) ;) (if_statement "if ((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)) break;" if (parenthesized_expression "((start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start))" ( (binary_expression "(start < (int)prVar31) || (iVar33 = mctx.input.raw_mbs_idx, last_start < start)" (parenthesized_expression "(start < (int)prVar31)" ( (binary_expression "start < (int)prVar31" identifier < (cast_expression "(int)prVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "(iVar33 = mctx.input.raw_mbs_idx, last_start < start)" ( (comma_expression "iVar33 = mctx.input.raw_mbs_idx, last_start < start" (assignment_expression "iVar33 = mctx.input.raw_mbs_idx" identifier = (field_expression "mctx.input.raw_mbs_idx" (field_expression "mctx.input" identifier . field_identifier) . field_identifier)) , (binary_expression "last_start < start" identifier < identifier)) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_000345e4:\n  rStack_154 = _REG_NOMATCH;" statement_identifier : (expression_statement "rStack_154 = _REG_NOMATCH;" (assignment_expression "rStack_154 = _REG_NOMATCH" identifier = identifier) ;)) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) (labeled_statement "code_r0x000350f8:\n  rStack_154 = err;" statement_identifier : (expression_statement "rStack_154 = err;" (assignment_expression "rStack_154 = err" identifier = identifier) ;)) (expression_statement "pprVar22 = mctx.state_log;" (assignment_expression "pprVar22 = mctx.state_log" identifier = (field_expression "mctx.state_log" identifier . field_identifier)) ;) (if_statement "if (err == _REG_ESPACE) goto LAB_0003423c;" if (parenthesized_expression "(err == _REG_ESPACE)" ( (binary_expression "err == _REG_ESPACE" identifier == identifier) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "uVar38 = 0x431;" (assignment_expression "uVar38 = 0x431" identifier = number_literal) ;) (labeled_statement "LAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_DAT_00053118 + 0x2114,PTR_DAT_00053118 + 0x2098,uVar38,PTR_DAT_00053118 + 0x2620);" statement_identifier : (expression_statement "(*(code *)PTR___assert_fail_00053378)\n            (PTR_DAT_00053118 + 0x2114,PTR_DAT_00053118 + 0x2098,uVar38,PTR_DAT_00053118 + 0x2620);" (call_expression "(*(code *)PTR___assert_fail_00053378)\n            (PTR_DAT_00053118 + 0x2114,PTR_DAT_00053118 + 0x2098,uVar38,PTR_DAT_00053118 + 0x2620)" (parenthesized_expression "(*(code *)PTR___assert_fail_00053378)" ( (pointer_expression "*(code *)PTR___assert_fail_00053378" * (cast_expression "(code *)PTR___assert_fail_00053378" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00053118 + 0x2114,PTR_DAT_00053118 + 0x2098,uVar38,PTR_DAT_00053118 + 0x2620)" ( (binary_expression "PTR_DAT_00053118 + 0x2114" identifier + number_literal) , (binary_expression "PTR_DAT_00053118 + 0x2098" identifier + number_literal) , identifier , (binary_expression "PTR_DAT_00053118 + 0x2620" identifier + number_literal) ))) ;)) (expression_statement "uVar12 = extraout_v1;" (assignment_expression "uVar12 = extraout_v1" identifier = identifier) ;) (expression_statement "preg = (regex_t *)&mctx;" (assignment_expression "preg = (regex_t *)&mctx" identifier = (cast_expression "(regex_t *)&mctx" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&mctx" & identifier))) ;) (labeled_statement "LAB_00035138:\n  uVar35 = 8;" statement_identifier : (expression_statement "uVar35 = 8;" (assignment_expression "uVar35 = 8" identifier = number_literal) ;)) (goto_statement "goto LAB_0003412c;" goto statement_identifier ;) })))
(translation_unit "uint FUN_00033d58(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint **ppuVar13;\n  int *piVar14;\n  uint uVar15;\n  code *pcVar16;\n  code *pcVar17;\n  int *piVar18;\n  int *piVar19;\n  char cVar26;\n  code *pcVar20;\n  code *pcVar21;\n  uint uVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  uint *puVar25;\n  bool bVar27;\n  uint extraout_v1;\n  code *pcVar28;\n  uint uVar29;\n  uint uVar30;\n  uint uVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  uint uVar35;\n  int iVar36;\n  int *piVar37;\n  int iVar38;\n  uint local_160;\n  int *local_15c;\n  uint local_154;\n  char *local_150;\n  uint **local_14c;\n  uint local_140;\n  int local_f0;\n  uint *local_dc;\n  uint local_d8;\n  uint local_d4;\n  int *local_d0;\n  int *local_cc;\n  int local_c8;\n  uint local_c4;\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  int local_b4;\n  int local_b0;\n  int *local_ac;\n  int local_a8;\n  int local_9c;\n  uint local_98;\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint local_7c;\n  undefined4 local_78;\n  int local_74;\n  int *local_70;\n  byte local_6c;\n  byte local_6b;\n  byte local_6a;\n  byte local_69;\n  char local_68;\n  byte local_67;\n  byte local_66;\n  int local_64;\n  int *local_60;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int *local_50;\n  int local_4c;\n  undefined4 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar37 = (int *)*param_1;\n  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);\n  local_150 = (char *)param_1[4];\n  if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }\n  uVar9 = param_1[6];\n  if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }\n  local_60 = piVar37;\n  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }\n  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }\n  if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }\n  local_64 = piVar37[0x17];\n  iVar33 = param_1[5];\n  iVar10 = piVar37[2] + 1;\n  if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }\n  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);\n  local_69 = 1;\n  if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }\n  iVar34 = param_3 + 1;\n  if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }\n  local_6c = local_6c >> 7;\n  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);\n  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);\n  local_b4 = param_2;\n  local_88 = param_3;\n  local_84 = param_3;\n  local_80 = param_3;\n  local_7c = param_3;\n  local_74 = iVar33;\n  local_154 = FUN_00029938(&local_b4,iVar34);\n  piVar18 = local_50;\n  if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }\n  local_70 = piVar37 + 0x18;\n  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);\n  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }\n  local_7c = param_6;\n  local_80 = param_6;\n  local_94 = local_98;\n  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);\n  iVar10 = piVar37[0x13];\n  iVar34 = iVar10 * 2;\n  local_5c = param_9;\n  local_58 = 0xffffffff;\n  if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }\n  local_44 = iVar34;\n  local_34 = iVar34;\n  bVar2 = 1 < param_7;\n  local_3c = 1;\n  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }\n  iVar34 = piVar37[0x17];\n  iVar10 = -1;\n  local_dc = param_4;\n  local_78 = 6;\n  if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }\n  uVar9 = (uint)((int)param_5 < (int)param_4);\n  puVar25 = param_5;\n  if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }\n  if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }\n  if (local_150 == (char *)0x0) goto LAB_00035138;\n  uVar12 = 4;\n  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }\n  uVar30 = 2;\n  if (uVar9 != 0) {\n    uVar30 = 0;\n  }\n  uVar30 = iVar33 != 0 | uVar12 | uVar30;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  local_154 = 1;\n  piVar18 = local_50;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  local_154 = local_d8;\n  piVar18 = local_50;\n  if (local_d8 == 0xc) goto LAB_0003423c;\n  uVar23 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );\n  uVar9 = extraout_v1;\n  param_1 = &local_b4;\nLAB_00035138:\n  uVar30 = 8;\n  goto LAB_0003412c;\n}\n\n" (function_definition "uint FUN_00033d58(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint **ppuVar13;\n  int *piVar14;\n  uint uVar15;\n  code *pcVar16;\n  code *pcVar17;\n  int *piVar18;\n  int *piVar19;\n  char cVar26;\n  code *pcVar20;\n  code *pcVar21;\n  uint uVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  uint *puVar25;\n  bool bVar27;\n  uint extraout_v1;\n  code *pcVar28;\n  uint uVar29;\n  uint uVar30;\n  uint uVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  uint uVar35;\n  int iVar36;\n  int *piVar37;\n  int iVar38;\n  uint local_160;\n  int *local_15c;\n  uint local_154;\n  char *local_150;\n  uint **local_14c;\n  uint local_140;\n  int local_f0;\n  uint *local_dc;\n  uint local_d8;\n  uint local_d4;\n  int *local_d0;\n  int *local_cc;\n  int local_c8;\n  uint local_c4;\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  int local_b4;\n  int local_b0;\n  int *local_ac;\n  int local_a8;\n  int local_9c;\n  uint local_98;\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint local_7c;\n  undefined4 local_78;\n  int local_74;\n  int *local_70;\n  byte local_6c;\n  byte local_6b;\n  byte local_6a;\n  byte local_69;\n  char local_68;\n  byte local_67;\n  byte local_66;\n  int local_64;\n  int *local_60;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int *local_50;\n  int local_4c;\n  undefined4 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar37 = (int *)*param_1;\n  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);\n  local_150 = (char *)param_1[4];\n  if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }\n  uVar9 = param_1[6];\n  if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }\n  local_60 = piVar37;\n  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }\n  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }\n  if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }\n  local_64 = piVar37[0x17];\n  iVar33 = param_1[5];\n  iVar10 = piVar37[2] + 1;\n  if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }\n  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);\n  local_69 = 1;\n  if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }\n  iVar34 = param_3 + 1;\n  if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }\n  local_6c = local_6c >> 7;\n  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);\n  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);\n  local_b4 = param_2;\n  local_88 = param_3;\n  local_84 = param_3;\n  local_80 = param_3;\n  local_7c = param_3;\n  local_74 = iVar33;\n  local_154 = FUN_00029938(&local_b4,iVar34);\n  piVar18 = local_50;\n  if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }\n  local_70 = piVar37 + 0x18;\n  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);\n  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }\n  local_7c = param_6;\n  local_80 = param_6;\n  local_94 = local_98;\n  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);\n  iVar10 = piVar37[0x13];\n  iVar34 = iVar10 * 2;\n  local_5c = param_9;\n  local_58 = 0xffffffff;\n  if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }\n  local_44 = iVar34;\n  local_34 = iVar34;\n  bVar2 = 1 < param_7;\n  local_3c = 1;\n  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }\n  iVar34 = piVar37[0x17];\n  iVar10 = -1;\n  local_dc = param_4;\n  local_78 = 6;\n  if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }\n  uVar9 = (uint)((int)param_5 < (int)param_4);\n  puVar25 = param_5;\n  if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }\n  if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }\n  if (local_150 == (char *)0x0) goto LAB_00035138;\n  uVar12 = 4;\n  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }\n  uVar30 = 2;\n  if (uVar9 != 0) {\n    uVar30 = 0;\n  }\n  uVar30 = iVar33 != 0 | uVar12 | uVar30;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  local_154 = 1;\n  piVar18 = local_50;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  local_154 = local_d8;\n  piVar18 = local_50;\n  if (local_d8 == 0xc) goto LAB_0003423c;\n  uVar23 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );\n  uVar9 = extraout_v1;\n  param_1 = &local_b4;\nLAB_00035138:\n  uVar30 = 8;\n  goto LAB_0003412c;\n}" type_identifier (function_declarator "FUN_00033d58(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)" identifier (parameter_list "(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "uint *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "uint param_9" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint **ppuVar13;\n  int *piVar14;\n  uint uVar15;\n  code *pcVar16;\n  code *pcVar17;\n  int *piVar18;\n  int *piVar19;\n  char cVar26;\n  code *pcVar20;\n  code *pcVar21;\n  uint uVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  uint *puVar25;\n  bool bVar27;\n  uint extraout_v1;\n  code *pcVar28;\n  uint uVar29;\n  uint uVar30;\n  uint uVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  uint uVar35;\n  int iVar36;\n  int *piVar37;\n  int iVar38;\n  uint local_160;\n  int *local_15c;\n  uint local_154;\n  char *local_150;\n  uint **local_14c;\n  uint local_140;\n  int local_f0;\n  uint *local_dc;\n  uint local_d8;\n  uint local_d4;\n  int *local_d0;\n  int *local_cc;\n  int local_c8;\n  uint local_c4;\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  int local_b4;\n  int local_b0;\n  int *local_ac;\n  int local_a8;\n  int local_9c;\n  uint local_98;\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint local_7c;\n  undefined4 local_78;\n  int local_74;\n  int *local_70;\n  byte local_6c;\n  byte local_6b;\n  byte local_6a;\n  byte local_69;\n  char local_68;\n  byte local_67;\n  byte local_66;\n  int local_64;\n  int *local_60;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int *local_50;\n  int local_4c;\n  undefined4 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar37 = (int *)*param_1;\n  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);\n  local_150 = (char *)param_1[4];\n  if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }\n  uVar9 = param_1[6];\n  if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }\n  local_60 = piVar37;\n  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }\n  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }\n  if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }\n  local_64 = piVar37[0x17];\n  iVar33 = param_1[5];\n  iVar10 = piVar37[2] + 1;\n  if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }\n  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);\n  local_69 = 1;\n  if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }\n  iVar34 = param_3 + 1;\n  if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }\n  local_6c = local_6c >> 7;\n  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);\n  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);\n  local_b4 = param_2;\n  local_88 = param_3;\n  local_84 = param_3;\n  local_80 = param_3;\n  local_7c = param_3;\n  local_74 = iVar33;\n  local_154 = FUN_00029938(&local_b4,iVar34);\n  piVar18 = local_50;\n  if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }\n  local_70 = piVar37 + 0x18;\n  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);\n  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }\n  local_7c = param_6;\n  local_80 = param_6;\n  local_94 = local_98;\n  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);\n  iVar10 = piVar37[0x13];\n  iVar34 = iVar10 * 2;\n  local_5c = param_9;\n  local_58 = 0xffffffff;\n  if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }\n  local_44 = iVar34;\n  local_34 = iVar34;\n  bVar2 = 1 < param_7;\n  local_3c = 1;\n  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }\n  iVar34 = piVar37[0x17];\n  iVar10 = -1;\n  local_dc = param_4;\n  local_78 = 6;\n  if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }\n  uVar9 = (uint)((int)param_5 < (int)param_4);\n  puVar25 = param_5;\n  if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }\n  if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }\n  if (local_150 == (char *)0x0) goto LAB_00035138;\n  uVar12 = 4;\n  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }\n  uVar30 = 2;\n  if (uVar9 != 0) {\n    uVar30 = 0;\n  }\n  uVar30 = iVar33 != 0 | uVar12 | uVar30;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  local_154 = 1;\n  piVar18 = local_50;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  local_154 = local_d8;\n  piVar18 = local_50;\n  if (local_d8 == 0xc) goto LAB_0003423c;\n  uVar23 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );\n  uVar9 = extraout_v1;\n  param_1 = &local_b4;\nLAB_00035138:\n  uVar30 = 8;\n  goto LAB_0003412c;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint **ppuVar13;" type_identifier (pointer_declarator "**ppuVar13" * (pointer_declarator "*ppuVar13" * identifier)) ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "char cVar26;" primitive_type identifier ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "undefined4 uVar23;" type_identifier identifier ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "bool bVar27;" primitive_type identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "uint uVar30;" type_identifier identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int iVar34;" primitive_type identifier ;) (declaration "uint uVar35;" type_identifier identifier ;) (declaration "int iVar36;" primitive_type identifier ;) (declaration "int *piVar37;" primitive_type (pointer_declarator "*piVar37" * identifier) ;) (declaration "int iVar38;" primitive_type identifier ;) (declaration "uint local_160;" type_identifier identifier ;) (declaration "int *local_15c;" primitive_type (pointer_declarator "*local_15c" * identifier) ;) (declaration "uint local_154;" type_identifier identifier ;) (declaration "char *local_150;" primitive_type (pointer_declarator "*local_150" * identifier) ;) (declaration "uint **local_14c;" type_identifier (pointer_declarator "**local_14c" * (pointer_declarator "*local_14c" * identifier)) ;) (declaration "uint local_140;" type_identifier identifier ;) (declaration "int local_f0;" primitive_type identifier ;) (declaration "uint *local_dc;" type_identifier (pointer_declarator "*local_dc" * identifier) ;) (declaration "uint local_d8;" type_identifier identifier ;) (declaration "uint local_d4;" type_identifier identifier ;) (declaration "int *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "int *local_cc;" primitive_type (pointer_declarator "*local_cc" * identifier) ;) (declaration "int local_c8;" primitive_type identifier ;) (declaration "uint local_c4;" type_identifier identifier ;) (declaration "undefined4 local_c0;" type_identifier identifier ;) (declaration "undefined4 local_bc;" type_identifier identifier ;) (declaration "undefined4 local_b8;" type_identifier identifier ;) (declaration "int local_b4;" primitive_type identifier ;) (declaration "int local_b0;" primitive_type identifier ;) (declaration "int *local_ac;" primitive_type (pointer_declarator "*local_ac" * identifier) ;) (declaration "int local_a8;" primitive_type identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "uint local_98;" type_identifier identifier ;) (declaration "uint local_94;" type_identifier identifier ;) (declaration "uint local_90;" type_identifier identifier ;) (declaration "uint local_8c;" type_identifier identifier ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "uint local_84;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "uint local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "int *local_70;" primitive_type (pointer_declarator "*local_70" * identifier) ;) (declaration "byte local_6c;" type_identifier identifier ;) (declaration "byte local_6b;" type_identifier identifier ;) (declaration "byte local_6a;" type_identifier identifier ;) (declaration "byte local_69;" type_identifier identifier ;) (declaration "char local_68;" primitive_type identifier ;) (declaration "byte local_67;" type_identifier identifier ;) (declaration "byte local_66;" type_identifier identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "uint local_58;" type_identifier identifier ;) (declaration "int local_54;" primitive_type identifier ;) (declaration "int *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar8 = PTR___stack_chk_guard_000534f0;" (assignment_expression "puVar8 = 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 "piVar37 = (int *)*param_1;" (assignment_expression "piVar37 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "(*(code *)PTR_memset_00053430)(&local_b4,0,0x88);" (call_expression "(*(code *)PTR_memset_00053430)(&local_b4,0,0x88)" (parenthesized_expression "(*(code *)PTR_memset_00053430)" ( (pointer_expression "*(code *)PTR_memset_00053430" * (cast_expression "(code *)PTR_memset_00053430" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_b4,0,0x88)" ( (pointer_expression "&local_b4" & identifier) , number_literal , number_literal ))) ;) (expression_statement "local_150 = (char *)param_1[4];" (assignment_expression "local_150 = (char *)param_1[4]" identifier = (cast_expression "(char *)param_1[4]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (if_statement "if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }" if (parenthesized_expression "(local_150 != (char *)0x0)" ( (binary_expression "local_150 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }" { (if_statement "if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }" if (parenthesized_expression "(((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5))" ( (binary_expression "((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)" (parenthesized_expression "((*(byte *)(param_1 + 7) & 0x10) == 0)" ( (binary_expression "(*(byte *)(param_1 + 7) & 0x10) == 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 0x10)" ( (binary_expression "*(byte *)(param_1 + 7) & 0x10" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(param_4 == param_5)" ( (binary_expression "param_4 == param_5" identifier == identifier) ))) )) (compound_statement "{\n      local_150 = (char *)0x0;\n    }" { (expression_statement "local_150 = (char *)0x0;" (assignment_expression "local_150 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }" else (if_statement "if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }" if (parenthesized_expression "((char)*(byte *)(param_1 + 7) < '\0')" ( (binary_expression "(char)*(byte *)(param_1 + 7) < '\0'" (cast_expression "(char)*(byte *)(param_1 + 7)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_150 = (char *)0x0;\n    }" { (expression_statement "local_150 = (char *)0x0;" (assignment_expression "local_150 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })))) })) (expression_statement "uVar9 = param_1[6];" (assignment_expression "uVar9 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (if_statement "if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }" if (parenthesized_expression "(uVar9 < param_7)" ( (binary_expression "uVar9 < param_7" identifier < identifier) )) (compound_statement "{\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }" { (expression_statement "local_f0 = (param_7 - 1) - uVar9;" (assignment_expression "local_f0 = (param_7 - 1) - uVar9" identifier = (binary_expression "(param_7 - 1) - uVar9" (parenthesized_expression "(param_7 - 1)" ( (binary_expression "param_7 - 1" identifier - number_literal) )) - identifier)) ;) (expression_statement "param_7 = param_7 + (uVar9 - (param_7 - 1));" (assignment_expression "param_7 = param_7 + (uVar9 - (param_7 - 1))" identifier = (binary_expression "param_7 + (uVar9 - (param_7 - 1))" identifier + (parenthesized_expression "(uVar9 - (param_7 - 1))" ( (binary_expression "uVar9 - (param_7 - 1)" identifier - (parenthesized_expression "(param_7 - 1)" ( (binary_expression "param_7 - 1" identifier - number_literal) ))) )))) ;) (expression_statement "iVar10 = param_1[2];" (assignment_expression "iVar10 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }" else (compound_statement "{\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }" { (expression_statement "iVar10 = param_1[2];" (assignment_expression "iVar10 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "local_f0 = 0;" (assignment_expression "local_f0 = 0" identifier = number_literal) ;) }))) (expression_statement "local_60 = piVar37;" (assignment_expression "local_60 = piVar37" identifier = identifier) ;) (if_statement "if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }" if (parenthesized_expression "((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0))))" ( (binary_expression "(((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))" (parenthesized_expression "(((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0))" ( (binary_expression "((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)" (parenthesized_expression "((iVar10 == 0) || (piVar37[9] == 0))" ( (binary_expression "(iVar10 == 0) || (piVar37[9] == 0)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) || (parenthesized_expression "(piVar37[9] == 0)" ( (binary_expression "piVar37[9] == 0" (subscript_expression "piVar37[9]" identifier [ number_literal ]) == number_literal) ))) )) || (parenthesized_expression "(piVar37[10] == 0)" ( (binary_expression "piVar37[10] == 0" (subscript_expression "piVar37[10]" identifier [ number_literal ]) == number_literal) ))) )) || (parenthesized_expression "((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))" ( (parenthesized_expression "(piVar37[0xb] == 0 || (piVar37[0xc] == 0))" ( (binary_expression "piVar37[0xb] == 0 || (piVar37[0xc] == 0)" (binary_expression "piVar37[0xb] == 0" (subscript_expression "piVar37[0xb]" identifier [ number_literal ]) == number_literal) || (parenthesized_expression "(piVar37[0xc] == 0)" ( (binary_expression "piVar37[0xc] == 0" (subscript_expression "piVar37[0xc]" identifier [ number_literal ]) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }" { (labeled_statement "LAB_000341d0:\n    local_154 = 1;" statement_identifier : (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;)) (goto_statement "goto LAB_000341d4;" goto statement_identifier ;) })) (if_statement "if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }" if (parenthesized_expression "(((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0))))" ( (binary_expression "((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))" (parenthesized_expression "((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0))" ( (binary_expression "(*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)" (parenthesized_expression "(*(int *)(piVar37[9] + 8) == 0)" ( (binary_expression "*(int *)(piVar37[9] + 8) == 0" (pointer_expression "*(int *)(piVar37[9] + 8)" * (cast_expression "(int *)(piVar37[9] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37[9] + 8)" ( (binary_expression "piVar37[9] + 8" (subscript_expression "piVar37[9]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)(piVar37[10] + 8) == 0)" ( (binary_expression "*(int *)(piVar37[10] + 8) == 0" (pointer_expression "*(int *)(piVar37[10] + 8)" * (cast_expression "(int *)(piVar37[10] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37[10] + 8)" ( (binary_expression "piVar37[10] + 8" (subscript_expression "piVar37[10]" identifier [ number_literal ]) + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))" ( (parenthesized_expression "(*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0))" ( (binary_expression "*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)" (binary_expression "*(int *)(piVar37[0xb] + 8) == 0" (pointer_expression "*(int *)(piVar37[0xb] + 8)" * (cast_expression "(int *)(piVar37[0xb] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37[0xb] + 8)" ( (binary_expression "piVar37[0xb] + 8" (subscript_expression "piVar37[0xb]" identifier [ number_literal ]) + number_literal) )))) == number_literal) || (parenthesized_expression "((*(byte *)(param_1 + 7) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 7) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 1)" ( (binary_expression "*(byte *)(param_1 + 7) & 1" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }" { (if_statement "if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }" if (parenthesized_expression "(param_4 == (uint *)0x0)" ( (binary_expression "param_4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      param_5 = (uint *)0x0;\n    }" { (expression_statement "param_5 = (uint *)0x0;" (assignment_expression "param_5 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }" else (compound_statement "{\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }" { (if_statement "if (param_5 != (uint *)0x0) goto LAB_000341d0;" if (parenthesized_expression "(param_5 != (uint *)0x0)" ( (binary_expression "param_5 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000341d0;" goto statement_identifier ;)) (expression_statement "param_4 = (uint *)0x0;" (assignment_expression "param_4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) })) (if_statement "if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar27 = piVar37[0x13] != 0;\n  }" { (expression_statement "bVar27 = piVar37[0x13] != 0;" (assignment_expression "bVar27 = piVar37[0x13] != 0" identifier = (binary_expression "piVar37[0x13] != 0" (subscript_expression "piVar37[0x13]" identifier [ number_literal ]) != number_literal)) ;) }) (else_clause "else {\n    bVar27 = true;\n  }" else (compound_statement "{\n    bVar27 = true;\n  }" { (expression_statement "bVar27 = true;" (assignment_expression "bVar27 = true" identifier = true) ;) }))) (expression_statement "local_64 = piVar37[0x17];" (assignment_expression "local_64 = piVar37[0x17]" identifier = (subscript_expression "piVar37[0x17]" identifier [ number_literal ])) ;) (expression_statement "iVar33 = param_1[5];" (assignment_expression "iVar33 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = piVar37[2] + 1;" (assignment_expression "iVar10 = piVar37[2] + 1" identifier = (binary_expression "piVar37[2] + 1" (subscript_expression "piVar37[2]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }" if (parenthesized_expression "(piVar37[2] + 1 < local_64)" ( (binary_expression "piVar37[2] + 1 < local_64" (binary_expression "piVar37[2] + 1" (subscript_expression "piVar37[2]" identifier [ number_literal ]) + number_literal) < identifier) )) (compound_statement "{\n    iVar10 = local_64;\n  }" { (expression_statement "iVar10 = local_64;" (assignment_expression "iVar10 = local_64" identifier = identifier) ;) })) (expression_statement "local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);" (assignment_expression "local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18)" identifier = (call_expression "(byte)((uint)(param_1[3] << 9) >> 0x18)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(param_1[3] << 9) >> 0x18)" ( (binary_expression "(uint)(param_1[3] << 9) >> 0x18" (call_expression "(uint)(param_1[3] << 9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[3] << 9)" ( (binary_expression "param_1[3] << 9" (subscript_expression "param_1[3]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "local_69 = 1;" (assignment_expression "local_69 = 1" identifier = number_literal) ;) (if_statement "if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (compound_statement "{\n    local_69 = local_6c >> 7;\n  }" { (expression_statement "local_69 = local_6c >> 7;" (assignment_expression "local_69 = local_6c >> 7" identifier = (binary_expression "local_6c >> 7" identifier >> number_literal)) ;) })) (expression_statement "iVar34 = param_3 + 1;" (assignment_expression "iVar34 = param_3 + 1" identifier = (binary_expression "param_3 + 1" identifier + number_literal)) ;) (if_statement "if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }" if (parenthesized_expression "(iVar10 <= (int)(param_3 + 1))" ( (binary_expression "iVar10 <= (int)(param_3 + 1)" identifier <= (cast_expression "(int)(param_3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_3 + 1)" ( (binary_expression "param_3 + 1" identifier + number_literal) )))) )) (compound_statement "{\n    iVar34 = iVar10;\n  }" { (expression_statement "iVar34 = iVar10;" (assignment_expression "iVar34 = iVar10" identifier = identifier) ;) })) (expression_statement "local_6c = local_6c >> 7;" (assignment_expression "local_6c = local_6c >> 7" identifier = (binary_expression "local_6c >> 7" identifier >> number_literal)) ;) (expression_statement "local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);" (assignment_expression "local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f)" identifier = (call_expression "(byte)((uint)(piVar37[0x16] << 2) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(piVar37[0x16] << 2) >> 0x1f)" ( (binary_expression "(uint)(piVar37[0x16] << 2) >> 0x1f" (call_expression "(uint)(piVar37[0x16] << 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar37[0x16] << 2)" ( (binary_expression "piVar37[0x16] << 2" (subscript_expression "piVar37[0x16]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);" (assignment_expression "local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f)" identifier = (call_expression "(byte)((uint)(piVar37[0x16] << 3) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(piVar37[0x16] << 3) >> 0x1f)" ( (binary_expression "(uint)(piVar37[0x16] << 3) >> 0x1f" (call_expression "(uint)(piVar37[0x16] << 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar37[0x16] << 3)" ( (binary_expression "piVar37[0x16] << 3" (subscript_expression "piVar37[0x16]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "local_b4 = param_2;" (assignment_expression "local_b4 = param_2" identifier = identifier) ;) (expression_statement "local_88 = param_3;" (assignment_expression "local_88 = param_3" identifier = identifier) ;) (expression_statement "local_84 = param_3;" (assignment_expression "local_84 = param_3" identifier = identifier) ;) (expression_statement "local_80 = param_3;" (assignment_expression "local_80 = param_3" identifier = identifier) ;) (expression_statement "local_7c = param_3;" (assignment_expression "local_7c = param_3" identifier = identifier) ;) (expression_statement "local_74 = iVar33;" (assignment_expression "local_74 = iVar33" identifier = identifier) ;) (expression_statement "local_154 = FUN_00029938(&local_b4,iVar34);" (assignment_expression "local_154 = FUN_00029938(&local_b4,iVar34)" identifier = (call_expression "FUN_00029938(&local_b4,iVar34)" identifier (argument_list "(&local_b4,iVar34)" ( (pointer_expression "&local_b4" & identifier) , identifier )))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }" { (labeled_statement "LAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }" statement_identifier : (while_statement "while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }" { (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (if_statement "if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }" if (parenthesized_expression "(piVar37[0x13] != 0)" ( (binary_expression "piVar37[0x13] != 0" (subscript_expression "piVar37[0x13]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }" { (labeled_statement "LAB_00034290:\n        FUN_0002b440(&local_b4);" statement_identifier : (expression_statement "FUN_0002b440(&local_b4);" (call_expression "FUN_0002b440(&local_b4)" identifier (argument_list "(&local_b4)" ( (pointer_expression "&local_b4" & 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 "(*(code *)PTR_free_000534fc)(local_40);" (call_expression "(*(code *)PTR_free_000534fc)(local_40)" (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_40)" ( identifier ))) ;) })) (labeled_statement "LAB_00034250:\n      FUN_0002b3d0(&local_b4);" statement_identifier : (expression_statement "FUN_0002b3d0(&local_b4);" (call_expression "FUN_0002b3d0(&local_b4)" identifier (argument_list "(&local_b4)" ( (pointer_expression "&local_b4" & identifier) ))) ;)) (labeled_statement "LAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;" statement_identifier : (if_statement "if (local_2c == *(int *)puVar8) break;" if (parenthesized_expression "(local_2c == *(int *)puVar8)" ( (binary_expression "local_2c == *(int *)puVar8" identifier == (pointer_expression "*(int *)puVar8" * (cast_expression "(int *)puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (break_statement "break;" break ;))) (expression_statement "local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();" (assignment_expression "local_154 = (*(code *)PTR___stack_chk_fail_000534d4)()" identifier = (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 "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) }))) (return_statement "return local_154;" return identifier ;) })) (expression_statement "local_70 = piVar37 + 0x18;" (assignment_expression "local_70 = piVar37 + 0x18" identifier = (binary_expression "piVar37 + 0x18" identifier + number_literal)) ;) (expression_statement "local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);" (assignment_expression "local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f)" identifier = (call_expression "(byte)((uint)(piVar37[0x16] << 4) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(piVar37[0x16] << 4) >> 0x1f)" ( (binary_expression "(uint)(piVar37[0x16] << 4) >> 0x1f" (call_expression "(uint)(piVar37[0x16] << 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar37[0x16] << 4)" ( (binary_expression "piVar37[0x16] << 4" (subscript_expression "piVar37[0x16]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (if_statement "if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }" if (parenthesized_expression "((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17]))" ( (binary_expression "(local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])" (parenthesized_expression "(local_69 != 0)" ( (binary_expression "local_69 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])" ( (comma_expression "local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17]" (assignment_expression "local_b0 = param_2" identifier = identifier) , (comma_expression "local_98 = param_3, 1 < piVar37[0x17]" (assignment_expression "local_98 = param_3" identifier = identifier) , (binary_expression "1 < piVar37[0x17]" number_literal < (subscript_expression "piVar37[0x17]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n    local_98 = 0;\n  }" { (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" identifier = number_literal) ;) })) (expression_statement "local_7c = param_6;" (assignment_expression "local_7c = param_6" identifier = identifier) ;) (expression_statement "local_80 = param_6;" (assignment_expression "local_80 = param_6" identifier = identifier) ;) (expression_statement "local_94 = local_98;" (assignment_expression "local_94 = local_98" identifier = identifier) ;) (expression_statement "local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);" (assignment_expression "local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f)" identifier = (call_expression "(byte)((uint)(param_1[7] << 7) >> 0x1f)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uint)(param_1[7] << 7) >> 0x1f)" ( (binary_expression "(uint)(param_1[7] << 7) >> 0x1f" (call_expression "(uint)(param_1[7] << 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[7] << 7)" ( (binary_expression "param_1[7] << 7" (subscript_expression "param_1[7]" identifier [ number_literal ]) << number_literal) ))) >> number_literal) )))) ;) (expression_statement "iVar10 = piVar37[0x13];" (assignment_expression "iVar10 = piVar37[0x13]" identifier = (subscript_expression "piVar37[0x13]" identifier [ number_literal ])) ;) (expression_statement "iVar34 = iVar10 * 2;" (assignment_expression "iVar34 = iVar10 * 2" identifier = (binary_expression "iVar10 * 2" identifier * number_literal)) ;) (expression_statement "local_5c = param_9;" (assignment_expression "local_5c = param_9" identifier = identifier) ;) (expression_statement "local_58 = 0xffffffff;" (assignment_expression "local_58 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }" if (parenthesized_expression "(0 < iVar34)" ( (binary_expression "0 < iVar34" number_literal < identifier) )) (compound_statement "{\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }" { (if_statement "if (0xccccccc < iVar34) goto LAB_00034274;" if (parenthesized_expression "(0xccccccc < iVar34)" ( (binary_expression "0xccccccc < iVar34" number_literal < identifier) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (expression_statement "iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);" (assignment_expression "iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28)" identifier = (call_expression "(*(code *)PTR_malloc_00053474)(iVar10 * 0x28)" (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 "(iVar10 * 0x28)" ( (binary_expression "iVar10 * 0x28" identifier * number_literal) )))) ;) (expression_statement "local_40 = iVar11;" (assignment_expression "local_40 = iVar11" identifier = identifier) ;) (expression_statement "local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);" (assignment_expression "local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8)" identifier = (call_expression "(*(code *)PTR_malloc_00053474)(iVar10 * 8)" (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 "(iVar10 * 8)" ( (binary_expression "iVar10 * 8" identifier * number_literal) )))) ;) (if_statement "if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;" if (parenthesized_expression "((iVar11 == 0) || (local_30 == 0))" ( (binary_expression "(iVar11 == 0) || (local_30 == 0)" (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) })) (expression_statement "local_44 = iVar34;" (assignment_expression "local_44 = iVar34" identifier = identifier) ;) (expression_statement "local_34 = iVar34;" (assignment_expression "local_34 = iVar34" identifier = identifier) ;) (expression_statement "bVar2 = 1 < param_7;" (assignment_expression "bVar2 = 1 < param_7" identifier = (binary_expression "1 < param_7" number_literal < identifier)) ;) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" identifier = number_literal) ;) (if_statement "if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }" if (parenthesized_expression "((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0))" ( (binary_expression "(bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)" (parenthesized_expression "(bVar2)" ( identifier )) || (parenthesized_expression "((*(byte *)(piVar37 + 0x16) & 0x40) != 0)" ( (binary_expression "(*(byte *)(piVar37 + 0x16) & 0x40) != 0" (parenthesized_expression "(*(byte *)(piVar37 + 0x16) & 0x40)" ( (binary_expression "*(byte *)(piVar37 + 0x16) & 0x40" (pointer_expression "*(byte *)(piVar37 + 0x16)" * (cast_expression "(byte *)(piVar37 + 0x16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37 + 0x16)" ( (binary_expression "piVar37 + 0x16" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }" { (if_statement "if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }" if (parenthesized_expression "(0x3ffffffe < local_90)" ( (binary_expression "0x3ffffffe < local_90" number_literal < identifier) )) (compound_statement "{\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }" { (labeled_statement "LAB_00034274:\n      local_154 = 0xc;" statement_identifier : (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" identifier = number_literal) ;)) (expression_statement "(*(code *)PTR_free_000534fc)(local_50);" (call_expression "(*(code *)PTR_free_000534fc)(local_50)" (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_50)" ( identifier ))) ;) (if_statement "if (piVar37[0x13] == 0) goto LAB_00034250;" if (parenthesized_expression "(piVar37[0x13] == 0)" ( (binary_expression "piVar37[0x13] == 0" (subscript_expression "piVar37[0x13]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_00034250;" goto statement_identifier ;)) (goto_statement "goto LAB_00034290;" goto statement_identifier ;) })) (expression_statement "local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);" (assignment_expression "local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)((local_90 + 1) * 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 "((local_90 + 1) * 4)" ( (binary_expression "(local_90 + 1) * 4" (parenthesized_expression "(local_90 + 1)" ( (binary_expression "local_90 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }" if (parenthesized_expression "(local_50 == (int *)0x0)" ( (binary_expression "local_50 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }" { (labeled_statement "LAB_00034230:\n      local_154 = 0xc;" statement_identifier : (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" identifier = number_literal) ;)) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) }) (else_clause "else {\n    local_50 = (int *)0x0;\n  }" else (compound_statement "{\n    local_50 = (int *)0x0;\n  }" { (expression_statement "local_50 = (int *)0x0;" (assignment_expression "local_50 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "iVar34 = piVar37[0x17];" (assignment_expression "iVar34 = piVar37[0x17]" identifier = (subscript_expression "piVar37[0x17]" identifier [ number_literal ])) ;) (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) (expression_statement "local_dc = param_4;" (assignment_expression "local_dc = param_4" identifier = identifier) ;) (expression_statement "local_78 = 6;" (assignment_expression "local_78 = 6" identifier = number_literal) ;) (if_statement "if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }" if (parenthesized_expression "((param_9 & 1) != 0)" ( (binary_expression "(param_9 & 1) != 0" (parenthesized_expression "(param_9 & 1)" ( (binary_expression "param_9 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    local_78 = 4;\n  }" { (expression_statement "local_78 = 4;" (assignment_expression "local_78 = 4" identifier = number_literal) ;) })) (expression_statement "uVar9 = (uint)((int)param_5 < (int)param_4);" (assignment_expression "uVar9 = (uint)((int)param_5 < (int)param_4)" identifier = (call_expression "(uint)((int)param_5 < (int)param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_5 < (int)param_4)" ( (binary_expression "(int)param_5 < (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar25 = param_5;" (assignment_expression "puVar25 = param_5" identifier = identifier) ;) (if_statement "if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar10 = 1;\n    puVar25 = param_4;\n  }" { (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (expression_statement "puVar25 = param_4;" (assignment_expression "puVar25 = param_4" identifier = identifier) ;) })) (if_statement "if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }" if (parenthesized_expression "((int)param_5 <= (int)param_4)" ( (binary_expression "(int)param_5 <= (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    param_5 = param_4;\n  }" { (expression_statement "param_5 = param_4;" (assignment_expression "param_5 = param_4" identifier = identifier) ;) })) (if_statement "if (local_150 == (char *)0x0) goto LAB_00035138;" if (parenthesized_expression "(local_150 == (char *)0x0)" ( (binary_expression "local_150 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00035138;" goto statement_identifier ;)) (expression_statement "uVar12 = 4;" (assignment_expression "uVar12 = 4" identifier = number_literal) ;) (if_statement "if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }" if (parenthesized_expression "(((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0))" ( (binary_expression "((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)" (parenthesized_expression "((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9))" ( (binary_expression "(iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)" (parenthesized_expression "(iVar34 != 1)" ( (binary_expression "iVar34 != 1" identifier != number_literal) )) && (parenthesized_expression "(uVar12 = 0, -1 < param_1[3] << 9)" ( (comma_expression "uVar12 = 0, -1 < param_1[3] << 9" (assignment_expression "uVar12 = 0" identifier = number_literal) , (binary_expression "-1 < param_1[3] << 9" number_literal < (binary_expression "param_1[3] << 9" (subscript_expression "param_1[3]" identifier [ number_literal ]) << number_literal))) ))) )) && (parenthesized_expression "(uVar12 = 4, iVar33 != 0)" ( (comma_expression "uVar12 = 4, iVar33 != 0" (assignment_expression "uVar12 = 4" identifier = number_literal) , (binary_expression "iVar33 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    uVar12 = 0;\n  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) })) (expression_statement "uVar30 = 2;" (assignment_expression "uVar30 = 2" identifier = number_literal) ;) (if_statement "if (uVar9 != 0) {\n    uVar30 = 0;\n  }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar30 = 0;\n  }" { (expression_statement "uVar30 = 0;" (assignment_expression "uVar30 = 0" identifier = number_literal) ;) })) (expression_statement "uVar30 = iVar33 != 0 | uVar12 | uVar30;" (assignment_expression "uVar30 = iVar33 != 0 | uVar12 | uVar30" identifier = (binary_expression "iVar33 != 0 | uVar12 | uVar30" (binary_expression "iVar33 != 0 | uVar12" (binary_expression "iVar33 != 0" identifier != number_literal) | identifier) | identifier)) ;) (labeled_statement "LAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;" statement_identifier : (expression_statement "puVar6 = PTR_LAB_0005332c;" (assignment_expression "puVar6 = PTR_LAB_0005332c" identifier = identifier) ;)) (if_statement "if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }" if (parenthesized_expression "(((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5))" ( (binary_expression "((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)" (parenthesized_expression "((int)puVar25 <= (int)param_4)" ( (binary_expression "(int)puVar25 <= (int)param_4" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)param_4 <= (int)param_5)" ( (binary_expression "(int)param_4 <= (int)param_5" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }" { (expression_statement "ppuVar13 = &local_dc;" (assignment_expression "ppuVar13 = &local_dc" identifier = (pointer_expression "&local_dc" & identifier)) ;) (if_statement "if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      ppuVar13 = (uint **)0x0;\n    }" { (expression_statement "ppuVar13 = (uint **)0x0;" (assignment_expression "ppuVar13 = (uint **)0x0" identifier = (cast_expression "(uint **)0x0" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) })) (expression_statement "piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);" (assignment_expression "piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4)" identifier = (cast_expression "(int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4)" ( (binary_expression "PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4" (binary_expression "PTR_UINT_00053118 + (uVar30 - 4) * 4" identifier + (binary_expression "(uVar30 - 4) * 4" (parenthesized_expression "(uVar30 - 4)" ( (binary_expression "uVar30 - 4" identifier - number_literal) )) * number_literal)) + number_literal) )))) ;) (expression_statement "pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);" (assignment_expression "pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0xe80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0xe80)" ( (binary_expression "PTR_LAB_0005332c + -0xe80" identifier + number_literal) )))) ;) (expression_statement "iVar33 = local_9c;" (assignment_expression "iVar33 = local_9c" identifier = identifier) ;) (do_statement "do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );" do (compound_statement "{\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    }" { (if_statement "if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }" if (parenthesized_expression "(uVar30 - 4 < 5)" ( (binary_expression "uVar30 - 4 < 5" (binary_expression "uVar30 - 4" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }" { (expression_statement "uVar9 = (*(code *)(&_gp_1 + *piVar14))();" (assignment_expression "uVar9 = (*(code *)(&_gp_1 + *piVar14))()" identifier = (call_expression "(*(code *)(&_gp_1 + *piVar14))()" (parenthesized_expression "(*(code *)(&_gp_1 + *piVar14))" ( (pointer_expression "*(code *)(&_gp_1 + *piVar14)" * (cast_expression "(code *)(&_gp_1 + *piVar14)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *piVar14)" ( (binary_expression "&_gp_1 + *piVar14" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*piVar14" * identifier)) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar9;" return identifier ;) })) (expression_statement "local_9c = iVar33;" (assignment_expression "local_9c = iVar33" identifier = identifier) ;) (while_statement "while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }" { (expression_statement "uVar9 = (int)param_4 - iVar33;" (assignment_expression "uVar9 = (int)param_4 - iVar33" identifier = (binary_expression "(int)param_4 - iVar33" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (if_statement "if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }" if (parenthesized_expression "(local_94 <= uVar9)" ( (binary_expression "local_94 <= uVar9" identifier <= identifier) )) (compound_statement "{\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }" { (expression_statement "local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);" (assignment_expression "local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9)" identifier = (call_expression "(*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9)" (parenthesized_expression "(*(code *)(puVar6 + -0x1ac4))" ( (pointer_expression "*(code *)(puVar6 + -0x1ac4)" * (cast_expression "(code *)(puVar6 + -0x1ac4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x1ac4)" ( (binary_expression "puVar6 + -0x1ac4" identifier + number_literal) )))) )) (argument_list "(&local_b4,param_4,param_9)" ( (pointer_expression "&local_b4" & identifier) , identifier , identifier )))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_154 != 0) goto LAB_0003423c;" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "uVar9 = (int)param_4 - local_9c;" (assignment_expression "uVar9 = (int)param_4 - local_9c" identifier = (binary_expression "(int)param_4 - local_9c" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "iVar33 = local_9c;" (assignment_expression "iVar33 = local_9c" identifier = identifier) ;) })) (if_statement "if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }" if (parenthesized_expression "((int)param_4 < (int)param_3)" ( (binary_expression "(int)param_4 < (int)param_3" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }" { (expression_statement "cVar26 = local_150[*(byte *)(local_b0 + uVar9)];" (assignment_expression "cVar26 = local_150[*(byte *)(local_b0 + uVar9)]" identifier = (subscript_expression "local_150[*(byte *)(local_b0 + uVar9)]" identifier [ (pointer_expression "*(byte *)(local_b0 + uVar9)" * (cast_expression "(byte *)(local_b0 + uVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + uVar9)" ( (binary_expression "local_b0 + uVar9" identifier + identifier) )))) ])) ;) }) (else_clause "else {\n          cVar26 = *local_150;\n        }" else (compound_statement "{\n          cVar26 = *local_150;\n        }" { (expression_statement "cVar26 = *local_150;" (assignment_expression "cVar26 = *local_150" identifier = (pointer_expression "*local_150" * identifier)) ;) }))) (if_statement "if (cVar26 != '\0') break;" if (parenthesized_expression "(cVar26 != '\0')" ( (binary_expression "cVar26 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "param_4 = (uint *)((int)param_4 + iVar10);" (assignment_expression "param_4 = (uint *)((int)param_4 + iVar10)" identifier = (cast_expression "(uint *)((int)param_4 + iVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + iVar10)" ( (binary_expression "(int)param_4 + iVar10" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_dc = param_4;" (assignment_expression "local_dc = param_4" identifier = identifier) ;) (if_statement "if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;" if (parenthesized_expression "(((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4))" ( (binary_expression "((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)" (parenthesized_expression "((int)param_4 < (int)puVar25)" ( (binary_expression "(int)param_4 < (int)puVar25" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "((int)param_5 < (int)param_4)" ( (binary_expression "(int)param_5 < (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (goto_statement "goto LAB_000345e4;" goto statement_identifier ;)) })) (expression_statement "uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);" (assignment_expression "uVar12 = FUN_0002e53c(&local_b4,param_4,param_9)" identifier = (call_expression "FUN_0002e53c(&local_b4,param_4,param_9)" identifier (argument_list "(&local_b4,param_4,param_9)" ( (pointer_expression "&local_b4" & identifier) , identifier , identifier )))) ;) (expression_statement "piVar32 = local_60;" (assignment_expression "piVar32 = local_60" identifier = identifier) ;) (expression_statement "uVar9 = local_8c;" (assignment_expression "uVar9 = local_8c" identifier = identifier) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (expression_statement "local_154 = uVar12;" (assignment_expression "local_154 = uVar12" identifier = identifier) ;) (if_statement "if (uVar12 != 0) goto LAB_0003423c;" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (if_statement "if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }" if (parenthesized_expression "(((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1))" ( (binary_expression "((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)" (parenthesized_expression "((iVar34 == 1) || (local_98 == 0))" ( (binary_expression "(iVar34 == 1) || (local_98 == 0)" (parenthesized_expression "(iVar34 == 1)" ( (binary_expression "iVar34 == 1" identifier == number_literal) )) || (parenthesized_expression "(local_98 == 0)" ( (binary_expression "local_98 == 0" identifier == number_literal) ))) )) || (parenthesized_expression "(*local_ac != -1)" ( (binary_expression "*local_ac != -1" (pointer_expression "*local_ac" * identifier) != number_literal) ))) )) (compound_statement "{\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "iVar33 = local_60[9];" (assignment_expression "iVar33 = local_60[9]" identifier = (subscript_expression "local_60[9]" identifier [ number_literal ])) ;) (expression_statement "local_140 = local_8c;" (assignment_expression "local_140 = local_8c" identifier = identifier) ;) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" identifier = number_literal) ;) (if_statement "if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }" if (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 1) != 0)" ( (binary_expression "(*(byte *)(iVar33 + 0x34) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 1)" ( (binary_expression "*(byte *)(iVar33 + 0x34) & 1" (pointer_expression "*(byte *)(iVar33 + 0x34)" * (cast_expression "(byte *)(iVar33 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }" { (expression_statement "uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);" (assignment_expression "uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c)" identifier = (call_expression "FUN_0002e140(&local_b4,local_8c - 1,local_5c)" identifier (argument_list "(&local_b4,local_8c - 1,local_5c)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "local_8c - 1" identifier - number_literal) , identifier )))) ;) (if_statement "if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }" if (parenthesized_expression "((uVar15 & 1) == 0)" ( (binary_expression "(uVar15 & 1) == 0" (parenthesized_expression "(uVar15 & 1)" ( (binary_expression "uVar15 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }" { (if_statement "if (uVar15 == 0) goto LAB_000343a0;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000343a0;" goto statement_identifier ;)) (if_statement "if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }" if (parenthesized_expression "((uVar15 & 6) == 6)" ( (binary_expression "(uVar15 & 6) == 6" (parenthesized_expression "(uVar15 & 6)" ( (binary_expression "uVar15 & 6" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar33 = piVar32[0xc];\n            }" { (expression_statement "iVar33 = piVar32[0xc];" (assignment_expression "iVar33 = piVar32[0xc]" identifier = (subscript_expression "piVar32[0xc]" identifier [ number_literal ])) ;) }) (else_clause "else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }" else (if_statement "if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }" if (parenthesized_expression "((uVar15 & 2) == 0)" ( (binary_expression "(uVar15 & 2) == 0" (parenthesized_expression "(uVar15 & 2)" ( (binary_expression "uVar15 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }" { (if_statement "if ((uVar15 & 4) == 0) goto LAB_000343a0;" if (parenthesized_expression "((uVar15 & 4) == 0)" ( (binary_expression "(uVar15 & 4) == 0" (parenthesized_expression "(uVar15 & 4)" ( (binary_expression "uVar15 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000343a0;" goto statement_identifier ;)) (expression_statement "iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);" (assignment_expression "iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15)" identifier = (call_expression "FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15)" identifier (argument_list "(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15)" ( (pointer_expression "&local_d8" & identifier) , identifier , (pointer_expression "*(undefined4 *)(iVar33 + 0x28)" * (cast_expression "(undefined4 *)(iVar33 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x28)" ( (binary_expression "iVar33 + 0x28" identifier + number_literal) )))) , identifier )))) ;) }) (else_clause "else {\n              iVar33 = piVar32[0xb];\n            }" else (compound_statement "{\n              iVar33 = piVar32[0xb];\n            }" { (expression_statement "iVar33 = piVar32[0xb];" (assignment_expression "iVar33 = piVar32[0xb]" identifier = (subscript_expression "piVar32[0xb]" identifier [ number_literal ])) ;) }))))) }) (else_clause "else {\n            iVar33 = piVar32[10];\n          }" else (compound_statement "{\n            iVar33 = piVar32[10];\n          }" { (expression_statement "iVar33 = piVar32[10];" (assignment_expression "iVar33 = piVar32[10]" identifier = (subscript_expression "piVar32[10]" identifier [ number_literal ])) ;) }))) (if_statement "if (iVar33 == 0) goto code_r0x000350f8;" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x000350f8;" goto statement_identifier ;)) })) (labeled_statement "LAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;" statement_identifier : (expression_statement "bVar4 = ppuVar13 != (uint **)0x0;" (assignment_expression "bVar4 = ppuVar13 != (uint **)0x0" identifier = (binary_expression "ppuVar13 != (uint **)0x0" identifier != (cast_expression "(uint **)0x0" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal))) ;)) (if_statement "if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" if (parenthesized_expression "((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0))" ( (binary_expression "(local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)" (parenthesized_expression "(local_50 == (int *)0x0)" ( (binary_expression "local_50 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)" ( (comma_expression "iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0" (assignment_expression "iVar11 = piVar32[0x13]" identifier = (subscript_expression "piVar32[0x13]" identifier [ number_literal ])) , (comma_expression "local_50[uVar9] = iVar33, iVar11 == 0" (assignment_expression "local_50[uVar9] = iVar33" (subscript_expression "local_50[uVar9]" identifier [ identifier ]) = identifier) , (binary_expression "iVar11 == 0" identifier == number_literal))) ))) )) (compound_statement "{\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }" { (labeled_statement "LAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" statement_identifier : (if_statement "if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" if (parenthesized_expression "(*(int *)(iVar33 + 0x34) << 4 < 0)" ( (binary_expression "*(int *)(iVar33 + 0x34) << 4 < 0" (binary_expression "*(int *)(iVar33 + 0x34) << 4" (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) << number_literal) < number_literal) )) (compound_statement "{\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }" { (if_statement "if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }" if (parenthesized_expression "(((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0))" ( (binary_expression "((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)" (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar33 + 0x34) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 1)" ( (binary_expression "*(byte *)(iVar33 + 0x34) & 1" (pointer_expression "*(byte *)(iVar33 + 0x34)" * (cast_expression "(byte *)(iVar33 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)" ( (comma_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0" (assignment_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9)" identifier = (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9)" identifier (argument_list "(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(iVar33 + 8)" * (cast_expression "(undefined4 *)(iVar33 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) )))) , (binary_expression "iVar33 + 0xc" identifier + number_literal) , identifier )))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }" { (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;) (expression_statement "bVar5 = bVar27;" (assignment_expression "bVar5 = bVar27" identifier = identifier) ;) (if_statement "if (!bVar27) goto LAB_00034760;" if (parenthesized_expression "(!bVar27)" ( (unary_expression "!bVar27" ! identifier) )) (goto_statement "goto LAB_00034760;" goto statement_identifier ;)) }) (else_clause "else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }" else (compound_statement "{\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }" { (expression_statement "uVar9 = 0xffffffff;" (assignment_expression "uVar9 = 0xffffffff" identifier = number_literal) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) }))) }) (else_clause "else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" else (compound_statement "{\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" { (expression_statement "uVar9 = 0xffffffff;" (assignment_expression "uVar9 = 0xffffffff" identifier = number_literal) ;) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) })))) (expression_statement "pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);" (assignment_expression "pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x576c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x576c)" ( (binary_expression "PTR_LAB_0005332c + -0x576c" identifier + number_literal) )))) ;) (expression_statement "pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);" (assignment_expression "pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + 0x17e0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + 0x17e0)" ( (binary_expression "PTR_LAB_0005332c + 0x17e0" identifier + number_literal) )))) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) (expression_statement "local_14c = ppuVar13;" (assignment_expression "local_14c = ppuVar13" identifier = identifier) ;) (while_statement "while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }" while (parenthesized_expression "((int)uVar15 < (int)local_7c)" ( (binary_expression "(int)uVar15 < (int)local_7c" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_7c" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }" { (expression_statement "uVar35 = uVar15 + 1;" (assignment_expression "uVar35 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }" if (parenthesized_expression "((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98))))" ( (binary_expression "(((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))" (parenthesized_expression "(((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90))" ( (binary_expression "((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)" (parenthesized_expression "((int)uVar35 < (int)local_90)" ( (binary_expression "(int)uVar35 < (int)local_90" (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "((int)local_84 <= (int)local_90)" ( (binary_expression "(int)local_84 <= (int)local_90" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_90" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) && (parenthesized_expression "(((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))" ( (parenthesized_expression "((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98))" ( (binary_expression "(int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)" (binary_expression "(int)uVar35 < (int)local_98" (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) || (parenthesized_expression "((int)local_84 <= (int)local_98)" ( (binary_expression "(int)local_84 <= (int)local_98" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) ))) )) (compound_statement "{\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }" { (expression_statement "iVar11 = *(int *)(iVar33 + 0x34);" (assignment_expression "iVar11 = *(int *)(iVar33 + 0x34)" identifier = (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "piVar18 = local_60;" (assignment_expression "piVar18 = local_60" identifier = identifier) ;) }) (else_clause "else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }" else (compound_statement "{\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }" { (expression_statement "local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);" (assignment_expression "local_d8 = (*pcVar16)(&local_b4,uVar15 + 2)" identifier = (call_expression "(*pcVar16)(&local_b4,uVar15 + 2)" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "(&local_b4,uVar15 + 2)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "uVar15 + 2" identifier + number_literal) )))) ;) (if_statement "if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }" if (parenthesized_expression "(local_d8 != 0)" ( (binary_expression "local_d8 != 0" identifier != number_literal) )) (compound_statement "{\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }" { (if_statement "if (local_d8 == 0xc) goto LAB_00034274;" if (parenthesized_expression "(local_d8 == 0xc)" ( (binary_expression "local_d8 == 0xc" identifier == number_literal) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (expression_statement "uVar23 = 0x468;" (assignment_expression "uVar23 = 0x468" identifier = number_literal) ;) (goto_statement "goto LAB_00035118;" goto statement_identifier ;) })) (expression_statement "iVar11 = *(int *)(iVar33 + 0x34);" (assignment_expression "iVar11 = *(int *)(iVar33 + 0x34)" identifier = (pointer_expression "*(int *)(iVar33 + 0x34)" * (cast_expression "(int *)(iVar33 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) (expression_statement "piVar18 = local_60;" (assignment_expression "piVar18 = local_60" identifier = identifier) ;) }))) (expression_statement "local_60 = piVar18;" (assignment_expression "local_60 = piVar18" identifier = identifier) ;) (if_statement "if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }" if (parenthesized_expression "(iVar11 << 5 < 0)" ( (binary_expression "iVar11 << 5 < 0" (binary_expression "iVar11 << 5" identifier << number_literal) < number_literal) )) (compound_statement "{\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }" { (expression_statement "iVar11 = *(int *)(iVar33 + 8);" (assignment_expression "iVar11 = *(int *)(iVar33 + 8)" identifier = (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }" { (expression_statement "param_4 = (uint *)0x0;" (assignment_expression "param_4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);" (assignment_expression "pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x55a0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x55a0)" ( (binary_expression "PTR_LAB_0005332c + -0x55a0" identifier + number_literal) )))) ;) (expression_statement "pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);" (assignment_expression "pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + -0x1ec0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + -0x1ec0)" ( (binary_expression "PTR_LAB_0005332c + -0x1ec0" identifier + number_literal) )))) ;) (do_statement "do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);" do (compound_statement "{\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                }" { (expression_statement "iVar36 = *piVar18;" (assignment_expression "iVar36 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);" (assignment_expression "iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" * (cast_expression "(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" ( (binary_expression "*(int *)(iVar33 + 0xc) + (int)param_4 * 4" (pointer_expression "*(int *)(iVar33 + 0xc)" * (cast_expression "(int *)(iVar33 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0xc)" ( (binary_expression "iVar33 + 0xc" identifier + number_literal) )))) + (binary_expression "(int)param_4 * 4" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (expression_statement "uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);" (assignment_expression "uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4)" identifier = (pointer_expression "*(uint *)(iVar36 + iVar38 * 8 + 4)" * (cast_expression "(uint *)(iVar36 + iVar38 * 8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar36 + iVar38 * 8 + 4)" ( (binary_expression "iVar36 + iVar38 * 8 + 4" (binary_expression "iVar36 + iVar38 * 8" identifier + (binary_expression "iVar38 * 8" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }" if (parenthesized_expression "((uVar31 & 0x800) != 0)" ( (binary_expression "(uVar31 & 0x800) != 0" (parenthesized_expression "(uVar31 & 0x800)" ( (binary_expression "uVar31 & 0x800" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }" { (if_statement "if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }" if (parenthesized_expression "((uVar31 & 0xffc000) != 0)" ( (binary_expression "(uVar31 & 0xffc000) != 0" (parenthesized_expression "(uVar31 & 0xffc000)" ( (binary_expression "uVar31 & 0xffc000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }" { (expression_statement "uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);" (assignment_expression "uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c)" identifier = (call_expression "(*pcVar21)(&local_b4,uVar15,local_5c)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(&local_b4,uVar15,local_5c)" ( (pointer_expression "&local_b4" & identifier) , identifier , identifier )))) ;) (expression_statement "uVar31 = (uVar31 << 8) >> 0x16;" (assignment_expression "uVar31 = (uVar31 << 8) >> 0x16" identifier = (binary_expression "(uVar31 << 8) >> 0x16" (parenthesized_expression "(uVar31 << 8)" ( (binary_expression "uVar31 << 8" identifier << number_literal) )) >> number_literal)) ;) (if_statement "if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }" { (expression_statement "uVar29 = uVar22 & 1;" (assignment_expression "uVar29 = uVar22 & 1" identifier = (binary_expression "uVar22 & 1" identifier & number_literal)) ;) (if_statement "if ((uVar31 & 8) != 0) goto joined_r0x00034b90;" if (parenthesized_expression "((uVar31 & 8) != 0)" ( (binary_expression "(uVar31 & 8) != 0" (parenthesized_expression "(uVar31 & 8)" ( (binary_expression "uVar31 & 8" identifier & number_literal) )) != number_literal) )) (goto_statement "goto joined_r0x00034b90;" goto statement_identifier ;)) }) (else_clause "else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }" else (compound_statement "{\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }" { (expression_statement "uVar29 = uVar31 & 8;" (assignment_expression "uVar29 = uVar31 & 8" identifier = (binary_expression "uVar31 & 8" identifier & number_literal)) ;) (if_statement "if ((uVar22 & 1) == 0) goto LAB_00034cec;" if (parenthesized_expression "((uVar22 & 1) == 0)" ( (binary_expression "(uVar22 & 1) == 0" (parenthesized_expression "(uVar22 & 1)" ( (binary_expression "uVar22 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00034cec;" goto statement_identifier ;)) (labeled_statement "joined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;" statement_identifier : (if_statement "if (uVar29 != 0) goto LAB_00034cec;" if (parenthesized_expression "(uVar29 != 0)" ( (binary_expression "uVar29 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00034cec;" goto statement_identifier ;))) }))) (if_statement "if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;" if (parenthesized_expression "((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0))))" ( (binary_expression "(((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))" (parenthesized_expression "(((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0))" ( (binary_expression "((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)" (parenthesized_expression "((uVar31 & 0x20) != 0)" ( (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "((uVar22 & 2) == 0)" ( (binary_expression "(uVar22 & 2) == 0" (parenthesized_expression "(uVar22 & 2)" ( (binary_expression "uVar22 & 2" identifier & number_literal) )) == number_literal) ))) )) || (parenthesized_expression "(((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))" ( (parenthesized_expression "((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0))" ( (binary_expression "(uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)" (binary_expression "(uVar31 & 0x80) != 0" (parenthesized_expression "(uVar31 & 0x80)" ( (binary_expression "uVar31 & 0x80" identifier & number_literal) )) != number_literal) && (parenthesized_expression "((uVar22 & 8) == 0)" ( (binary_expression "(uVar22 & 8) == 0" (parenthesized_expression "(uVar22 & 8)" ( (binary_expression "uVar22 & 8" identifier & number_literal) )) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_00034cec;" goto statement_identifier ;)) })) (expression_statement "iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);" (assignment_expression "iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15)" identifier = (call_expression "(*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15)" ( identifier , (binary_expression "piVar18 + 0x20" identifier + number_literal) , identifier , (pointer_expression "&local_b4" & identifier) , identifier )))) ;) (if_statement "if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }" { (if_statement "if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }" if (parenthesized_expression "(local_3c < iVar11)" ( (binary_expression "local_3c < iVar11" identifier < identifier) )) (compound_statement "{\n                        local_3c = iVar11;\n                      }" { (expression_statement "local_3c = iVar11;" (assignment_expression "local_3c = iVar11" identifier = identifier) ;) })) (expression_statement "iVar11 = iVar11 + local_8c;" (assignment_expression "iVar11 = iVar11 + local_8c" identifier = (binary_expression "iVar11 + local_8c" identifier + identifier)) ;) (expression_statement "local_d4 = (*pcVar20)(&local_b4,iVar11);" (assignment_expression "local_d4 = (*pcVar20)(&local_b4,iVar11)" identifier = (call_expression "(*pcVar20)(&local_b4,iVar11)" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "(&local_b4,iVar11)" ( (pointer_expression "&local_b4" & identifier) , identifier )))) ;) (expression_statement "uVar15 = local_d4;" (assignment_expression "uVar15 = local_d4" identifier = identifier) ;) (if_statement "if (local_d4 != 0) goto joined_r0x00034dec;" if (parenthesized_expression "(local_d4 != 0)" ( (binary_expression "local_d4 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x00034dec;" goto statement_identifier ;)) (expression_statement "piVar19 = local_50 + iVar11;" (assignment_expression "piVar19 = local_50 + iVar11" identifier = (binary_expression "local_50 + iVar11" identifier + identifier)) ;) (expression_statement "iVar36 = *piVar19;" (assignment_expression "iVar36 = *piVar19" identifier = (pointer_expression "*piVar19" * identifier)) ;) (expression_statement "piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);" (assignment_expression "piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc)" identifier = (cast_expression "(int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc)" ( (binary_expression "piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc" (subscript_expression "piVar18[6]" identifier [ number_literal ]) + (binary_expression "*(int *)(piVar18[3] + iVar38 * 4) * 0xc" (pointer_expression "*(int *)(piVar18[3] + iVar38 * 4)" * (cast_expression "(int *)(piVar18[3] + iVar38 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar18[3] + iVar38 * 4)" ( (binary_expression "piVar18[3] + iVar38 * 4" (subscript_expression "piVar18[3]" identifier [ number_literal ]) + (binary_expression "iVar38 * 4" identifier * number_literal)) )))) * number_literal)) )))) ;) (if_statement "if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }" if (parenthesized_expression "(iVar36 == 0)" ( (binary_expression "iVar36 == 0" identifier == number_literal) )) (compound_statement "{\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }" { (expression_statement "local_d0 = (int *)*piVar32;" (assignment_expression "local_d0 = (int *)*piVar32" identifier = (cast_expression "(int *)*piVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar32" * identifier))) ;) (expression_statement "local_cc = (int *)piVar32[1];" (assignment_expression "local_cc = (int *)piVar32[1]" identifier = (cast_expression "(int *)piVar32[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar32[1]" identifier [ number_literal ]))) ;) (expression_statement "local_c8 = piVar32[2];" (assignment_expression "local_c8 = piVar32[2]" identifier = (subscript_expression "piVar32[2]" identifier [ number_literal ])) ;) (expression_statement "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);" (assignment_expression "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c)" identifier = (call_expression "(*pcVar21)(&local_b4,iVar11 + -1,local_5c)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(&local_b4,iVar11 + -1,local_5c)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "iVar11 + -1" identifier + number_literal) , identifier )))) ;) (expression_statement "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);" (assignment_expression "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" identifier = (call_expression "FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" identifier (argument_list "(&local_d4,piVar18,&local_d0,uVar23)" ( (pointer_expression "&local_d4" & identifier) , identifier , (pointer_expression "&local_d0" & identifier) , identifier )))) ;) (expression_statement "*piVar19 = iVar36;" (assignment_expression "*piVar19 = iVar36" (pointer_expression "*piVar19" * identifier) = identifier) ;) }) (else_clause "else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }" else (compound_statement "{\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }" { (expression_statement "local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));" (assignment_expression "local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28))" identifier = (call_expression "FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28))" identifier (argument_list "(&local_d0,*(undefined4 *)(iVar36 + 0x28))" ( (pointer_expression "&local_d0" & identifier) , (pointer_expression "*(undefined4 *)(iVar36 + 0x28)" * (cast_expression "(undefined4 *)(iVar36 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar36 + 0x28)" ( (binary_expression "iVar36 + 0x28" identifier + number_literal) )))) )))) ;) (expression_statement "uVar15 = local_d4;" (assignment_expression "uVar15 = local_d4" identifier = identifier) ;) (if_statement "if (local_d4 != 0) goto joined_r0x00034dec;" if (parenthesized_expression "(local_d4 != 0)" ( (binary_expression "local_d4 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x00034dec;" goto statement_identifier ;)) (expression_statement "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);" (assignment_expression "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c)" identifier = (call_expression "(*pcVar21)(&local_b4,iVar11 + -1,local_5c)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(&local_b4,iVar11 + -1,local_5c)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "iVar11 + -1" identifier + number_literal) , identifier )))) ;) (expression_statement "piVar32 = local_50 + iVar11;" (assignment_expression "piVar32 = local_50 + iVar11" identifier = (binary_expression "local_50 + iVar11" identifier + identifier)) ;) (expression_statement "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);" (assignment_expression "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" identifier = (call_expression "FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" identifier (argument_list "(&local_d4,piVar18,&local_d0,uVar23)" ( (pointer_expression "&local_d4" & identifier) , identifier , (pointer_expression "&local_d0" & identifier) , identifier )))) ;) (expression_statement "puVar7 = PTR_free_000534fc;" (assignment_expression "puVar7 = PTR_free_000534fc" identifier = identifier) ;) (expression_statement "*piVar32 = iVar36;" (assignment_expression "*piVar32 = iVar36" (pointer_expression "*piVar32" * identifier) = identifier) ;) (expression_statement "(*(code *)puVar7)(local_c8);" (call_expression "(*(code *)puVar7)(local_c8)" (parenthesized_expression "(*(code *)puVar7)" ( (pointer_expression "*(code *)puVar7" * (cast_expression "(code *)puVar7" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_c8)" ( identifier ))) ;) }))) (if_statement "if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;" if (parenthesized_expression "((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))" ( (binary_expression "(local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0)" (parenthesized_expression "(local_50[iVar11] == 0)" ( (binary_expression "local_50[iVar11] == 0" (subscript_expression "local_50[iVar11]" identifier [ identifier ]) == number_literal) )) && (parenthesized_expression "(uVar15 = local_d4, local_d4 != 0)" ( (comma_expression "uVar15 = local_d4, local_d4 != 0" (assignment_expression "uVar15 = local_d4" identifier = identifier) , (binary_expression "local_d4 != 0" identifier != number_literal)) ))) )) (goto_statement "goto joined_r0x00034dec;" goto statement_identifier ;)) })) (expression_statement "iVar11 = *(int *)(iVar33 + 8);" (assignment_expression "iVar11 = *(int *)(iVar33 + 8)" identifier = (pointer_expression "*(int *)(iVar33 + 8)" * (cast_expression "(int *)(iVar33 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) })) (labeled_statement "LAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);" statement_identifier : (expression_statement "param_4 = (uint *)((int)param_4 + 1);" (assignment_expression "param_4 = (uint *)((int)param_4 + 1)" identifier = (cast_expression "(uint *)((int)param_4 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + 1)" ( (binary_expression "(int)param_4 + 1" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) }) while (parenthesized_expression "((int)param_4 < iVar11)" ( (binary_expression "(int)param_4 < iVar11" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" identifier = number_literal) ;) })) (expression_statement "local_8c = uVar15 + 1;" (assignment_expression "local_8c = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = (uint)*(byte *)(local_b0 + uVar15);" (assignment_expression "uVar15 = (uint)*(byte *)(local_b0 + uVar15)" identifier = (binary_expression "(uint)*(byte *)(local_b0 + uVar15)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_b0 + uVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b0 + uVar15)" ( (binary_expression "local_b0 + uVar15" identifier + identifier) ))))) ;) (do_statement "do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);" do (compound_statement "{\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            }" { (if_statement "if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }" if (parenthesized_expression "(*(int *)(iVar33 + 0x2c) != 0)" ( (binary_expression "*(int *)(iVar33 + 0x2c) != 0" (pointer_expression "*(int *)(iVar33 + 0x2c)" * (cast_expression "(int *)(iVar33 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x2c)" ( (binary_expression "iVar33 + 0x2c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }" { (expression_statement "iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);" (assignment_expression "iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" identifier = (pointer_expression "*(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" * (cast_expression "(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" ( (binary_expression "*(int *)(iVar33 + 0x2c) + uVar15 * 4" (pointer_expression "*(int *)(iVar33 + 0x2c)" * (cast_expression "(int *)(iVar33 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x2c)" ( (binary_expression "iVar33 + 0x2c" identifier + number_literal) )))) + (binary_expression "uVar15 * 4" identifier * number_literal)) ))))) ;) (labeled_statement "LAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;" statement_identifier : (if_statement "if (local_50 != (int *)0x0) goto LAB_00034478;" if (parenthesized_expression "(local_50 != (int *)0x0)" ( (binary_expression "local_50 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00034478;" goto statement_identifier ;))) (goto_statement "goto LAB_00034498;" goto statement_identifier ;) })) (expression_statement "iVar11 = *(int *)(iVar33 + 0x30);" (assignment_expression "iVar11 = *(int *)(iVar33 + 0x30)" identifier = (pointer_expression "*(int *)(iVar33 + 0x30)" * (cast_expression "(int *)(iVar33 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x30)" ( (binary_expression "iVar33 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }" { (expression_statement "uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);" (assignment_expression "uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c)" identifier = (call_expression "FUN_0002e140(&local_b4,local_8c - 1,local_5c)" identifier (argument_list "(&local_b4,local_8c - 1,local_5c)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "local_8c - 1" identifier - number_literal) , identifier )))) ;) (if_statement "if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }" if (parenthesized_expression "((uVar31 & 1) == 0)" ( (binary_expression "(uVar31 & 1) == 0" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }" { (expression_statement "iVar11 = *(int *)(iVar11 + uVar15 * 4);" (assignment_expression "iVar11 = *(int *)(iVar11 + uVar15 * 4)" identifier = (pointer_expression "*(int *)(iVar11 + uVar15 * 4)" * (cast_expression "(int *)(iVar11 + uVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + uVar15 * 4)" ( (binary_expression "iVar11 + uVar15 * 4" identifier + (binary_expression "uVar15 * 4" identifier * number_literal)) ))))) ;) }) (else_clause "else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }" else (compound_statement "{\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }" { (expression_statement "iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);" (assignment_expression "iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4)" identifier = (pointer_expression "*(int *)(iVar11 + (uVar15 + 0x100) * 4)" * (cast_expression "(int *)(iVar11 + (uVar15 + 0x100) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (uVar15 + 0x100) * 4)" ( (binary_expression "iVar11 + (uVar15 + 0x100) * 4" identifier + (binary_expression "(uVar15 + 0x100) * 4" (parenthesized_expression "(uVar15 + 0x100)" ( (binary_expression "uVar15 + 0x100" identifier + number_literal) )) * number_literal)) ))))) ;) }))) (goto_statement "goto LAB_0003446c;" goto statement_identifier ;) })) (expression_statement "iVar11 = (*pcVar28)(local_60,iVar33);" (assignment_expression "iVar11 = (*pcVar28)(local_60,iVar33)" identifier = (call_expression "(*pcVar28)(local_60,iVar33)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(local_60,iVar33)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_d8 = 0xc;" (assignment_expression "local_d8 = 0xc" identifier = number_literal) ;) (expression_statement "uVar15 = local_d8;" (assignment_expression "uVar15 = local_d8" identifier = identifier) ;) (labeled_statement "joined_r0x00034dec:\n            local_d8 = uVar15;" statement_identifier : (expression_statement "local_d8 = uVar15;" (assignment_expression "local_d8 = uVar15" identifier = identifier) ;)) (if_statement "if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }" if (parenthesized_expression "(local_50 == (int *)0x0)" ( (binary_expression "local_50 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }" { (expression_statement "piVar18 = (int *)0x0;" (assignment_expression "piVar18 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00034230;" goto statement_identifier ;) })) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);" statement_identifier : (expression_statement "iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);" (assignment_expression "iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11)" identifier = (call_expression "FUN_00033724(&local_d8,&local_b4,iVar11)" identifier (argument_list "(&local_d8,&local_b4,iVar11)" ( (pointer_expression "&local_d8" & identifier) , (pointer_expression "&local_b4" & identifier) , identifier )))) ;)) (labeled_statement "LAB_00034498:\n            uVar15 = local_8c;" statement_identifier : (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;)) (if_statement "if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }" { (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_d8 != 0) goto LAB_00034230;" if (parenthesized_expression "(local_d8 != 0)" ( (binary_expression "local_d8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00034230;" goto statement_identifier ;)) (if_statement "if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;" if (parenthesized_expression "((local_50 == (int *)0x0) || ((bVar5 && (!bVar27))))" ( (binary_expression "(local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))" (parenthesized_expression "(local_50 == (int *)0x0)" ( (binary_expression "local_50 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((bVar5 && (!bVar27)))" ( (parenthesized_expression "(bVar5 && (!bVar27))" ( (binary_expression "bVar5 && (!bVar27)" identifier && (parenthesized_expression "(!bVar27)" ( (unary_expression "!bVar27" ! identifier) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "param_4 = &local_d8;" (assignment_expression "param_4 = &local_d8" identifier = (pointer_expression "&local_d8" & identifier)) ;) (do_statement "do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);" do (compound_statement "{\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              }" { (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "piVar18 = local_50 + local_8c;" (assignment_expression "piVar18 = local_50 + local_8c" identifier = (binary_expression "local_50 + local_8c" identifier + identifier)) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) (do_statement "do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);" do (compound_statement "{\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                }" { (expression_statement "uVar31 = uVar15 + 1;" (assignment_expression "uVar31 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = piVar18 + 1;" (assignment_expression "piVar18 = piVar18 + 1" identifier = (binary_expression "piVar18 + 1" identifier + number_literal)) ;) (if_statement "if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }" if (parenthesized_expression "(local_4c < (int)uVar31)" ( (binary_expression "local_4c < (int)uVar31" identifier < (cast_expression "(int)uVar31" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }" { (if_statement "if (bVar3) {\n                      local_8c = uVar15;\n                    }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n                      local_8c = uVar15;\n                    }" { (expression_statement "local_8c = uVar15;" (assignment_expression "local_8c = uVar15" identifier = identifier) ;) })) (goto_statement "goto LAB_00034748;" goto statement_identifier ;) })) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "uVar15 = uVar31;" (assignment_expression "uVar15 = uVar31" identifier = identifier) ;) }) while (parenthesized_expression "(*piVar18 == 0)" ( (binary_expression "*piVar18 == 0" (pointer_expression "*piVar18" * identifier) == number_literal) )) ;) (expression_statement "local_8c = uVar31;" (assignment_expression "local_8c = uVar31" identifier = identifier) ;) (expression_statement "iVar11 = FUN_00033724(param_4,&local_b4,0);" (assignment_expression "iVar11 = FUN_00033724(param_4,&local_b4,0)" identifier = (call_expression "FUN_00033724(param_4,&local_b4,0)" identifier (argument_list "(param_4,&local_b4,0)" ( identifier , (pointer_expression "&local_b4" & identifier) , number_literal )))) ;) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" identifier = identifier) ;) (if_statement "if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }" if (parenthesized_expression "(local_d8 != 0)" ( (binary_expression "local_d8 != 0" identifier != number_literal) )) (compound_statement "{\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }" { (if_statement "if (iVar11 == 0) goto LAB_00034748;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00034748;" goto statement_identifier ;)) (break_statement "break;" break ;) })) }) while (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) ;) })) (expression_statement "uVar31 = local_140;" (assignment_expression "uVar31 = local_140" identifier = identifier) ;) (if_statement "if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }" if (parenthesized_expression "((bVar4) && (uVar31 = uVar35, iVar33 != iVar11))" ( (binary_expression "(bVar4) && (uVar31 = uVar35, iVar33 != iVar11)" (parenthesized_expression "(bVar4)" ( identifier )) && (parenthesized_expression "(uVar31 = uVar35, iVar33 != iVar11)" ( (comma_expression "uVar31 = uVar35, iVar33 != iVar11" (assignment_expression "uVar31 = uVar35" identifier = identifier) , (binary_expression "iVar33 != iVar11" identifier != identifier)) ))) )) (compound_statement "{\n              bVar4 = false;\n              uVar31 = local_140;\n            }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (expression_statement "uVar31 = local_140;" (assignment_expression "uVar31 = local_140" identifier = identifier) ;) })) (expression_statement "local_140 = uVar31;" (assignment_expression "local_140 = uVar31" identifier = identifier) ;) (expression_statement "iVar33 = iVar11;" (assignment_expression "iVar33 = iVar11" identifier = identifier) ;) (expression_statement "local_8c = uVar15;" (assignment_expression "local_8c = uVar15" identifier = identifier) ;) (if_statement "if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }" if (parenthesized_expression "(((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0))))" ( (binary_expression "((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))" (parenthesized_expression "((*(byte *)(iVar11 + 0x34) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar11 + 0x34) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x34) & 8)" ( (binary_expression "*(byte *)(iVar11 + 0x34) & 8" (pointer_expression "*(byte *)(iVar11 + 0x34)" * (cast_expression "(byte *)(iVar11 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x34)" ( (binary_expression "iVar11 + 0x34" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))" ( (parenthesized_expression "((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0))" ( (binary_expression "(*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)" (binary_expression "(*(byte *)(iVar11 + 0x34) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x34) & 1)" ( (binary_expression "*(byte *)(iVar11 + 0x34) & 1" (pointer_expression "*(byte *)(iVar11 + 0x34)" * (cast_expression "(byte *)(iVar11 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x34)" ( (binary_expression "iVar11 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "(iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)" ( (comma_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0" (assignment_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15)" identifier = (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15)" identifier (argument_list "(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(iVar11 + 8)" * (cast_expression "(undefined4 *)(iVar11 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) )))) , (binary_expression "iVar11 + 0xc" identifier + number_literal) , identifier )))) , (binary_expression "iVar11 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }" { (if_statement "if (!bVar27) goto LAB_00034760;" if (parenthesized_expression "(!bVar27)" ( (unary_expression "!bVar27" ! identifier) )) (goto_statement "goto LAB_00034760;" goto statement_identifier ;)) (expression_statement "local_14c = (uint **)0x0;" (assignment_expression "local_14c = (uint **)0x0" identifier = (cast_expression "(uint **)0x0" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "uVar9 = uVar15;" (assignment_expression "uVar9 = uVar15" identifier = identifier) ;) (expression_statement "bVar5 = bVar27;" (assignment_expression "bVar5 = bVar27" identifier = identifier) ;) })) })) (labeled_statement "LAB_00034748:\n          uVar15 = uVar9;" statement_identifier : (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;)) (if_statement "if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }" if (parenthesized_expression "(local_14c != (uint **)0x0)" ( (binary_expression "local_14c != (uint **)0x0" identifier != (cast_expression "(uint **)0x0" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }" { (expression_statement "*local_14c = (uint *)((int)*local_14c + local_140);" (assignment_expression "*local_14c = (uint *)((int)*local_14c + local_140)" (pointer_expression "*local_14c" * identifier) = (cast_expression "(uint *)((int)*local_14c + local_140)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*local_14c + local_140)" ( (binary_expression "(int)*local_14c + local_140" (cast_expression "(int)*local_14c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*local_14c" * identifier)) + identifier) )))) ;) })) }) (else_clause "else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" else (compound_statement "{\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" { (expression_statement "uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);" (assignment_expression "uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0)" identifier = (call_expression "FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0)" identifier (argument_list "(&local_b4,iVar33 + 8,iVar33 + 0xc,0)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "iVar33 + 8" identifier + number_literal) , (binary_expression "iVar33 + 0xc" identifier + number_literal) , number_literal )))) ;) (expression_statement "local_d8 = uVar15;" (assignment_expression "local_d8 = uVar15" identifier = identifier) ;) (if_statement "if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }" { (if_statement "if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }" if (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar33 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 2)" ( (binary_expression "*(byte *)(iVar33 + 0x34) & 2" (pointer_expression "*(byte *)(iVar33 + 0x34)" * (cast_expression "(byte *)(iVar33 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n              bVar4 = false;\n            }" { (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }) (else_clause "else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }" else (compound_statement "{\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }" { (expression_statement "uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);" (assignment_expression "uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc)" identifier = (call_expression "FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc)" identifier (argument_list "(&local_b4,iVar33 + 8,iVar33 + 0xc)" ( (pointer_expression "&local_b4" & identifier) , (binary_expression "iVar33 + 8" identifier + number_literal) , (binary_expression "iVar33 + 0xc" identifier + number_literal) )))) ;) (expression_statement "local_d8 = uVar15;" (assignment_expression "local_d8 = uVar15" identifier = identifier) ;) (if_statement "if (uVar15 != 0) goto LAB_00034760;" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00034760;" goto statement_identifier ;)) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) }))) (goto_statement "goto LAB_000343c4;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00034760:\n        piVar18 = local_50;" statement_identifier : (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;)) (expression_statement "puVar7 = PTR_LAB_0005332c;" (assignment_expression "puVar7 = PTR_LAB_0005332c" identifier = identifier) ;) (if_statement "if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }" if (parenthesized_expression "(uVar15 != 0xffffffff)" ( (binary_expression "uVar15 != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }" { (if_statement "if (uVar15 == 0xfffffffe) goto LAB_00034274;" if (parenthesized_expression "(uVar15 == 0xfffffffe)" ( (binary_expression "uVar15 == 0xfffffffe" identifier == number_literal) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (expression_statement "local_58 = uVar15;" (assignment_expression "local_58 = uVar15" identifier = identifier) ;) (if_statement "if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }" if (parenthesized_expression "((*(byte *)(param_1 + 7) & 8) == 0)" ( (binary_expression "(*(byte *)(param_1 + 7) & 8) == 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 8)" ( (binary_expression "*(byte *)(param_1 + 7) & 8" (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }" { (if_statement "if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (compound_statement "{\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }" { (expression_statement "iVar33 = piVar37[0x13];" (assignment_expression "iVar33 = piVar37[0x13]" identifier = (subscript_expression "piVar37[0x13]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x00034fc8;" goto statement_identifier ;) })) (expression_statement "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);" (assignment_expression "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15)" identifier = (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15)" identifier (argument_list "(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(local_50[uVar15] + 8)" * (cast_expression "(undefined4 *)(local_50[uVar15] + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50[uVar15] + 8)" ( (binary_expression "local_50[uVar15] + 8" (subscript_expression "local_50[uVar15]" identifier [ identifier ]) + number_literal) )))) , (binary_expression "local_50[uVar15] + 0xc" (subscript_expression "local_50[uVar15]" identifier [ identifier ]) + number_literal) , identifier )))) ;) (if_statement "if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;" if (parenthesized_expression "((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0))" ( (binary_expression "(*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)" (parenthesized_expression "(*(char *)(piVar37 + 0x16) < '\0')" ( (binary_expression "*(char *)(piVar37 + 0x16) < '\0'" (pointer_expression "*(char *)(piVar37 + 0x16)" * (cast_expression "(char *)(piVar37 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37 + 0x16)" ( (binary_expression "piVar37 + 0x16" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(piVar37[0x13] != 0)" ( (binary_expression "piVar37[0x13] != 0" (subscript_expression "piVar37[0x13]" identifier [ number_literal ]) != number_literal) ))) )) (goto_statement "goto LAB_000347ec;" goto statement_identifier ;)) }) (else_clause "else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }" else (compound_statement "{\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }" { (expression_statement "iVar33 = piVar37[0x13];" (assignment_expression "iVar33 = piVar37[0x13]" identifier = (subscript_expression "piVar37[0x13]" identifier [ number_literal ])) ;) (labeled_statement "joined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }" statement_identifier : (if_statement "if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (compound_statement "{\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }" { (expression_statement "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);" (assignment_expression "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15)" identifier = (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15)" identifier (argument_list "(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(local_50[uVar15] + 8)" * (cast_expression "(undefined4 *)(local_50[uVar15] + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50[uVar15] + 8)" ( (binary_expression "local_50[uVar15] + 8" (subscript_expression "local_50[uVar15]" identifier [ identifier ]) + number_literal) )))) , (binary_expression "local_50[uVar15] + 0xc" (subscript_expression "local_50[uVar15]" identifier [ identifier ]) + number_literal) , identifier )))) ;) (labeled_statement "LAB_000347ec:\n              iVar33 = local_54;" statement_identifier : (expression_statement "iVar33 = local_54;" (assignment_expression "iVar33 = local_54" identifier = identifier) ;)) (expression_statement "piVar32 = local_60;" (assignment_expression "piVar32 = local_60" identifier = identifier) ;) (if_statement "if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }" if (parenthesized_expression "(uVar15 < 0x3fffffff)" ( (binary_expression "uVar15 < 0x3fffffff" identifier < number_literal) )) (compound_statement "{\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }" { (expression_statement "local_160 = uVar15 + 1;" (assignment_expression "local_160 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);" (assignment_expression "piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(local_160 * 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 "(local_160 * 4)" ( (binary_expression "local_160 * 4" identifier * number_literal) ))))) ;) (if_statement "if (piVar18 == (int *)0x0) goto LAB_00034274;" if (parenthesized_expression "(piVar18 == (int *)0x0)" ( (binary_expression "piVar18 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00034274;" goto statement_identifier ;)) (if_statement "if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }" if (parenthesized_expression "(piVar32[0x13] == 0)" ( (binary_expression "piVar32[0x13] == 0" (subscript_expression "piVar32[0x13]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }" { (expression_statement "local_cc = (int *)0x0;" (assignment_expression "local_cc = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = piVar18;" (assignment_expression "local_d0 = piVar18" identifier = identifier) ;) (expression_statement "local_c8 = iVar33;" (assignment_expression "local_c8 = iVar33" identifier = identifier) ;) (expression_statement "local_c4 = uVar15;" (assignment_expression "local_c4 = uVar15" identifier = identifier) ;) (expression_statement "local_154 = FUN_00033988(&local_b4,&local_d0);" (assignment_expression "local_154 = FUN_00033988(&local_b4,&local_d0)" identifier = (call_expression "FUN_00033988(&local_b4,&local_d0)" identifier (argument_list "(&local_b4,&local_d0)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "&local_d0" & identifier) )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_b8);" (call_expression "(*(code *)PTR_free_000534fc)(local_b8)" (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_b8)" ( identifier ))) ;) (if_statement "if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }" if (parenthesized_expression "(local_154 == 0)" ( (binary_expression "local_154 == 0" identifier == number_literal) )) (compound_statement "{\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }" { (if_statement "if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }" if (parenthesized_expression "(*piVar18 == 0)" ( (binary_expression "*piVar18 == 0" (pointer_expression "*piVar18" * identifier) == number_literal) )) (compound_statement "{\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }" { (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (goto_statement "goto LAB_00034950;" goto statement_identifier ;) })) (labeled_statement "LAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);" statement_identifier : (expression_statement "(*(code *)PTR_free_000534fc)(local_50);" (call_expression "(*(code *)PTR_free_000534fc)(local_50)" (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_50)" ( identifier ))) ;)) (expression_statement "local_58 = uVar15;" (assignment_expression "local_58 = uVar15" identifier = identifier) ;) (expression_statement "local_54 = iVar33;" (assignment_expression "local_54 = iVar33" identifier = identifier) ;) (expression_statement "local_50 = piVar18;" (assignment_expression "local_50 = piVar18" identifier = identifier) ;) (goto_statement "goto LAB_00034e5c;" goto statement_identifier ;) })) (labeled_statement "LAB_00035394:\n                  local_15c = (int *)0x0;" statement_identifier : (expression_statement "local_15c = (int *)0x0;" (assignment_expression "local_15c = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }" else (compound_statement "{\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }" { (expression_statement "local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);" (assignment_expression "local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" identifier = (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_00053474)(local_160 * 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 "(local_160 * 4)" ( (binary_expression "local_160 * 4" identifier * number_literal) ))))) ;) (if_statement "if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }" if (parenthesized_expression "(local_15c == (int *)0x0)" ( (binary_expression "local_15c == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }" { (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" identifier = number_literal) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) (expression_statement "pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);" (assignment_expression "pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988)" identifier = (cast_expression "(code *)(PTR_LAB_0005332c + 0x3988)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0005332c + 0x3988)" ( (binary_expression "PTR_LAB_0005332c + 0x3988" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }" { (expression_statement "(*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);" (call_expression "(*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4)" (parenthesized_expression "(*(code *)PTR_memset_00053430)" ( (pointer_expression "*(code *)PTR_memset_00053430" * (cast_expression "(code *)PTR_memset_00053430" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_15c,0,local_160 * 4)" ( identifier , number_literal , (binary_expression "local_160 * 4" identifier * number_literal) ))) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_d0 = piVar18;" (assignment_expression "local_d0 = piVar18" identifier = identifier) ;) (expression_statement "local_cc = local_15c;" (assignment_expression "local_cc = local_15c" identifier = identifier) ;) (expression_statement "local_c8 = iVar33;" (assignment_expression "local_c8 = iVar33" identifier = identifier) ;) (expression_statement "local_c4 = uVar15;" (assignment_expression "local_c4 = uVar15" identifier = identifier) ;) (expression_statement "local_154 = (*pcVar16)(&local_b4,&local_d0);" (assignment_expression "local_154 = (*pcVar16)(&local_b4,&local_d0)" identifier = (call_expression "(*pcVar16)(&local_b4,&local_d0)" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "(&local_b4,&local_d0)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "&local_d0" & identifier) )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_b8);" (call_expression "(*(code *)PTR_free_000534fc)(local_b8)" (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_b8)" ( identifier ))) ;) (if_statement "if (local_154 != 0) break;" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }" if (parenthesized_expression "((*piVar18 != 0) || (*local_15c != 0))" ( (binary_expression "(*piVar18 != 0) || (*local_15c != 0)" (parenthesized_expression "(*piVar18 != 0)" ( (binary_expression "*piVar18 != 0" (pointer_expression "*piVar18" * identifier) != number_literal) )) || (parenthesized_expression "(*local_15c != 0)" ( (binary_expression "*local_15c != 0" (pointer_expression "*local_15c" * identifier) != number_literal) ))) )) (compound_statement "{\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }" { (expression_statement "local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);" (assignment_expression "local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160)" identifier = (call_expression "FUN_0002da20(piVar32,piVar18,local_15c,local_160)" identifier (argument_list "(piVar32,piVar18,local_15c,local_160)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_15c);" (call_expression "(*(code *)PTR_free_000534fc)(local_15c)" (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_15c)" ( identifier ))) ;) (if_statement "if (local_154 != 0) goto LAB_00035394;" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00035394;" goto statement_identifier ;)) (goto_statement "goto LAB_00035074;" goto statement_identifier ;) })) (expression_statement "piVar19 = local_50 + (local_160 - 1);" (assignment_expression "piVar19 = local_50 + (local_160 - 1)" identifier = (binary_expression "local_50 + (local_160 - 1)" identifier + (parenthesized_expression "(local_160 - 1)" ( (binary_expression "local_160 - 1" identifier - number_literal) )))) ;) (expression_statement "local_160 = uVar15;" (assignment_expression "local_160 = uVar15" identifier = identifier) ;) (while_statement "while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }" { (expression_statement "uVar15 = local_160 - 1;" (assignment_expression "uVar15 = local_160 - 1" identifier = (binary_expression "local_160 - 1" identifier - number_literal)) ;) (if_statement "if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }" if (parenthesized_expression "(uVar15 == 0xffffffff)" ( (binary_expression "uVar15 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }" { (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_15c);" (call_expression "(*(code *)PTR_free_000534fc)(local_15c)" (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_15c)" ( identifier ))) ;) (goto_statement "goto LAB_00034950;" goto statement_identifier ;) })) (expression_statement "iVar33 = piVar19[-1];" (assignment_expression "iVar33 = piVar19[-1]" identifier = (subscript_expression "piVar19[-1]" identifier [ number_literal ])) ;) (if_statement "if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;" if (parenthesized_expression "((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0))" ( (binary_expression "(iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)" (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 8) != 0)" ( (binary_expression "(*(byte *)(iVar33 + 0x34) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 8)" ( (binary_expression "*(byte *)(iVar33 + 0x34) & 8" (pointer_expression "*(byte *)(iVar33 + 0x34)" * (cast_expression "(byte *)(iVar33 + 0x34)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 0x34)" ( (binary_expression "iVar33 + 0x34" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar19 = piVar19 + -1;" (assignment_expression "piVar19 = piVar19 + -1" identifier = (binary_expression "piVar19 + -1" identifier + number_literal)) ;) (expression_statement "local_160 = uVar15;" (assignment_expression "local_160 = uVar15" identifier = identifier) ;) })) (expression_statement "iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);" (assignment_expression "iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15)" identifier = (call_expression "(*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15)" (parenthesized_expression "(*(code *)(puVar7 + -0x1be4))" ( (pointer_expression "*(code *)(puVar7 + -0x1be4)" * (cast_expression "(code *)(puVar7 + -0x1be4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x1be4)" ( (binary_expression "puVar7 + -0x1be4" identifier + number_literal) )))) )) (argument_list "(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15)" ( (pointer_expression "&local_b4" & identifier) , (pointer_expression "*(undefined4 *)(iVar33 + 8)" * (cast_expression "(undefined4 *)(iVar33 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 8)" ( (binary_expression "iVar33 + 8" identifier + number_literal) )))) , (binary_expression "iVar33 + 0xc" identifier + number_literal) , identifier )))) ;) })) }))) (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_000534fc)(local_15c);" (call_expression "(*(code *)PTR_free_000534fc)(local_15c)" (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_15c)" ( identifier ))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_154 == 1) goto LAB_00034950;" if (parenthesized_expression "(local_154 == 1)" ( (binary_expression "local_154 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00034950;" goto statement_identifier ;)) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) }))) }))) (labeled_statement "LAB_00034e5c:\n          piVar18 = local_50;" statement_identifier : (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;)) (expression_statement "local_154 = uVar12;" (assignment_expression "local_154 = uVar12" identifier = identifier) ;) (if_statement "if (param_7 == 0) goto LAB_0003423c;" if (parenthesized_expression "(param_7 == 0)" ( (binary_expression "param_7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "bVar1 = *(byte *)(param_1 + 7);" (assignment_expression "bVar1 = *(byte *)(param_1 + 7)" identifier = (pointer_expression "*(byte *)(param_1 + 7)" * (cast_expression "(byte *)(param_1 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) ))))) ;) (if_statement "if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }" { (expression_statement "puVar25 = param_8 + 2;" (assignment_expression "puVar25 = param_8 + 2" identifier = (binary_expression "param_8 + 2" identifier + number_literal)) ;) (do_statement "do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);" do (compound_statement "{\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            }" { (expression_statement "puVar25[1] = 0xffffffff;" (assignment_expression "puVar25[1] = 0xffffffff" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar24 = puVar25 + 2;" (assignment_expression "puVar24 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) (expression_statement "*puVar25 = 0xffffffff;" (assignment_expression "*puVar25 = 0xffffffff" (pointer_expression "*puVar25" * identifier) = number_literal) ;) (expression_statement "puVar25 = puVar24;" (assignment_expression "puVar25 = puVar24" identifier = identifier) ;) }) while (parenthesized_expression "(param_8 + param_7 * 2 != puVar24)" ( (binary_expression "param_8 + param_7 * 2 != puVar24" (binary_expression "param_8 + param_7 * 2" identifier + (binary_expression "param_7 * 2" identifier * number_literal)) != identifier) )) ;) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (expression_statement "param_8[1] = local_58;" (assignment_expression "param_8[1] = local_58" (subscript_expression "param_8[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }" if (parenthesized_expression "((bVar1 & 8) == 0)" ( (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" ( (binary_expression "bVar1 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }" { (if_statement "if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }" if (parenthesized_expression "(*(char *)(piVar37 + 0x16) < '\0')" ( (binary_expression "*(char *)(piVar37 + 0x16) < '\0'" (pointer_expression "*(char *)(piVar37 + 0x16)" * (cast_expression "(char *)(piVar37 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar37 + 0x16)" ( (binary_expression "piVar37 + 0x16" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                bVar27 = 0 < piVar37[0x13];\n              }" { (expression_statement "bVar27 = 0 < piVar37[0x13];" (assignment_expression "bVar27 = 0 < piVar37[0x13]" identifier = (binary_expression "0 < piVar37[0x13]" number_literal < (subscript_expression "piVar37[0x13]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n                bVar27 = false;\n              }" else (compound_statement "{\n                bVar27 = false;\n              }" { (expression_statement "bVar27 = false;" (assignment_expression "bVar27 = false" identifier = false) ;) }))) (expression_statement "local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);" (assignment_expression "local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27)" identifier = (call_expression "FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27)" identifier (argument_list "(param_1,&local_b4,param_7,param_8,bVar27)" ( identifier , (pointer_expression "&local_b4" & identifier) , identifier , identifier , identifier )))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_154 != 0) goto LAB_0003423c;" if (parenthesized_expression "(local_154 != 0)" ( (binary_expression "local_154 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "uVar9 = *param_8;" (assignment_expression "uVar9 = *param_8" identifier = (pointer_expression "*param_8" * identifier)) ;) }) (else_clause "else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }" else (compound_statement "{\nLAB_00034eb4:\n              uVar9 = 0;\n            }" { (labeled_statement "LAB_00034eb4:\n              uVar9 = 0;" statement_identifier : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;)) }))) (expression_statement "uVar30 = 0;" (assignment_expression "uVar30 = 0" identifier = number_literal) ;) (expression_statement "puVar25 = param_8;" (assignment_expression "puVar25 = param_8" identifier = identifier) ;) (while_statement "while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }" { (if_statement "if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }" if (parenthesized_expression "(uVar9 != 0xffffffff)" ( (binary_expression "uVar9 != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }" { (expression_statement "uVar31 = puVar25[1];" (assignment_expression "uVar31 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;) (expression_statement "uVar35 = uVar31;" (assignment_expression "uVar35 = uVar31" identifier = identifier) ;) (if_statement "if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }" if (parenthesized_expression "(local_68 != '\0')" ( (binary_expression "local_68 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }" { (expression_statement "uVar15 = local_94;" (assignment_expression "uVar15 = local_94" identifier = identifier) ;) (if_statement "if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }" if (parenthesized_expression "(local_98 != uVar9)" ( (binary_expression "local_98 != uVar9" identifier != identifier) )) (compound_statement "{\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }" { (expression_statement "uVar15 = *(uint *)(local_a8 + uVar9 * 4);" (assignment_expression "uVar15 = *(uint *)(local_a8 + uVar9 * 4)" identifier = (pointer_expression "*(uint *)(local_a8 + uVar9 * 4)" * (cast_expression "(uint *)(local_a8 + uVar9 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a8 + uVar9 * 4)" ( (binary_expression "local_a8 + uVar9 * 4" identifier + (binary_expression "uVar9 * 4" identifier * number_literal)) ))))) ;) })) (expression_statement "*puVar25 = uVar15;" (assignment_expression "*puVar25 = uVar15" (pointer_expression "*puVar25" * identifier) = identifier) ;) (expression_statement "uVar35 = local_94;" (assignment_expression "uVar35 = local_94" identifier = identifier) ;) (if_statement "if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }" if (parenthesized_expression "(local_98 != uVar31)" ( (binary_expression "local_98 != uVar31" identifier != identifier) )) (compound_statement "{\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }" { (expression_statement "uVar35 = *(uint *)(local_a8 + uVar31 * 4);" (assignment_expression "uVar35 = *(uint *)(local_a8 + uVar31 * 4)" identifier = (pointer_expression "*(uint *)(local_a8 + uVar31 * 4)" * (cast_expression "(uint *)(local_a8 + uVar31 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_a8 + uVar31 * 4)" ( (binary_expression "local_a8 + uVar31 * 4" identifier + (binary_expression "uVar31 * 4" identifier * number_literal)) ))))) ;) })) })) (expression_statement "*puVar25 = (int)local_dc + uVar15;" (assignment_expression "*puVar25 = (int)local_dc + uVar15" (pointer_expression "*puVar25" * identifier) = (binary_expression "(int)local_dc + uVar15" (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "puVar25[1] = (int)local_dc + uVar35;" (assignment_expression "puVar25[1] = (int)local_dc + uVar35" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "(int)local_dc + uVar35" (cast_expression "(int)local_dc" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) })) (expression_statement "uVar30 = uVar30 + 1;" (assignment_expression "uVar30 = uVar30 + 1" identifier = (binary_expression "uVar30 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 2;" (assignment_expression "puVar25 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) (if_statement "if (uVar30 == param_7) break;" if (parenthesized_expression "(uVar30 == param_7)" ( (binary_expression "uVar30 == param_7" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = *puVar25;" (assignment_expression "uVar9 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) })) (if_statement "if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }" if (parenthesized_expression "(0 < local_f0)" ( (binary_expression "0 < local_f0" number_literal < identifier) )) (compound_statement "{\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }" { (expression_statement "puVar25 = param_8 + param_7 * 2;" (assignment_expression "puVar25 = param_8 + param_7 * 2" identifier = (binary_expression "param_8 + param_7 * 2" identifier + (binary_expression "param_7 * 2" identifier * number_literal))) ;) (do_statement "do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);" do (compound_statement "{\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              }" { (expression_statement "*puVar25 = 0xffffffff;" (assignment_expression "*puVar25 = 0xffffffff" (pointer_expression "*puVar25" * identifier) = number_literal) ;) (expression_statement "puVar24 = puVar25 + 2;" (assignment_expression "puVar24 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) (expression_statement "puVar25[1] = 0xffffffff;" (assignment_expression "puVar25[1] = 0xffffffff" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar25 = puVar24;" (assignment_expression "puVar25 = puVar24" identifier = identifier) ;) }) while (parenthesized_expression "(param_8 + (local_f0 + param_7) * 2 != puVar24)" ( (binary_expression "param_8 + (local_f0 + param_7) * 2 != puVar24" (binary_expression "param_8 + (local_f0 + param_7) * 2" identifier + (binary_expression "(local_f0 + param_7) * 2" (parenthesized_expression "(local_f0 + param_7)" ( (binary_expression "local_f0 + param_7" identifier + identifier) )) * number_literal)) != identifier) )) ;) })) (expression_statement "piVar14 = (int *)piVar37[0x21];" (assignment_expression "piVar14 = (int *)piVar37[0x21]" identifier = (cast_expression "(int *)piVar37[0x21]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar37[0x21]" identifier [ number_literal ]))) ;) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (expression_statement "local_154 = uVar12;" (assignment_expression "local_154 = uVar12" identifier = identifier) ;) (if_statement "if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\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              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }" { (expression_statement "puVar25 = param_8;" (assignment_expression "puVar25 = param_8" identifier = identifier) ;) (for_statement "for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }" for ( (assignment_expression "iVar10 = 0" identifier = number_literal) ; (binary_expression "iVar10 != param_7 - 1" identifier != (binary_expression "param_7 - 1" identifier - number_literal)) ; (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ) (compound_statement "{\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }" { (if_statement "if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }" if (parenthesized_expression "(*piVar14 != iVar10)" ( (binary_expression "*piVar14 != iVar10" (pointer_expression "*piVar14" * identifier) != identifier) )) (compound_statement "{\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }" { (expression_statement "puVar25[2] = param_8[(*piVar14 + 1) * 2];" (assignment_expression "puVar25[2] = param_8[(*piVar14 + 1) * 2]" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (subscript_expression "param_8[(*piVar14 + 1) * 2]" identifier [ (binary_expression "(*piVar14 + 1) * 2" (parenthesized_expression "(*piVar14 + 1)" ( (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" * identifier) + number_literal) )) * number_literal) ])) ;) (expression_statement "puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];" (assignment_expression "puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1]" (subscript_expression "puVar25[3]" identifier [ number_literal ]) = (subscript_expression "param_8[(*piVar14 + 1) * 2 + 1]" identifier [ (binary_expression "(*piVar14 + 1) * 2 + 1" (binary_expression "(*piVar14 + 1) * 2" (parenthesized_expression "(*piVar14 + 1)" ( (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" * identifier) + number_literal) )) * number_literal) + number_literal) ])) ;) })) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) (expression_statement "puVar25 = puVar25 + 2;" (assignment_expression "puVar25 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) })) })) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) })) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" * identifier) = number_literal) ;) (expression_statement "param_8[1] = local_58;" (assignment_expression "param_8[1] = local_58" (subscript_expression "param_8[1]" identifier [ number_literal ]) = identifier) ;) (goto_statement "goto LAB_00034eb4;" goto statement_identifier ;) })) (labeled_statement "LAB_00034950:\n        FUN_0002b440(&local_b4);" statement_identifier : (expression_statement "FUN_0002b440(&local_b4);" (call_expression "FUN_0002b440(&local_b4)" identifier (argument_list "(&local_b4)" ( (pointer_expression "&local_b4" & identifier) ))) ;)) (expression_statement "param_4 = local_dc;" (assignment_expression "param_4 = local_dc" identifier = identifier) ;) })) (expression_statement "param_4 = (uint *)((int)param_4 + iVar10);" (assignment_expression "param_4 = (uint *)((int)param_4 + iVar10)" identifier = (cast_expression "(uint *)((int)param_4 + iVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + iVar10)" ( (binary_expression "(int)param_4 + iVar10" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_dc = param_4;" (assignment_expression "local_dc = param_4" identifier = identifier) ;) (if_statement "if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;" if (parenthesized_expression "(((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4))" ( (binary_expression "((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)" (parenthesized_expression "((int)param_4 < (int)puVar25)" ( (binary_expression "(int)param_4 < (int)puVar25" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) || (parenthesized_expression "(iVar33 = local_9c, (int)param_5 < (int)param_4)" ( (comma_expression "iVar33 = local_9c, (int)param_5 < (int)param_4" (assignment_expression "iVar33 = local_9c" identifier = identifier) , (binary_expression "(int)param_5 < (int)param_4" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_000345e4:\n  local_154 = 1;" statement_identifier : (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;)) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;) (labeled_statement "code_r0x000350f8:\n  local_154 = local_d8;" statement_identifier : (expression_statement "local_154 = local_d8;" (assignment_expression "local_154 = local_d8" identifier = identifier) ;)) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" identifier = identifier) ;) (if_statement "if (local_d8 == 0xc) goto LAB_0003423c;" if (parenthesized_expression "(local_d8 == 0xc)" ( (binary_expression "local_d8 == 0xc" identifier == number_literal) )) (goto_statement "goto LAB_0003423c;" goto statement_identifier ;)) (expression_statement "uVar23 = 0x431;" (assignment_expression "uVar23 = 0x431" identifier = number_literal) ;) (labeled_statement "LAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );" statement_identifier : (expression_statement "(*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );" (call_expression "(*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            )" (parenthesized_expression "(*(code *)PTR___assert_fail_00053378)" ( (pointer_expression "*(code *)PTR___assert_fail_00053378" * (cast_expression "(code *)PTR___assert_fail_00053378" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            )" ( (binary_expression "PTR_UINT_00053118 + 0x2114" identifier + number_literal) , (binary_expression "PTR_UINT_00053118 + 0x2098" identifier + number_literal) , identifier , (binary_expression "PTR_UINT_00053118 + 0x2620" identifier + number_literal) ))) ;)) (expression_statement "uVar9 = extraout_v1;" (assignment_expression "uVar9 = extraout_v1" identifier = identifier) ;) (expression_statement "param_1 = &local_b4;" (assignment_expression "param_1 = &local_b4" identifier = (pointer_expression "&local_b4" & identifier)) ;) (labeled_statement "LAB_00035138:\n  uVar30 = 8;" statement_identifier : (expression_statement "uVar30 = 8;" (assignment_expression "uVar30 = 8" identifier = number_literal) ;)) (goto_statement "goto LAB_0003412c;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 *)) ) (pointer_expression * IDENT))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })))) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - (parenthesized_expression ( (binary_expression IDENT - LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) == LIT) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (break_statement break ;))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) ))) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression LIT < (subscript_expression IDENT [ LIT ])))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) ))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (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 (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (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 ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) ;)) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression LIT < (binary_expression (subscript_expression IDENT [ LIT ]) << LIT))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT != LIT) | IDENT) | IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (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 & 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 * (abstract_pointer_declarator *))) ) LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * 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) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * IDENT)) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) || (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 = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT - LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) , (binary_expression IDENT == LIT))) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) << LIT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) })))) (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) ;) (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 = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) || (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) < LIT) )) (compound_statement { (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 LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , IDENT , (pointer_expression & IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + LIT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + LIT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (pointer_expression & IDENT) , 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 (subscript_expression IDENT [ IDENT ]) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;)) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT - LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ))))) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , IDENT )))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression IDENT && (parenthesized_expression ( (unary_expression ! IDENT) ))) )) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + IDENT) )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = 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 IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) + LIT) )))) , (binary_expression (subscript_expression IDENT [ IDENT ]) + LIT) , 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 IDENT + LIT) )))) < (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) + LIT) )))) , (binary_expression (subscript_expression IDENT [ IDENT ]) + LIT) , IDENT )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 ( (binary_expression IDENT * LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & 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 IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_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 ))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) }) (else_clause else (compound_statement { (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 ( (binary_expression IDENT * LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression IDENT * LIT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , (pointer_expression & 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 IDENT != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , 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 IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (break_statement break ;)) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) , IDENT )))) ;) })) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) != IDENT) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT < (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT != (binary_expression IDENT - LIT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )) * LIT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )) * LIT) + LIT) ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;)) (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) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ))) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + LIT) ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "uint FUN_00033d58(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint **ppuVar13;\n  int *piVar14;\n  uint uVar15;\n  code *pcVar16;\n  code *pcVar17;\n  int *piVar18;\n  int *piVar19;\n  char cVar26;\n  code *pcVar20;\n  code *pcVar21;\n  uint uVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  uint *puVar25;\n  bool bVar27;\n  uint extraout_v1;\n  code *pcVar28;\n  uint uVar29;\n  uint uVar30;\n  uint uVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  uint uVar35;\n  int iVar36;\n  int *piVar37;\n  int iVar38;\n  uint local_160;\n  int *local_15c;\n  uint local_154;\n  char *local_150;\n  uint **local_14c;\n  uint local_140;\n  int local_f0;\n  uint *local_dc;\n  uint local_d8;\n  uint local_d4;\n  int *local_d0;\n  int *local_cc;\n  int local_c8;\n  uint local_c4;\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  int local_b4;\n  int local_b0;\n  int *local_ac;\n  int local_a8;\n  int local_9c;\n  uint local_98;\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint local_7c;\n  undefined4 local_78;\n  int local_74;\n  int *local_70;\n  byte local_6c;\n  byte local_6b;\n  byte local_6a;\n  byte local_69;\n  char local_68;\n  byte local_67;\n  byte local_66;\n  int local_64;\n  int *local_60;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int *local_50;\n  int local_4c;\n  undefined4 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar37 = (int *)*param_1;\n  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);\n  local_150 = (char *)param_1[4];\n  if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }\n  uVar9 = param_1[6];\n  if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }\n  local_60 = piVar37;\n  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }\n  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }\n  if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }\n  local_64 = piVar37[0x17];\n  iVar33 = param_1[5];\n  iVar10 = piVar37[2] + 1;\n  if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }\n  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);\n  local_69 = 1;\n  if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }\n  iVar34 = param_3 + 1;\n  if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }\n  local_6c = local_6c >> 7;\n  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);\n  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);\n  local_b4 = param_2;\n  local_88 = param_3;\n  local_84 = param_3;\n  local_80 = param_3;\n  local_7c = param_3;\n  local_74 = iVar33;\n  local_154 = FUN_00029938(&local_b4,iVar34);\n  piVar18 = local_50;\n  if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }\n  local_70 = piVar37 + 0x18;\n  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);\n  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }\n  local_7c = param_6;\n  local_80 = param_6;\n  local_94 = local_98;\n  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);\n  iVar10 = piVar37[0x13];\n  iVar34 = iVar10 * 2;\n  local_5c = param_9;\n  local_58 = 0xffffffff;\n  if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }\n  local_44 = iVar34;\n  local_34 = iVar34;\n  bVar2 = 1 < param_7;\n  local_3c = 1;\n  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }\n  iVar34 = piVar37[0x17];\n  iVar10 = -1;\n  local_dc = param_4;\n  local_78 = 6;\n  if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }\n  uVar9 = (uint)((int)param_5 < (int)param_4);\n  puVar25 = param_5;\n  if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }\n  if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }\n  if (local_150 == (char *)0x0) goto LAB_00035138;\n  uVar12 = 4;\n  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }\n  uVar30 = 2;\n  if (uVar9 != 0) {\n    uVar30 = 0;\n  }\n  uVar30 = iVar33 != 0 | uVar12 | uVar30;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  local_154 = 1;\n  piVar18 = local_50;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  local_154 = local_d8;\n  piVar18 = local_50;\n  if (local_d8 == 0xc) goto LAB_0003423c;\n  uVar23 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );\n  uVar9 = extraout_v1;\n  param_1 = &local_b4;\nLAB_00035138:\n  uVar30 = 8;\n  goto LAB_0003412c;\n}" (type_identifier "uint") (function_declarator "FUN_00033d58(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)" (identifier "FUN_00033d58") (parameter_list "(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,\n                 uint param_7,uint *param_8,uint param_9)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint *param_4" (type_identifier "uint") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "uint *param_5" (type_identifier "uint") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "uint param_7" (type_identifier "uint") (identifier "param_7")) (, ",") (parameter_declaration "uint *param_8" (type_identifier "uint") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) (, ",") (parameter_declaration "uint param_9" (type_identifier "uint") (identifier "param_9")) () ")"))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  bool bVar5;\n  undefined *puVar6;\n  undefined *puVar7;\n  undefined *puVar8;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint **ppuVar13;\n  int *piVar14;\n  uint uVar15;\n  code *pcVar16;\n  code *pcVar17;\n  int *piVar18;\n  int *piVar19;\n  char cVar26;\n  code *pcVar20;\n  code *pcVar21;\n  uint uVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  uint *puVar25;\n  bool bVar27;\n  uint extraout_v1;\n  code *pcVar28;\n  uint uVar29;\n  uint uVar30;\n  uint uVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  uint uVar35;\n  int iVar36;\n  int *piVar37;\n  int iVar38;\n  uint local_160;\n  int *local_15c;\n  uint local_154;\n  char *local_150;\n  uint **local_14c;\n  uint local_140;\n  int local_f0;\n  uint *local_dc;\n  uint local_d8;\n  uint local_d4;\n  int *local_d0;\n  int *local_cc;\n  int local_c8;\n  uint local_c4;\n  undefined4 local_c0;\n  undefined4 local_bc;\n  undefined4 local_b8;\n  int local_b4;\n  int local_b0;\n  int *local_ac;\n  int local_a8;\n  int local_9c;\n  uint local_98;\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  uint local_84;\n  uint local_80;\n  uint local_7c;\n  undefined4 local_78;\n  int local_74;\n  int *local_70;\n  byte local_6c;\n  byte local_6b;\n  byte local_6a;\n  byte local_69;\n  char local_68;\n  byte local_67;\n  byte local_66;\n  int local_64;\n  int *local_60;\n  uint local_5c;\n  uint local_58;\n  int local_54;\n  int *local_50;\n  int local_4c;\n  undefined4 local_48;\n  int local_44;\n  int local_40;\n  int local_3c;\n  int local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar8 = PTR___stack_chk_guard_000534f0;\n  local_2c = *(int *)PTR___stack_chk_guard_000534f0;\n  piVar37 = (int *)*param_1;\n  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);\n  local_150 = (char *)param_1[4];\n  if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }\n  uVar9 = param_1[6];\n  if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }\n  local_60 = piVar37;\n  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }\n  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }\n  if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }\n  local_64 = piVar37[0x17];\n  iVar33 = param_1[5];\n  iVar10 = piVar37[2] + 1;\n  if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }\n  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);\n  local_69 = 1;\n  if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }\n  iVar34 = param_3 + 1;\n  if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }\n  local_6c = local_6c >> 7;\n  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);\n  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);\n  local_b4 = param_2;\n  local_88 = param_3;\n  local_84 = param_3;\n  local_80 = param_3;\n  local_7c = param_3;\n  local_74 = iVar33;\n  local_154 = FUN_00029938(&local_b4,iVar34);\n  piVar18 = local_50;\n  if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }\n  local_70 = piVar37 + 0x18;\n  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);\n  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }\n  local_7c = param_6;\n  local_80 = param_6;\n  local_94 = local_98;\n  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);\n  iVar10 = piVar37[0x13];\n  iVar34 = iVar10 * 2;\n  local_5c = param_9;\n  local_58 = 0xffffffff;\n  if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }\n  local_44 = iVar34;\n  local_34 = iVar34;\n  bVar2 = 1 < param_7;\n  local_3c = 1;\n  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }\n  iVar34 = piVar37[0x17];\n  iVar10 = -1;\n  local_dc = param_4;\n  local_78 = 6;\n  if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }\n  uVar9 = (uint)((int)param_5 < (int)param_4);\n  puVar25 = param_5;\n  if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }\n  if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }\n  if (local_150 == (char *)0x0) goto LAB_00035138;\n  uVar12 = 4;\n  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }\n  uVar30 = 2;\n  if (uVar9 != 0) {\n    uVar30 = 0;\n  }\n  uVar30 = iVar33 != 0 | uVar12 | uVar30;\nLAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;\n  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }\nLAB_000345e4:\n  local_154 = 1;\n  piVar18 = local_50;\n  goto LAB_0003423c;\ncode_r0x000350f8:\n  local_154 = local_d8;\n  piVar18 = local_50;\n  if (local_d8 == 0xc) goto LAB_0003423c;\n  uVar23 = 0x431;\nLAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );\n  uVar9 = extraout_v1;\n  param_1 = &local_b4;\nLAB_00035138:\n  uVar30 = 8;\n  goto LAB_0003412c;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint **ppuVar13;" (type_identifier "uint") (pointer_declarator "**ppuVar13" (* "*") (pointer_declarator "*ppuVar13" (* "*") (identifier "ppuVar13"))) (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "code *pcVar16;" (type_identifier "code") (pointer_declarator "*pcVar16" (* "*") (identifier "pcVar16")) (; ";")) (declaration "code *pcVar17;" (type_identifier "code") (pointer_declarator "*pcVar17" (* "*") (identifier "pcVar17")) (; ";")) (declaration "int *piVar18;" (primitive_type "int") (pointer_declarator "*piVar18" (* "*") (identifier "piVar18")) (; ";")) (declaration "int *piVar19;" (primitive_type "int") (pointer_declarator "*piVar19" (* "*") (identifier "piVar19")) (; ";")) (declaration "char cVar26;" (primitive_type "char") (identifier "cVar26") (; ";")) (declaration "code *pcVar20;" (type_identifier "code") (pointer_declarator "*pcVar20" (* "*") (identifier "pcVar20")) (; ";")) (declaration "code *pcVar21;" (type_identifier "code") (pointer_declarator "*pcVar21" (* "*") (identifier "pcVar21")) (; ";")) (declaration "uint uVar22;" (type_identifier "uint") (identifier "uVar22") (; ";")) (declaration "undefined4 uVar23;" (type_identifier "undefined4") (identifier "uVar23") (; ";")) (declaration "uint *puVar24;" (type_identifier "uint") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "uint *puVar25;" (type_identifier "uint") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "bool bVar27;" (primitive_type "bool") (identifier "bVar27") (; ";")) (declaration "uint extraout_v1;" (type_identifier "uint") (identifier "extraout_v1") (; ";")) (declaration "code *pcVar28;" (type_identifier "code") (pointer_declarator "*pcVar28" (* "*") (identifier "pcVar28")) (; ";")) (declaration "uint uVar29;" (type_identifier "uint") (identifier "uVar29") (; ";")) (declaration "uint uVar30;" (type_identifier "uint") (identifier "uVar30") (; ";")) (declaration "uint uVar31;" (type_identifier "uint") (identifier "uVar31") (; ";")) (declaration "int *piVar32;" (primitive_type "int") (pointer_declarator "*piVar32" (* "*") (identifier "piVar32")) (; ";")) (declaration "int iVar33;" (primitive_type "int") (identifier "iVar33") (; ";")) (declaration "int iVar34;" (primitive_type "int") (identifier "iVar34") (; ";")) (declaration "uint uVar35;" (type_identifier "uint") (identifier "uVar35") (; ";")) (declaration "int iVar36;" (primitive_type "int") (identifier "iVar36") (; ";")) (declaration "int *piVar37;" (primitive_type "int") (pointer_declarator "*piVar37" (* "*") (identifier "piVar37")) (; ";")) (declaration "int iVar38;" (primitive_type "int") (identifier "iVar38") (; ";")) (declaration "uint local_160;" (type_identifier "uint") (identifier "local_160") (; ";")) (declaration "int *local_15c;" (primitive_type "int") (pointer_declarator "*local_15c" (* "*") (identifier "local_15c")) (; ";")) (declaration "uint local_154;" (type_identifier "uint") (identifier "local_154") (; ";")) (declaration "char *local_150;" (primitive_type "char") (pointer_declarator "*local_150" (* "*") (identifier "local_150")) (; ";")) (declaration "uint **local_14c;" (type_identifier "uint") (pointer_declarator "**local_14c" (* "*") (pointer_declarator "*local_14c" (* "*") (identifier "local_14c"))) (; ";")) (declaration "uint local_140;" (type_identifier "uint") (identifier "local_140") (; ";")) (declaration "int local_f0;" (primitive_type "int") (identifier "local_f0") (; ";")) (declaration "uint *local_dc;" (type_identifier "uint") (pointer_declarator "*local_dc" (* "*") (identifier "local_dc")) (; ";")) (declaration "uint local_d8;" (type_identifier "uint") (identifier "local_d8") (; ";")) (declaration "uint local_d4;" (type_identifier "uint") (identifier "local_d4") (; ";")) (declaration "int *local_d0;" (primitive_type "int") (pointer_declarator "*local_d0" (* "*") (identifier "local_d0")) (; ";")) (declaration "int *local_cc;" (primitive_type "int") (pointer_declarator "*local_cc" (* "*") (identifier "local_cc")) (; ";")) (declaration "int local_c8;" (primitive_type "int") (identifier "local_c8") (; ";")) (declaration "uint local_c4;" (type_identifier "uint") (identifier "local_c4") (; ";")) (declaration "undefined4 local_c0;" (type_identifier "undefined4") (identifier "local_c0") (; ";")) (declaration "undefined4 local_bc;" (type_identifier "undefined4") (identifier "local_bc") (; ";")) (declaration "undefined4 local_b8;" (type_identifier "undefined4") (identifier "local_b8") (; ";")) (declaration "int local_b4;" (primitive_type "int") (identifier "local_b4") (; ";")) (declaration "int local_b0;" (primitive_type "int") (identifier "local_b0") (; ";")) (declaration "int *local_ac;" (primitive_type "int") (pointer_declarator "*local_ac" (* "*") (identifier "local_ac")) (; ";")) (declaration "int local_a8;" (primitive_type "int") (identifier "local_a8") (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "uint local_98;" (type_identifier "uint") (identifier "local_98") (; ";")) (declaration "uint local_94;" (type_identifier "uint") (identifier "local_94") (; ";")) (declaration "uint local_90;" (type_identifier "uint") (identifier "local_90") (; ";")) (declaration "uint local_8c;" (type_identifier "uint") (identifier "local_8c") (; ";")) (declaration "uint local_88;" (type_identifier "uint") (identifier "local_88") (; ";")) (declaration "uint local_84;" (type_identifier "uint") (identifier "local_84") (; ";")) (declaration "uint local_80;" (type_identifier "uint") (identifier "local_80") (; ";")) (declaration "uint local_7c;" (type_identifier "uint") (identifier "local_7c") (; ";")) (declaration "undefined4 local_78;" (type_identifier "undefined4") (identifier "local_78") (; ";")) (declaration "int local_74;" (primitive_type "int") (identifier "local_74") (; ";")) (declaration "int *local_70;" (primitive_type "int") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "byte local_6c;" (type_identifier "byte") (identifier "local_6c") (; ";")) (declaration "byte local_6b;" (type_identifier "byte") (identifier "local_6b") (; ";")) (declaration "byte local_6a;" (type_identifier "byte") (identifier "local_6a") (; ";")) (declaration "byte local_69;" (type_identifier "byte") (identifier "local_69") (; ";")) (declaration "char local_68;" (primitive_type "char") (identifier "local_68") (; ";")) (declaration "byte local_67;" (type_identifier "byte") (identifier "local_67") (; ";")) (declaration "byte local_66;" (type_identifier "byte") (identifier "local_66") (; ";")) (declaration "int local_64;" (primitive_type "int") (identifier "local_64") (; ";")) (declaration "int *local_60;" (primitive_type "int") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "uint local_58;" (type_identifier "uint") (identifier "local_58") (; ";")) (declaration "int local_54;" (primitive_type "int") (identifier "local_54") (; ";")) (declaration "int *local_50;" (primitive_type "int") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar8 = PTR___stack_chk_guard_000534f0;" (assignment_expression "puVar8 = PTR___stack_chk_guard_000534f0" (identifier "puVar8") (= "=") (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 "piVar37 = (int *)*param_1;" (assignment_expression "piVar37 = (int *)*param_1" (identifier "piVar37") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "(*(code *)PTR_memset_00053430)(&local_b4,0,0x88);" (call_expression "(*(code *)PTR_memset_00053430)(&local_b4,0,0x88)" (parenthesized_expression "(*(code *)PTR_memset_00053430)" (( "(") (pointer_expression "*(code *)PTR_memset_00053430" (* "*") (cast_expression "(code *)PTR_memset_00053430" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memset_00053430"))) () ")")) (argument_list "(&local_b4,0,0x88)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (number_literal "0") (, ",") (number_literal "0x88") () ")"))) (; ";")) (expression_statement "local_150 = (char *)param_1[4];" (assignment_expression "local_150 = (char *)param_1[4]" (identifier "local_150") (= "=") (cast_expression "(char *)param_1[4]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if (local_150 != (char *)0x0) {\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }" (if "if") (parenthesized_expression "(local_150 != (char *)0x0)" (( "(") (binary_expression "local_150 != (char *)0x0" (identifier "local_150") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }\n  }" ({ "{") (if_statement "if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {\n      local_150 = (char *)0x0;\n    }\n    else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }" (if "if") (parenthesized_expression "(((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5))" (( "(") (binary_expression "((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)" (parenthesized_expression "((*(byte *)(param_1 + 7) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 7) & 0x10) == 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 0x10)" (( "(") (binary_expression "*(byte *)(param_1 + 7) & 0x10" (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_4 == param_5)" (( "(") (binary_expression "param_4 == param_5" (identifier "param_4") (== "==") (identifier "param_5")) () ")"))) () ")")) (compound_statement "{\n      local_150 = (char *)0x0;\n    }" ({ "{") (expression_statement "local_150 = (char *)0x0;" (assignment_expression "local_150 = (char *)0x0" (identifier "local_150") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }" (else "else") (if_statement "if ((char)*(byte *)(param_1 + 7) < '\0') {\n      local_150 = (char *)0x0;\n    }" (if "if") (parenthesized_expression "((char)*(byte *)(param_1 + 7) < '\0')" (( "(") (binary_expression "(char)*(byte *)(param_1 + 7) < '\0'" (cast_expression "(char)*(byte *)(param_1 + 7)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")"))))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      local_150 = (char *)0x0;\n    }" ({ "{") (expression_statement "local_150 = (char *)0x0;" (assignment_expression "local_150 = (char *)0x0" (identifier "local_150") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))))) (} "}"))) (expression_statement "uVar9 = param_1[6];" (assignment_expression "uVar9 = param_1[6]" (identifier "uVar9") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if (uVar9 < param_7) {\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }\n  else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }" (if "if") (parenthesized_expression "(uVar9 < param_7)" (( "(") (binary_expression "uVar9 < param_7" (identifier "uVar9") (< "<") (identifier "param_7")) () ")")) (compound_statement "{\n    local_f0 = (param_7 - 1) - uVar9;\n    param_7 = param_7 + (uVar9 - (param_7 - 1));\n    iVar10 = param_1[2];\n  }" ({ "{") (expression_statement "local_f0 = (param_7 - 1) - uVar9;" (assignment_expression "local_f0 = (param_7 - 1) - uVar9" (identifier "local_f0") (= "=") (binary_expression "(param_7 - 1) - uVar9" (parenthesized_expression "(param_7 - 1)" (( "(") (binary_expression "param_7 - 1" (identifier "param_7") (- "-") (number_literal "1")) () ")")) (- "-") (identifier "uVar9"))) (; ";")) (expression_statement "param_7 = param_7 + (uVar9 - (param_7 - 1));" (assignment_expression "param_7 = param_7 + (uVar9 - (param_7 - 1))" (identifier "param_7") (= "=") (binary_expression "param_7 + (uVar9 - (param_7 - 1))" (identifier "param_7") (+ "+") (parenthesized_expression "(uVar9 - (param_7 - 1))" (( "(") (binary_expression "uVar9 - (param_7 - 1)" (identifier "uVar9") (- "-") (parenthesized_expression "(param_7 - 1)" (( "(") (binary_expression "param_7 - 1" (identifier "param_7") (- "-") (number_literal "1")) () ")"))) () ")")))) (; ";")) (expression_statement "iVar10 = param_1[2];" (assignment_expression "iVar10 = param_1[2]" (identifier "iVar10") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }" (else "else") (compound_statement "{\n    iVar10 = param_1[2];\n    local_f0 = 0;\n  }" ({ "{") (expression_statement "iVar10 = param_1[2];" (assignment_expression "iVar10 = param_1[2]" (identifier "iVar10") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_f0 = 0;" (assignment_expression "local_f0 = 0" (identifier "local_f0") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "local_60 = piVar37;" (assignment_expression "local_60 = piVar37" (identifier "local_60") (= "=") (identifier "piVar37")) (; ";")) (if_statement "if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }" (if "if") (parenthesized_expression "((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0))))" (( "(") (binary_expression "(((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||\n     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))" (parenthesized_expression "(((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0))" (( "(") (binary_expression "((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)" (parenthesized_expression "((iVar10 == 0) || (piVar37[9] == 0))" (( "(") (binary_expression "(iVar10 == 0) || (piVar37[9] == 0)" (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(piVar37[9] == 0)" (( "(") (binary_expression "piVar37[9] == 0" (subscript_expression "piVar37[9]" (identifier "piVar37") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(piVar37[10] == 0)" (( "(") (binary_expression "piVar37[10] == 0" (subscript_expression "piVar37[10]" (identifier "piVar37") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))" (( "(") (parenthesized_expression "(piVar37[0xb] == 0 || (piVar37[0xc] == 0))" (( "(") (binary_expression "piVar37[0xb] == 0 || (piVar37[0xc] == 0)" (binary_expression "piVar37[0xb] == 0" (subscript_expression "piVar37[0xb]" (identifier "piVar37") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(piVar37[0xc] == 0)" (( "(") (binary_expression "piVar37[0xc] == 0" (subscript_expression "piVar37[0xc]" (identifier "piVar37") ([ "[") (number_literal "0xc") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\nLAB_000341d0:\n    local_154 = 1;\n    goto LAB_000341d4;\n  }" ({ "{") (labeled_statement "LAB_000341d0:\n    local_154 = 1;" (statement_identifier "LAB_000341d0") (: ":") (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" (identifier "local_154") (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_000341d4;" (goto "goto") (statement_identifier "LAB_000341d4") (; ";")) (} "}"))) (if_statement "if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }" (if "if") (parenthesized_expression "(((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0))))" (( "(") (binary_expression "((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&\n     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))" (parenthesized_expression "((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0))" (( "(") (binary_expression "(*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)" (parenthesized_expression "(*(int *)(piVar37[9] + 8) == 0)" (( "(") (binary_expression "*(int *)(piVar37[9] + 8) == 0" (pointer_expression "*(int *)(piVar37[9] + 8)" (* "*") (cast_expression "(int *)(piVar37[9] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar37[9] + 8)" (( "(") (binary_expression "piVar37[9] + 8" (subscript_expression "piVar37[9]" (identifier "piVar37") ([ "[") (number_literal "9") (] "]")) (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(piVar37[10] + 8) == 0)" (( "(") (binary_expression "*(int *)(piVar37[10] + 8) == 0" (pointer_expression "*(int *)(piVar37[10] + 8)" (* "*") (cast_expression "(int *)(piVar37[10] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar37[10] + 8)" (( "(") (binary_expression "piVar37[10] + 8" (subscript_expression "piVar37[10]" (identifier "piVar37") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))" (( "(") (parenthesized_expression "(*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0))" (( "(") (binary_expression "*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)" (binary_expression "*(int *)(piVar37[0xb] + 8) == 0" (pointer_expression "*(int *)(piVar37[0xb] + 8)" (* "*") (cast_expression "(int *)(piVar37[0xb] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar37[0xb] + 8)" (( "(") (binary_expression "piVar37[0xb] + 8" (subscript_expression "piVar37[0xb]" (identifier "piVar37") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((*(byte *)(param_1 + 7) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 7) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 7) & 1" (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }\n  }" ({ "{") (if_statement "if (param_4 == (uint *)0x0) {\n      param_5 = (uint *)0x0;\n    }\n    else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }" (if "if") (parenthesized_expression "(param_4 == (uint *)0x0)" (( "(") (binary_expression "param_4 == (uint *)0x0" (identifier "param_4") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      param_5 = (uint *)0x0;\n    }" ({ "{") (expression_statement "param_5 = (uint *)0x0;" (assignment_expression "param_5 = (uint *)0x0" (identifier "param_5") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }" (else "else") (compound_statement "{\n      if (param_5 != (uint *)0x0) goto LAB_000341d0;\n      param_4 = (uint *)0x0;\n    }" ({ "{") (if_statement "if (param_5 != (uint *)0x0) goto LAB_000341d0;" (if "if") (parenthesized_expression "(param_5 != (uint *)0x0)" (( "(") (binary_expression "param_5 != (uint *)0x0" (identifier "param_5") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000341d0;" (goto "goto") (statement_identifier "LAB_000341d0") (; ";"))) (expression_statement "param_4 = (uint *)0x0;" (assignment_expression "param_4 = (uint *)0x0" (identifier "param_4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (param_7 == 0) {\n    bVar27 = piVar37[0x13] != 0;\n  }\n  else {\n    bVar27 = true;\n  }" (if "if") (parenthesized_expression "(param_7 == 0)" (( "(") (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar27 = piVar37[0x13] != 0;\n  }" ({ "{") (expression_statement "bVar27 = piVar37[0x13] != 0;" (assignment_expression "bVar27 = piVar37[0x13] != 0" (identifier "bVar27") (= "=") (binary_expression "piVar37[0x13] != 0" (subscript_expression "piVar37[0x13]" (identifier "piVar37") ([ "[") (number_literal "0x13") (] "]")) (!= "!=") (number_literal "0"))) (; ";")) (} "}")) (else_clause "else {\n    bVar27 = true;\n  }" (else "else") (compound_statement "{\n    bVar27 = true;\n  }" ({ "{") (expression_statement "bVar27 = true;" (assignment_expression "bVar27 = true" (identifier "bVar27") (= "=") (true "true")) (; ";")) (} "}")))) (expression_statement "local_64 = piVar37[0x17];" (assignment_expression "local_64 = piVar37[0x17]" (identifier "local_64") (= "=") (subscript_expression "piVar37[0x17]" (identifier "piVar37") ([ "[") (number_literal "0x17") (] "]"))) (; ";")) (expression_statement "iVar33 = param_1[5];" (assignment_expression "iVar33 = param_1[5]" (identifier "iVar33") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "iVar10 = piVar37[2] + 1;" (assignment_expression "iVar10 = piVar37[2] + 1" (identifier "iVar10") (= "=") (binary_expression "piVar37[2] + 1" (subscript_expression "piVar37[2]" (identifier "piVar37") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar37[2] + 1 < local_64) {\n    iVar10 = local_64;\n  }" (if "if") (parenthesized_expression "(piVar37[2] + 1 < local_64)" (( "(") (binary_expression "piVar37[2] + 1 < local_64" (binary_expression "piVar37[2] + 1" (subscript_expression "piVar37[2]" (identifier "piVar37") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1")) (< "<") (identifier "local_64")) () ")")) (compound_statement "{\n    iVar10 = local_64;\n  }" ({ "{") (expression_statement "iVar10 = local_64;" (assignment_expression "iVar10 = local_64" (identifier "iVar10") (= "=") (identifier "local_64")) (; ";")) (} "}"))) (expression_statement "local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);" (assignment_expression "local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18)" (identifier "local_6c") (= "=") (call_expression "(byte)((uint)(param_1[3] << 9) >> 0x18)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)(param_1[3] << 9) >> 0x18)" (( "(") (binary_expression "(uint)(param_1[3] << 9) >> 0x18" (call_expression "(uint)(param_1[3] << 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[3] << 9)" (( "(") (binary_expression "param_1[3] << 9" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (<< "<<") (number_literal "9")) () ")"))) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_69 = 1;" (assignment_expression "local_69 = 1" (identifier "local_69") (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar33 == 0) {\n    local_69 = local_6c >> 7;\n  }" (if "if") (parenthesized_expression "(iVar33 == 0)" (( "(") (binary_expression "iVar33 == 0" (identifier "iVar33") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_69 = local_6c >> 7;\n  }" ({ "{") (expression_statement "local_69 = local_6c >> 7;" (assignment_expression "local_69 = local_6c >> 7" (identifier "local_69") (= "=") (binary_expression "local_6c >> 7" (identifier "local_6c") (>> ">>") (number_literal "7"))) (; ";")) (} "}"))) (expression_statement "iVar34 = param_3 + 1;" (assignment_expression "iVar34 = param_3 + 1" (identifier "iVar34") (= "=") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar10 <= (int)(param_3 + 1)) {\n    iVar34 = iVar10;\n  }" (if "if") (parenthesized_expression "(iVar10 <= (int)(param_3 + 1))" (( "(") (binary_expression "iVar10 <= (int)(param_3 + 1)" (identifier "iVar10") (<= "<=") (cast_expression "(int)(param_3 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_3 + 1)" (( "(") (binary_expression "param_3 + 1" (identifier "param_3") (+ "+") (number_literal "1")) () ")")))) () ")")) (compound_statement "{\n    iVar34 = iVar10;\n  }" ({ "{") (expression_statement "iVar34 = iVar10;" (assignment_expression "iVar34 = iVar10" (identifier "iVar34") (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (expression_statement "local_6c = local_6c >> 7;" (assignment_expression "local_6c = local_6c >> 7" (identifier "local_6c") (= "=") (binary_expression "local_6c >> 7" (identifier "local_6c") (>> ">>") (number_literal "7"))) (; ";")) (expression_statement "local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);" (assignment_expression "local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f)" (identifier "local_6b") (= "=") (call_expression "(byte)((uint)(piVar37[0x16] << 2) >> 0x1f)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)(piVar37[0x16] << 2) >> 0x1f)" (( "(") (binary_expression "(uint)(piVar37[0x16] << 2) >> 0x1f" (call_expression "(uint)(piVar37[0x16] << 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar37[0x16] << 2)" (( "(") (binary_expression "piVar37[0x16] << 2" (subscript_expression "piVar37[0x16]" (identifier "piVar37") ([ "[") (number_literal "0x16") (] "]")) (<< "<<") (number_literal "2")) () ")"))) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);" (assignment_expression "local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f)" (identifier "local_6a") (= "=") (call_expression "(byte)((uint)(piVar37[0x16] << 3) >> 0x1f)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)(piVar37[0x16] << 3) >> 0x1f)" (( "(") (binary_expression "(uint)(piVar37[0x16] << 3) >> 0x1f" (call_expression "(uint)(piVar37[0x16] << 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar37[0x16] << 3)" (( "(") (binary_expression "piVar37[0x16] << 3" (subscript_expression "piVar37[0x16]" (identifier "piVar37") ([ "[") (number_literal "0x16") (] "]")) (<< "<<") (number_literal "3")) () ")"))) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "local_b4 = param_2;" (assignment_expression "local_b4 = param_2" (identifier "local_b4") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_88 = param_3;" (assignment_expression "local_88 = param_3" (identifier "local_88") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_84 = param_3;" (assignment_expression "local_84 = param_3" (identifier "local_84") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_80 = param_3;" (assignment_expression "local_80 = param_3" (identifier "local_80") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_7c = param_3;" (assignment_expression "local_7c = param_3" (identifier "local_7c") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_74 = iVar33;" (assignment_expression "local_74 = iVar33" (identifier "local_74") (= "=") (identifier "iVar33")) (; ";")) (expression_statement "local_154 = FUN_00029938(&local_b4,iVar34);" (assignment_expression "local_154 = FUN_00029938(&local_b4,iVar34)" (identifier "local_154") (= "=") (call_expression "FUN_00029938(&local_b4,iVar34)" (identifier "FUN_00029938") (argument_list "(&local_b4,iVar34)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (identifier "iVar34") () ")")))) (; ";")) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_154 != 0) {\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }" (if "if") (parenthesized_expression "(local_154 != 0)" (( "(") (binary_expression "local_154 != 0" (identifier "local_154") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }\n    return local_154;\n  }" ({ "{") (labeled_statement "LAB_0003423c:\n    while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }" (statement_identifier "LAB_0003423c") (: ":") (while_statement "while( true ) {\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      (*(code *)PTR_free_000534fc)(piVar18);\n      if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }\nLAB_00034250:\n      FUN_0002b3d0(&local_b4);\nLAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;\n      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();\n      piVar18 = local_50;\n    }" ({ "{") (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" (( "(") (identifier "piVar18") () ")"))) (; ";")) (if_statement "if (piVar37[0x13] != 0) {\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }" (if "if") (parenthesized_expression "(piVar37[0x13] != 0)" (( "(") (binary_expression "piVar37[0x13] != 0" (subscript_expression "piVar37[0x13]" (identifier "piVar37") ([ "[") (number_literal "0x13") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00034290:\n        FUN_0002b440(&local_b4);\n        (*(code *)PTR_free_000534fc)(local_30);\n        (*(code *)PTR_free_000534fc)(local_40);\n      }" ({ "{") (labeled_statement "LAB_00034290:\n        FUN_0002b440(&local_b4);" (statement_identifier "LAB_00034290") (: ":") (expression_statement "FUN_0002b440(&local_b4);" (call_expression "FUN_0002b440(&local_b4)" (identifier "FUN_0002b440") (argument_list "(&local_b4)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) () ")"))) (; ";"))) (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 "(*(code *)PTR_free_000534fc)(local_40);" (call_expression "(*(code *)PTR_free_000534fc)(local_40)" (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_40)" (( "(") (identifier "local_40") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_00034250:\n      FUN_0002b3d0(&local_b4);" (statement_identifier "LAB_00034250") (: ":") (expression_statement "FUN_0002b3d0(&local_b4);" (call_expression "FUN_0002b3d0(&local_b4)" (identifier "FUN_0002b3d0") (argument_list "(&local_b4)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) () ")"))) (; ";"))) (labeled_statement "LAB_000341d4:\n      if (local_2c == *(int *)puVar8) break;" (statement_identifier "LAB_000341d4") (: ":") (if_statement "if (local_2c == *(int *)puVar8) break;" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar8)" (( "(") (binary_expression "local_2c == *(int *)puVar8" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar8" (* "*") (cast_expression "(int *)puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar8")))) () ")")) (break_statement "break;" (break "break") (; ";")))) (expression_statement "local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();" (assignment_expression "local_154 = (*(code *)PTR___stack_chk_fail_000534d4)()" (identifier "local_154") (= "=") (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 "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (} "}")))) (return_statement "return local_154;" (return "return") (identifier "local_154") (; ";")) (} "}"))) (expression_statement "local_70 = piVar37 + 0x18;" (assignment_expression "local_70 = piVar37 + 0x18" (identifier "local_70") (= "=") (binary_expression "piVar37 + 0x18" (identifier "piVar37") (+ "+") (number_literal "0x18"))) (; ";")) (expression_statement "local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);" (assignment_expression "local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f)" (identifier "local_66") (= "=") (call_expression "(byte)((uint)(piVar37[0x16] << 4) >> 0x1f)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)(piVar37[0x16] << 4) >> 0x1f)" (( "(") (binary_expression "(uint)(piVar37[0x16] << 4) >> 0x1f" (call_expression "(uint)(piVar37[0x16] << 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(piVar37[0x16] << 4)" (( "(") (binary_expression "piVar37[0x16] << 4" (subscript_expression "piVar37[0x16]" (identifier "piVar37") ([ "[") (number_literal "0x16") (] "]")) (<< "<<") (number_literal "4")) () ")"))) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {\n    local_98 = 0;\n  }" (if "if") (parenthesized_expression "((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17]))" (( "(") (binary_expression "(local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])" (parenthesized_expression "(local_69 != 0)" (( "(") (binary_expression "local_69 != 0" (identifier "local_69") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])" (( "(") (comma_expression "local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17]" (assignment_expression "local_b0 = param_2" (identifier "local_b0") (= "=") (identifier "param_2")) (, ",") (comma_expression "local_98 = param_3, 1 < piVar37[0x17]" (assignment_expression "local_98 = param_3" (identifier "local_98") (= "=") (identifier "param_3")) (, ",") (binary_expression "1 < piVar37[0x17]" (number_literal "1") (< "<") (subscript_expression "piVar37[0x17]" (identifier "piVar37") ([ "[") (number_literal "0x17") (] "]"))))) () ")"))) () ")")) (compound_statement "{\n    local_98 = 0;\n  }" ({ "{") (expression_statement "local_98 = 0;" (assignment_expression "local_98 = 0" (identifier "local_98") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_7c = param_6;" (assignment_expression "local_7c = param_6" (identifier "local_7c") (= "=") (identifier "param_6")) (; ";")) (expression_statement "local_80 = param_6;" (assignment_expression "local_80 = param_6" (identifier "local_80") (= "=") (identifier "param_6")) (; ";")) (expression_statement "local_94 = local_98;" (assignment_expression "local_94 = local_98" (identifier "local_94") (= "=") (identifier "local_98")) (; ";")) (expression_statement "local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);" (assignment_expression "local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f)" (identifier "local_67") (= "=") (call_expression "(byte)((uint)(param_1[7] << 7) >> 0x1f)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uint)(param_1[7] << 7) >> 0x1f)" (( "(") (binary_expression "(uint)(param_1[7] << 7) >> 0x1f" (call_expression "(uint)(param_1[7] << 7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[7] << 7)" (( "(") (binary_expression "param_1[7] << 7" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (<< "<<") (number_literal "7")) () ")"))) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar10 = piVar37[0x13];" (assignment_expression "iVar10 = piVar37[0x13]" (identifier "iVar10") (= "=") (subscript_expression "piVar37[0x13]" (identifier "piVar37") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "iVar34 = iVar10 * 2;" (assignment_expression "iVar34 = iVar10 * 2" (identifier "iVar34") (= "=") (binary_expression "iVar10 * 2" (identifier "iVar10") (* "*") (number_literal "2"))) (; ";")) (expression_statement "local_5c = param_9;" (assignment_expression "local_5c = param_9" (identifier "local_5c") (= "=") (identifier "param_9")) (; ";")) (expression_statement "local_58 = 0xffffffff;" (assignment_expression "local_58 = 0xffffffff" (identifier "local_58") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (0 < iVar34) {\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }" (if "if") (parenthesized_expression "(0 < iVar34)" (( "(") (binary_expression "0 < iVar34" (number_literal "0") (< "<") (identifier "iVar34")) () ")")) (compound_statement "{\n    if (0xccccccc < iVar34) goto LAB_00034274;\n    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);\n    local_40 = iVar11;\n    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);\n    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;\n  }" ({ "{") (if_statement "if (0xccccccc < iVar34) goto LAB_00034274;" (if "if") (parenthesized_expression "(0xccccccc < iVar34)" (( "(") (binary_expression "0xccccccc < iVar34" (number_literal "0xccccccc") (< "<") (identifier "iVar34")) () ")")) (goto_statement "goto LAB_00034274;" (goto "goto") (statement_identifier "LAB_00034274") (; ";"))) (expression_statement "iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);" (assignment_expression "iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28)" (identifier "iVar11") (= "=") (call_expression "(*(code *)PTR_malloc_00053474)(iVar10 * 0x28)" (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 "(iVar10 * 0x28)" (( "(") (binary_expression "iVar10 * 0x28" (identifier "iVar10") (* "*") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "local_40 = iVar11;" (assignment_expression "local_40 = iVar11" (identifier "local_40") (= "=") (identifier "iVar11")) (; ";")) (expression_statement "local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);" (assignment_expression "local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8)" (identifier "local_30") (= "=") (call_expression "(*(code *)PTR_malloc_00053474)(iVar10 * 8)" (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 "(iVar10 * 8)" (( "(") (binary_expression "iVar10 * 8" (identifier "iVar10") (* "*") (number_literal "8")) () ")")))) (; ";")) (if_statement "if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;" (if "if") (parenthesized_expression "((iVar11 == 0) || (local_30 == 0))" (( "(") (binary_expression "(iVar11 == 0) || (local_30 == 0)" (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_30 == 0)" (( "(") (binary_expression "local_30 == 0" (identifier "local_30") (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00034274;" (goto "goto") (statement_identifier "LAB_00034274") (; ";"))) (} "}"))) (expression_statement "local_44 = iVar34;" (assignment_expression "local_44 = iVar34" (identifier "local_44") (= "=") (identifier "iVar34")) (; ";")) (expression_statement "local_34 = iVar34;" (assignment_expression "local_34 = iVar34" (identifier "local_34") (= "=") (identifier "iVar34")) (; ";")) (expression_statement "bVar2 = 1 < param_7;" (assignment_expression "bVar2 = 1 < param_7" (identifier "bVar2") (= "=") (binary_expression "1 < param_7" (number_literal "1") (< "<") (identifier "param_7"))) (; ";")) (expression_statement "local_3c = 1;" (assignment_expression "local_3c = 1" (identifier "local_3c") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }\n  else {\n    local_50 = (int *)0x0;\n  }" (if "if") (parenthesized_expression "((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0))" (( "(") (binary_expression "(bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)" (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (|| "||") (parenthesized_expression "((*(byte *)(piVar37 + 0x16) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(piVar37 + 0x16) & 0x40) != 0" (parenthesized_expression "(*(byte *)(piVar37 + 0x16) & 0x40)" (( "(") (binary_expression "*(byte *)(piVar37 + 0x16) & 0x40" (pointer_expression "*(byte *)(piVar37 + 0x16)" (* "*") (cast_expression "(byte *)(piVar37 + 0x16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar37 + 0x16)" (( "(") (binary_expression "piVar37 + 0x16" (identifier "piVar37") (+ "+") (number_literal "0x16")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }\n    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);\n    piVar18 = local_50;\n    if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }\n  }" ({ "{") (if_statement "if (0x3ffffffe < local_90) {\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }" (if "if") (parenthesized_expression "(0x3ffffffe < local_90)" (( "(") (binary_expression "0x3ffffffe < local_90" (number_literal "0x3ffffffe") (< "<") (identifier "local_90")) () ")")) (compound_statement "{\nLAB_00034274:\n      local_154 = 0xc;\n      (*(code *)PTR_free_000534fc)(local_50);\n      if (piVar37[0x13] == 0) goto LAB_00034250;\n      goto LAB_00034290;\n    }" ({ "{") (labeled_statement "LAB_00034274:\n      local_154 = 0xc;" (statement_identifier "LAB_00034274") (: ":") (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" (identifier "local_154") (= "=") (number_literal "0xc")) (; ";"))) (expression_statement "(*(code *)PTR_free_000534fc)(local_50);" (call_expression "(*(code *)PTR_free_000534fc)(local_50)" (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_50)" (( "(") (identifier "local_50") () ")"))) (; ";")) (if_statement "if (piVar37[0x13] == 0) goto LAB_00034250;" (if "if") (parenthesized_expression "(piVar37[0x13] == 0)" (( "(") (binary_expression "piVar37[0x13] == 0" (subscript_expression "piVar37[0x13]" (identifier "piVar37") ([ "[") (number_literal "0x13") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00034250;" (goto "goto") (statement_identifier "LAB_00034250") (; ";"))) (goto_statement "goto LAB_00034290;" (goto "goto") (statement_identifier "LAB_00034290") (; ";")) (} "}"))) (expression_statement "local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);" (assignment_expression "local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4)" (identifier "local_50") (= "=") (cast_expression "(int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_malloc_00053474)((local_90 + 1) * 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 "((local_90 + 1) * 4)" (( "(") (binary_expression "(local_90 + 1) * 4" (parenthesized_expression "(local_90 + 1)" (( "(") (binary_expression "local_90 + 1" (identifier "local_90") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_50 == (int *)0x0) {\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }" (if "if") (parenthesized_expression "(local_50 == (int *)0x0)" (( "(") (binary_expression "local_50 == (int *)0x0" (identifier "local_50") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00034230:\n      local_154 = 0xc;\n      goto LAB_0003423c;\n    }" ({ "{") (labeled_statement "LAB_00034230:\n      local_154 = 0xc;" (statement_identifier "LAB_00034230") (: ":") (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" (identifier "local_154") (= "=") (number_literal "0xc")) (; ";"))) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    local_50 = (int *)0x0;\n  }" (else "else") (compound_statement "{\n    local_50 = (int *)0x0;\n  }" ({ "{") (expression_statement "local_50 = (int *)0x0;" (assignment_expression "local_50 = (int *)0x0" (identifier "local_50") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (expression_statement "iVar34 = piVar37[0x17];" (assignment_expression "iVar34 = piVar37[0x17]" (identifier "iVar34") (= "=") (subscript_expression "piVar37[0x17]" (identifier "piVar37") ([ "[") (number_literal "0x17") (] "]"))) (; ";")) (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" (identifier "iVar10") (= "=") (number_literal "-1")) (; ";")) (expression_statement "local_dc = param_4;" (assignment_expression "local_dc = param_4" (identifier "local_dc") (= "=") (identifier "param_4")) (; ";")) (expression_statement "local_78 = 6;" (assignment_expression "local_78 = 6" (identifier "local_78") (= "=") (number_literal "6")) (; ";")) (if_statement "if ((param_9 & 1) != 0) {\n    local_78 = 4;\n  }" (if "if") (parenthesized_expression "((param_9 & 1) != 0)" (( "(") (binary_expression "(param_9 & 1) != 0" (parenthesized_expression "(param_9 & 1)" (( "(") (binary_expression "param_9 & 1" (identifier "param_9") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_78 = 4;\n  }" ({ "{") (expression_statement "local_78 = 4;" (assignment_expression "local_78 = 4" (identifier "local_78") (= "=") (number_literal "4")) (; ";")) (} "}"))) (expression_statement "uVar9 = (uint)((int)param_5 < (int)param_4);" (assignment_expression "uVar9 = (uint)((int)param_5 < (int)param_4)" (identifier "uVar9") (= "=") (call_expression "(uint)((int)param_5 < (int)param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)param_5 < (int)param_4)" (( "(") (binary_expression "(int)param_5 < (int)param_4" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")")))) (; ";")) (expression_statement "puVar25 = param_5;" (assignment_expression "puVar25 = param_5" (identifier "puVar25") (= "=") (identifier "param_5")) (; ";")) (if_statement "if (uVar9 == 0) {\n    iVar10 = 1;\n    puVar25 = param_4;\n  }" (if "if") (parenthesized_expression "(uVar9 == 0)" (( "(") (binary_expression "uVar9 == 0" (identifier "uVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar10 = 1;\n    puVar25 = param_4;\n  }" ({ "{") (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" (identifier "iVar10") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar25 = param_4;" (assignment_expression "puVar25 = param_4" (identifier "puVar25") (= "=") (identifier "param_4")) (; ";")) (} "}"))) (if_statement "if ((int)param_5 <= (int)param_4) {\n    param_5 = param_4;\n  }" (if "if") (parenthesized_expression "((int)param_5 <= (int)param_4)" (( "(") (binary_expression "(int)param_5 <= (int)param_4" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (<= "<=") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")")) (compound_statement "{\n    param_5 = param_4;\n  }" ({ "{") (expression_statement "param_5 = param_4;" (assignment_expression "param_5 = param_4" (identifier "param_5") (= "=") (identifier "param_4")) (; ";")) (} "}"))) (if_statement "if (local_150 == (char *)0x0) goto LAB_00035138;" (if "if") (parenthesized_expression "(local_150 == (char *)0x0)" (( "(") (binary_expression "local_150 == (char *)0x0" (identifier "local_150") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00035138;" (goto "goto") (statement_identifier "LAB_00035138") (; ";"))) (expression_statement "uVar12 = 4;" (assignment_expression "uVar12 = 4" (identifier "uVar12") (= "=") (number_literal "4")) (; ";")) (if_statement "if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {\n    uVar12 = 0;\n  }" (if "if") (parenthesized_expression "(((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0))" (( "(") (binary_expression "((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)" (parenthesized_expression "((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9))" (( "(") (binary_expression "(iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)" (parenthesized_expression "(iVar34 != 1)" (( "(") (binary_expression "iVar34 != 1" (identifier "iVar34") (!= "!=") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(uVar12 = 0, -1 < param_1[3] << 9)" (( "(") (comma_expression "uVar12 = 0, -1 < param_1[3] << 9" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (, ",") (binary_expression "-1 < param_1[3] << 9" (number_literal "-1") (< "<") (binary_expression "param_1[3] << 9" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (<< "<<") (number_literal "9")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar12 = 4, iVar33 != 0)" (( "(") (comma_expression "uVar12 = 4, iVar33 != 0" (assignment_expression "uVar12 = 4" (identifier "uVar12") (= "=") (number_literal "4")) (, ",") (binary_expression "iVar33 != 0" (identifier "iVar33") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    uVar12 = 0;\n  }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar30 = 2;" (assignment_expression "uVar30 = 2" (identifier "uVar30") (= "=") (number_literal "2")) (; ";")) (if_statement "if (uVar9 != 0) {\n    uVar30 = 0;\n  }" (if "if") (parenthesized_expression "(uVar9 != 0)" (( "(") (binary_expression "uVar9 != 0" (identifier "uVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar30 = 0;\n  }" ({ "{") (expression_statement "uVar30 = 0;" (assignment_expression "uVar30 = 0" (identifier "uVar30") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar30 = iVar33 != 0 | uVar12 | uVar30;" (assignment_expression "uVar30 = iVar33 != 0 | uVar12 | uVar30" (identifier "uVar30") (= "=") (binary_expression "iVar33 != 0 | uVar12 | uVar30" (binary_expression "iVar33 != 0 | uVar12" (binary_expression "iVar33 != 0" (identifier "iVar33") (!= "!=") (number_literal "0")) (| "|") (identifier "uVar12")) (| "|") (identifier "uVar30"))) (; ";")) (labeled_statement "LAB_0003412c:\n  puVar6 = PTR_LAB_0005332c;" (statement_identifier "LAB_0003412c") (: ":") (expression_statement "puVar6 = PTR_LAB_0005332c;" (assignment_expression "puVar6 = PTR_LAB_0005332c" (identifier "puVar6") (= "=") (identifier "PTR_LAB_0005332c")) (; ";"))) (if_statement "if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }" (if "if") (parenthesized_expression "(((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5))" (( "(") (binary_expression "((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)" (parenthesized_expression "((int)puVar25 <= (int)param_4)" (( "(") (binary_expression "(int)puVar25 <= (int)param_4" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (<= "<=") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")")) (&& "&&") (parenthesized_expression "((int)param_4 <= (int)param_5)" (( "(") (binary_expression "(int)param_4 <= (int)param_5" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (<= "<=") (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5"))) () ")"))) () ")")) (compound_statement "{\n    ppuVar13 = &local_dc;\n    if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }\n    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);\n    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);\n    iVar33 = local_9c;\n    do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );\n  }" ({ "{") (expression_statement "ppuVar13 = &local_dc;" (assignment_expression "ppuVar13 = &local_dc" (identifier "ppuVar13") (= "=") (pointer_expression "&local_dc" (& "&") (identifier "local_dc"))) (; ";")) (if_statement "if (uVar9 != 0) {\n      ppuVar13 = (uint **)0x0;\n    }" (if "if") (parenthesized_expression "(uVar9 != 0)" (( "(") (binary_expression "uVar9 != 0" (identifier "uVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      ppuVar13 = (uint **)0x0;\n    }" ({ "{") (expression_statement "ppuVar13 = (uint **)0x0;" (assignment_expression "ppuVar13 = (uint **)0x0" (identifier "ppuVar13") (= "=") (cast_expression "(uint **)0x0" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);" (assignment_expression "piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4)" (identifier "piVar14") (= "=") (cast_expression "(int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4)" (( "(") (binary_expression "PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4" (binary_expression "PTR_UINT_00053118 + (uVar30 - 4) * 4" (identifier "PTR_UINT_00053118") (+ "+") (binary_expression "(uVar30 - 4) * 4" (parenthesized_expression "(uVar30 - 4)" (( "(") (binary_expression "uVar30 - 4" (identifier "uVar30") (- "-") (number_literal "4")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x21d4")) () ")")))) (; ";")) (expression_statement "pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);" (assignment_expression "pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80)" (identifier "pcVar28") (= "=") (cast_expression "(code *)(PTR_LAB_0005332c + -0xe80)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0005332c + -0xe80)" (( "(") (binary_expression "PTR_LAB_0005332c + -0xe80" (identifier "PTR_LAB_0005332c") (+ "+") (number_literal "-0xe80")) () ")")))) (; ";")) (expression_statement "iVar33 = local_9c;" (assignment_expression "iVar33 = local_9c" (identifier "iVar33") (= "=") (identifier "local_9c")) (; ";")) (do_statement "do {\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    } while( true );" (do "do") (compound_statement "{\n      if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }\n      local_9c = iVar33;\n      while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }\n      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);\n      piVar32 = local_60;\n      uVar9 = local_8c;\n      piVar18 = local_50;\n      local_154 = uVar12;\n      if (uVar12 != 0) goto LAB_0003423c;\n      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }\n      param_4 = (uint *)((int)param_4 + iVar10);\n      local_dc = param_4;\n      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;\n    }" ({ "{") (if_statement "if (uVar30 - 4 < 5) {\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }" (if "if") (parenthesized_expression "(uVar30 - 4 < 5)" (( "(") (binary_expression "uVar30 - 4 < 5" (binary_expression "uVar30 - 4" (identifier "uVar30") (- "-") (number_literal "4")) (< "<") (number_literal "5")) () ")")) (compound_statement "{\n                    \n                    \n        uVar9 = (*(code *)(&_gp_1 + *piVar14))();\n        return uVar9;\n      }" ({ "{") (expression_statement "uVar9 = (*(code *)(&_gp_1 + *piVar14))();" (assignment_expression "uVar9 = (*(code *)(&_gp_1 + *piVar14))()" (identifier "uVar9") (= "=") (call_expression "(*(code *)(&_gp_1 + *piVar14))()" (parenthesized_expression "(*(code *)(&_gp_1 + *piVar14))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *piVar14)" (* "*") (cast_expression "(code *)(&_gp_1 + *piVar14)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *piVar14)" (( "(") (binary_expression "&_gp_1 + *piVar14" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*piVar14" (* "*") (identifier "piVar14"))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar9;" (return "return") (identifier "uVar9") (; ";")) (} "}"))) (expression_statement "local_9c = iVar33;" (assignment_expression "local_9c = iVar33" (identifier "local_9c") (= "=") (identifier "iVar33")) (; ";")) (while_statement "while( true ) {\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        uVar9 = (int)param_4 - iVar33;\n        if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }\n        if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }\n        if (cVar26 != '\0') break;\n        param_4 = (uint *)((int)param_4 + iVar10);\n        local_dc = param_4;\n        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;\n      }" ({ "{") (expression_statement "uVar9 = (int)param_4 - iVar33;" (assignment_expression "uVar9 = (int)param_4 - iVar33" (identifier "uVar9") (= "=") (binary_expression "(int)param_4 - iVar33" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (- "-") (identifier "iVar33"))) (; ";")) (if_statement "if (local_94 <= uVar9) {\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }" (if "if") (parenthesized_expression "(local_94 <= uVar9)" (( "(") (binary_expression "local_94 <= uVar9" (identifier "local_94") (<= "<=") (identifier "uVar9")) () ")")) (compound_statement "{\n          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);\n          piVar18 = local_50;\n          if (local_154 != 0) goto LAB_0003423c;\n          uVar9 = (int)param_4 - local_9c;\n          iVar33 = local_9c;\n        }" ({ "{") (expression_statement "local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);" (assignment_expression "local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9)" (identifier "local_154") (= "=") (call_expression "(*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9)" (parenthesized_expression "(*(code *)(puVar6 + -0x1ac4))" (( "(") (pointer_expression "*(code *)(puVar6 + -0x1ac4)" (* "*") (cast_expression "(code *)(puVar6 + -0x1ac4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + -0x1ac4)" (( "(") (binary_expression "puVar6 + -0x1ac4" (identifier "puVar6") (+ "+") (number_literal "-0x1ac4")) () ")")))) () ")")) (argument_list "(&local_b4,param_4,param_9)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (identifier "param_4") (, ",") (identifier "param_9") () ")")))) (; ";")) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_154 != 0) goto LAB_0003423c;" (if "if") (parenthesized_expression "(local_154 != 0)" (( "(") (binary_expression "local_154 != 0" (identifier "local_154") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";"))) (expression_statement "uVar9 = (int)param_4 - local_9c;" (assignment_expression "uVar9 = (int)param_4 - local_9c" (identifier "uVar9") (= "=") (binary_expression "(int)param_4 - local_9c" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (- "-") (identifier "local_9c"))) (; ";")) (expression_statement "iVar33 = local_9c;" (assignment_expression "iVar33 = local_9c" (identifier "iVar33") (= "=") (identifier "local_9c")) (; ";")) (} "}"))) (if_statement "if ((int)param_4 < (int)param_3) {\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }\n        else {\n          cVar26 = *local_150;\n        }" (if "if") (parenthesized_expression "((int)param_4 < (int)param_3)" (( "(") (binary_expression "(int)param_4 < (int)param_3" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (< "<") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) () ")")) (compound_statement "{\n          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];\n        }" ({ "{") (expression_statement "cVar26 = local_150[*(byte *)(local_b0 + uVar9)];" (assignment_expression "cVar26 = local_150[*(byte *)(local_b0 + uVar9)]" (identifier "cVar26") (= "=") (subscript_expression "local_150[*(byte *)(local_b0 + uVar9)]" (identifier "local_150") ([ "[") (pointer_expression "*(byte *)(local_b0 + uVar9)" (* "*") (cast_expression "(byte *)(local_b0 + uVar9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + uVar9)" (( "(") (binary_expression "local_b0 + uVar9" (identifier "local_b0") (+ "+") (identifier "uVar9")) () ")")))) (] "]"))) (; ";")) (} "}")) (else_clause "else {\n          cVar26 = *local_150;\n        }" (else "else") (compound_statement "{\n          cVar26 = *local_150;\n        }" ({ "{") (expression_statement "cVar26 = *local_150;" (assignment_expression "cVar26 = *local_150" (identifier "cVar26") (= "=") (pointer_expression "*local_150" (* "*") (identifier "local_150"))) (; ";")) (} "}")))) (if_statement "if (cVar26 != '\0') break;" (if "if") (parenthesized_expression "(cVar26 != '\0')" (( "(") (binary_expression "cVar26 != '\0'" (identifier "cVar26") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_4 = (uint *)((int)param_4 + iVar10);" (assignment_expression "param_4 = (uint *)((int)param_4 + iVar10)" (identifier "param_4") (= "=") (cast_expression "(uint *)((int)param_4 + iVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + iVar10)" (( "(") (binary_expression "(int)param_4 + iVar10" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (expression_statement "local_dc = param_4;" (assignment_expression "local_dc = param_4" (identifier "local_dc") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;" (if "if") (parenthesized_expression "(((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4))" (( "(") (binary_expression "((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)" (parenthesized_expression "((int)param_4 < (int)puVar25)" (( "(") (binary_expression "(int)param_4 < (int)puVar25" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (< "<") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) () ")")) (|| "||") (parenthesized_expression "((int)param_5 < (int)param_4)" (( "(") (binary_expression "(int)param_5 < (int)param_4" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4"))) () ")"))) () ")")) (goto_statement "goto LAB_000345e4;" (goto "goto") (statement_identifier "LAB_000345e4") (; ";"))) (} "}"))) (expression_statement "uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);" (assignment_expression "uVar12 = FUN_0002e53c(&local_b4,param_4,param_9)" (identifier "uVar12") (= "=") (call_expression "FUN_0002e53c(&local_b4,param_4,param_9)" (identifier "FUN_0002e53c") (argument_list "(&local_b4,param_4,param_9)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (identifier "param_4") (, ",") (identifier "param_9") () ")")))) (; ";")) (expression_statement "piVar32 = local_60;" (assignment_expression "piVar32 = local_60" (identifier "piVar32") (= "=") (identifier "local_60")) (; ";")) (expression_statement "uVar9 = local_8c;" (assignment_expression "uVar9 = local_8c" (identifier "uVar9") (= "=") (identifier "local_8c")) (; ";")) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_154 = uVar12;" (assignment_expression "local_154 = uVar12" (identifier "local_154") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if (uVar12 != 0) goto LAB_0003423c;" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";"))) (if_statement "if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }" (if "if") (parenthesized_expression "(((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1))" (( "(") (binary_expression "((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)" (parenthesized_expression "((iVar34 == 1) || (local_98 == 0))" (( "(") (binary_expression "(iVar34 == 1) || (local_98 == 0)" (parenthesized_expression "(iVar34 == 1)" (( "(") (binary_expression "iVar34 == 1" (identifier "iVar34") (== "==") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(local_98 == 0)" (( "(") (binary_expression "local_98 == 0" (identifier "local_98") (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*local_ac != -1)" (( "(") (binary_expression "*local_ac != -1" (pointer_expression "*local_ac" (* "*") (identifier "local_ac")) (!= "!=") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n        local_3c = 0;\n        local_48 = 0;\n        iVar33 = local_60[9];\n        local_140 = local_8c;\n        local_4c = 0;\n        local_d8 = 0;\n        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }\nLAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;\n        if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }\nLAB_00034760:\n        piVar18 = local_50;\n        puVar7 = PTR_LAB_0005332c;\n        if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }\nLAB_00034950:\n        FUN_0002b440(&local_b4);\n        param_4 = local_dc;\n      }" ({ "{") (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar33 = local_60[9];" (assignment_expression "iVar33 = local_60[9]" (identifier "iVar33") (= "=") (subscript_expression "local_60[9]" (identifier "local_60") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "local_140 = local_8c;" (assignment_expression "local_140 = local_8c" (identifier "local_140") (= "=") (identifier "local_8c")) (; ";")) (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" (identifier "local_d8") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }" (if "if") (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(iVar33 + 0x34) & 1) != 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 1)" (( "(") (binary_expression "*(byte *)(iVar33 + 0x34) & 1" (pointer_expression "*(byte *)(iVar33 + 0x34)" (* "*") (cast_expression "(byte *)(iVar33 + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x34)" (( "(") (binary_expression "iVar33 + 0x34" (identifier "iVar33") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n          if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }\n          if (iVar33 == 0) goto code_r0x000350f8;\n        }" ({ "{") (expression_statement "uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);" (assignment_expression "uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c)" (identifier "uVar15") (= "=") (call_expression "FUN_0002e140(&local_b4,local_8c - 1,local_5c)" (identifier "FUN_0002e140") (argument_list "(&local_b4,local_8c - 1,local_5c)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (binary_expression "local_8c - 1" (identifier "local_8c") (- "-") (number_literal "1")) (, ",") (identifier "local_5c") () ")")))) (; ";")) (if_statement "if ((uVar15 & 1) == 0) {\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }\n          else {\n            iVar33 = piVar32[10];\n          }" (if "if") (parenthesized_expression "((uVar15 & 1) == 0)" (( "(") (binary_expression "(uVar15 & 1) == 0" (parenthesized_expression "(uVar15 & 1)" (( "(") (binary_expression "uVar15 & 1" (identifier "uVar15") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (uVar15 == 0) goto LAB_000343a0;\n            if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }\n          }" ({ "{") (if_statement "if (uVar15 == 0) goto LAB_000343a0;" (if "if") (parenthesized_expression "(uVar15 == 0)" (( "(") (binary_expression "uVar15 == 0" (identifier "uVar15") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000343a0;" (goto "goto") (statement_identifier "LAB_000343a0") (; ";"))) (if_statement "if ((uVar15 & 6) == 6) {\n              iVar33 = piVar32[0xc];\n            }\n            else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }" (if "if") (parenthesized_expression "((uVar15 & 6) == 6)" (( "(") (binary_expression "(uVar15 & 6) == 6" (parenthesized_expression "(uVar15 & 6)" (( "(") (binary_expression "uVar15 & 6" (identifier "uVar15") (& "&") (number_literal "6")) () ")")) (== "==") (number_literal "6")) () ")")) (compound_statement "{\n              iVar33 = piVar32[0xc];\n            }" ({ "{") (expression_statement "iVar33 = piVar32[0xc];" (assignment_expression "iVar33 = piVar32[0xc]" (identifier "iVar33") (= "=") (subscript_expression "piVar32[0xc]" (identifier "piVar32") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (} "}")) (else_clause "else if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }" (else "else") (if_statement "if ((uVar15 & 2) == 0) {\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }\n            else {\n              iVar33 = piVar32[0xb];\n            }" (if "if") (parenthesized_expression "((uVar15 & 2) == 0)" (( "(") (binary_expression "(uVar15 & 2) == 0" (parenthesized_expression "(uVar15 & 2)" (( "(") (binary_expression "uVar15 & 2" (identifier "uVar15") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if ((uVar15 & 4) == 0) goto LAB_000343a0;\n              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);\n            }" ({ "{") (if_statement "if ((uVar15 & 4) == 0) goto LAB_000343a0;" (if "if") (parenthesized_expression "((uVar15 & 4) == 0)" (( "(") (binary_expression "(uVar15 & 4) == 0" (parenthesized_expression "(uVar15 & 4)" (( "(") (binary_expression "uVar15 & 4" (identifier "uVar15") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000343a0;" (goto "goto") (statement_identifier "LAB_000343a0") (; ";"))) (expression_statement "iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);" (assignment_expression "iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15)" (identifier "iVar33") (= "=") (call_expression "FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15)" (identifier "FUN_0002d33c") (argument_list "(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15)" (( "(") (pointer_expression "&local_d8" (& "&") (identifier "local_d8")) (, ",") (identifier "piVar32") (, ",") (pointer_expression "*(undefined4 *)(iVar33 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar33 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x28)" (( "(") (binary_expression "iVar33 + 0x28" (identifier "iVar33") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (identifier "uVar15") () ")")))) (; ";")) (} "}")) (else_clause "else {\n              iVar33 = piVar32[0xb];\n            }" (else "else") (compound_statement "{\n              iVar33 = piVar32[0xb];\n            }" ({ "{") (expression_statement "iVar33 = piVar32[0xb];" (assignment_expression "iVar33 = piVar32[0xb]" (identifier "iVar33") (= "=") (subscript_expression "piVar32[0xb]" (identifier "piVar32") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}")))))) (} "}")) (else_clause "else {\n            iVar33 = piVar32[10];\n          }" (else "else") (compound_statement "{\n            iVar33 = piVar32[10];\n          }" ({ "{") (expression_statement "iVar33 = piVar32[10];" (assignment_expression "iVar33 = piVar32[10]" (identifier "iVar33") (= "=") (subscript_expression "piVar32[10]" (identifier "piVar32") ([ "[") (number_literal "10") (] "]"))) (; ";")) (} "}")))) (if_statement "if (iVar33 == 0) goto code_r0x000350f8;" (if "if") (parenthesized_expression "(iVar33 == 0)" (( "(") (binary_expression "iVar33 == 0" (identifier "iVar33") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x000350f8;" (goto "goto") (statement_identifier "code_r0x000350f8") (; ";"))) (} "}"))) (labeled_statement "LAB_000343a0:\n        bVar4 = ppuVar13 != (uint **)0x0;" (statement_identifier "LAB_000343a0") (: ":") (expression_statement "bVar4 = ppuVar13 != (uint **)0x0;" (assignment_expression "bVar4 = ppuVar13 != (uint **)0x0" (identifier "bVar4") (= "=") (binary_expression "ppuVar13 != (uint **)0x0" (identifier "ppuVar13") (!= "!=") (cast_expression "(uint **)0x0" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0")))) (; ";"))) (if_statement "if ((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }\n        else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" (if "if") (parenthesized_expression "((local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0))" (( "(") (binary_expression "(local_50 == (int *)0x0) ||\n           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)" (parenthesized_expression "(local_50 == (int *)0x0)" (( "(") (binary_expression "local_50 == (int *)0x0" (identifier "local_50") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)" (( "(") (comma_expression "iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0" (assignment_expression "iVar11 = piVar32[0x13]" (identifier "iVar11") (= "=") (subscript_expression "piVar32[0x13]" (identifier "piVar32") ([ "[") (number_literal "0x13") (] "]"))) (, ",") (comma_expression "local_50[uVar9] = iVar33, iVar11 == 0" (assignment_expression "local_50[uVar9] = iVar33" (subscript_expression "local_50[uVar9]" (identifier "local_50") ([ "[") (identifier "uVar9") (] "]")) (= "=") (identifier "iVar33")) (, ",") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\nLAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }\n          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);\n          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);\n          uVar15 = local_8c;\n          local_14c = ppuVar13;\n          while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }\nLAB_00034748:\n          uVar15 = uVar9;\n          if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }\n        }" ({ "{") (labeled_statement "LAB_000343c4:\n          if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" (statement_identifier "LAB_000343c4") (: ":") (if_statement "if (*(int *)(iVar33 + 0x34) << 4 < 0) {\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }\n          else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar33 + 0x34) << 4 < 0)" (( "(") (binary_expression "*(int *)(iVar33 + 0x34) << 4 < 0" (binary_expression "*(int *)(iVar33 + 0x34) << 4" (pointer_expression "*(int *)(iVar33 + 0x34)" (* "*") (cast_expression "(int *)(iVar33 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x34)" (( "(") (binary_expression "iVar33 + 0x34" (identifier "iVar33") (+ "+") (number_literal "0x34")) () ")")))) (<< "<<") (number_literal "4")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }\n          }" ({ "{") (if_statement "if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)) {\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }\n            else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }" (if "if") (parenthesized_expression "(((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0))" (( "(") (binary_expression "((*(byte *)(iVar33 + 0x34) & 1) == 0) ||\n               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)" (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(iVar33 + 0x34) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 1)" (( "(") (binary_expression "*(byte *)(iVar33 + 0x34) & 1" (pointer_expression "*(byte *)(iVar33 + 0x34)" (* "*") (cast_expression "(byte *)(iVar33 + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x34)" (( "(") (binary_expression "iVar33 + 0x34" (identifier "iVar33") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0)" (( "(") (comma_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),\n               iVar11 != 0" (assignment_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9)" (identifier "iVar11") (= "=") (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9)" (identifier "FUN_0002e41c") (argument_list "(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (pointer_expression "*(undefined4 *)(iVar33 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar33 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 8)" (( "(") (binary_expression "iVar33 + 8" (identifier "iVar33") (+ "+") (number_literal "8")) () ")")))) (, ",") (binary_expression "iVar33 + 0xc" (identifier "iVar33") (+ "+") (number_literal "0xc")) (, ",") (identifier "uVar9") () ")")))) (, ",") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n              uVar15 = uVar9;\n              bVar5 = bVar27;\n              if (!bVar27) goto LAB_00034760;\n            }" ({ "{") (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" (identifier "uVar15") (= "=") (identifier "uVar9")) (; ";")) (expression_statement "bVar5 = bVar27;" (assignment_expression "bVar5 = bVar27" (identifier "bVar5") (= "=") (identifier "bVar27")) (; ";")) (if_statement "if (!bVar27) goto LAB_00034760;" (if "if") (parenthesized_expression "(!bVar27)" (( "(") (unary_expression "!bVar27" (! "!") (identifier "bVar27")) () ")")) (goto_statement "goto LAB_00034760;" (goto "goto") (statement_identifier "LAB_00034760") (; ";"))) (} "}")) (else_clause "else {\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }" (else "else") (compound_statement "{\n              uVar9 = 0xffffffff;\n              bVar5 = false;\n            }" ({ "{") (expression_statement "uVar9 = 0xffffffff;" (assignment_expression "uVar9 = 0xffffffff" (identifier "uVar9") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" (else "else") (compound_statement "{\n            uVar9 = 0xffffffff;\n            bVar5 = false;\n          }" ({ "{") (expression_statement "uVar9 = 0xffffffff;" (assignment_expression "uVar9 = 0xffffffff" (identifier "uVar9") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" (identifier "bVar5") (= "=") (false "false")) (; ";")) (} "}"))))) (expression_statement "pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);" (assignment_expression "pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c)" (identifier "pcVar16") (= "=") (cast_expression "(code *)(PTR_LAB_0005332c + -0x576c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0005332c + -0x576c)" (( "(") (binary_expression "PTR_LAB_0005332c + -0x576c" (identifier "PTR_LAB_0005332c") (+ "+") (number_literal "-0x576c")) () ")")))) (; ";")) (expression_statement "pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);" (assignment_expression "pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0)" (identifier "pcVar17") (= "=") (cast_expression "(code *)(PTR_LAB_0005332c + 0x17e0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0005332c + 0x17e0)" (( "(") (binary_expression "PTR_LAB_0005332c + 0x17e0" (identifier "PTR_LAB_0005332c") (+ "+") (number_literal "0x17e0")) () ")")))) (; ";")) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" (identifier "uVar15") (= "=") (identifier "local_8c")) (; ";")) (expression_statement "local_14c = ppuVar13;" (assignment_expression "local_14c = ppuVar13" (identifier "local_14c") (= "=") (identifier "ppuVar13")) (; ";")) (while_statement "while ((int)uVar15 < (int)local_7c) {\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }" (while "while") (parenthesized_expression "((int)uVar15 < (int)local_7c)" (( "(") (binary_expression "(int)uVar15 < (int)local_7c" (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (< "<") (cast_expression "(int)local_7c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_7c"))) () ")")) (compound_statement "{\n            uVar35 = uVar15 + 1;\n            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }\n            local_60 = piVar18;\n            if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }\n            local_8c = uVar15 + 1;\n            uVar15 = (uint)*(byte *)(local_b0 + uVar15);\n            do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);\n            local_d8 = 0xc;\n            uVar15 = local_d8;\njoined_r0x00034dec:\n            local_d8 = uVar15;\n            if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }\n            iVar11 = 0;\nLAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);\nLAB_00034498:\n            uVar15 = local_8c;\n            if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }\n            uVar31 = local_140;\n            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }\n            local_140 = uVar31;\n            iVar33 = iVar11;\n            local_8c = uVar15;\n            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }\n          }" ({ "{") (expression_statement "uVar35 = uVar15 + 1;" (assignment_expression "uVar35 = uVar15 + 1" (identifier "uVar35") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }\n            else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }" (if "if") (parenthesized_expression "((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98))))" (( "(") (binary_expression "(((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&\n               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))" (parenthesized_expression "(((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90))" (( "(") (binary_expression "((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)" (parenthesized_expression "((int)uVar35 < (int)local_90)" (( "(") (binary_expression "(int)uVar35 < (int)local_90" (cast_expression "(int)uVar35" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar35")) (< "<") (cast_expression "(int)local_90" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_90"))) () ")")) (|| "||") (parenthesized_expression "((int)local_84 <= (int)local_90)" (( "(") (binary_expression "(int)local_84 <= (int)local_90" (cast_expression "(int)local_84" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_84")) (<= "<=") (cast_expression "(int)local_90" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_90"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))" (( "(") (parenthesized_expression "((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98))" (( "(") (binary_expression "(int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)" (binary_expression "(int)uVar35 < (int)local_98" (cast_expression "(int)uVar35" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar35")) (< "<") (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98"))) (|| "||") (parenthesized_expression "((int)local_84 <= (int)local_98)" (( "(") (binary_expression "(int)local_84 <= (int)local_98" (cast_expression "(int)local_84" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_84")) (<= "<=") (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              iVar11 = *(int *)(iVar33 + 0x34);\n              piVar18 = local_60;\n            }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar33 + 0x34);" (assignment_expression "iVar11 = *(int *)(iVar33 + 0x34)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar33 + 0x34)" (* "*") (cast_expression "(int *)(iVar33 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x34)" (( "(") (binary_expression "iVar33 + 0x34" (identifier "iVar33") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "piVar18 = local_60;" (assignment_expression "piVar18 = local_60" (identifier "piVar18") (= "=") (identifier "local_60")) (; ";")) (} "}")) (else_clause "else {\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }" (else "else") (compound_statement "{\n              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);\n              if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }\n              iVar11 = *(int *)(iVar33 + 0x34);\n              uVar15 = local_8c;\n              piVar18 = local_60;\n            }" ({ "{") (expression_statement "local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);" (assignment_expression "local_d8 = (*pcVar16)(&local_b4,uVar15 + 2)" (identifier "local_d8") (= "=") (call_expression "(*pcVar16)(&local_b4,uVar15 + 2)" (parenthesized_expression "(*pcVar16)" (( "(") (pointer_expression "*pcVar16" (* "*") (identifier "pcVar16")) () ")")) (argument_list "(&local_b4,uVar15 + 2)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (binary_expression "uVar15 + 2" (identifier "uVar15") (+ "+") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (local_d8 != 0) {\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }" (if "if") (parenthesized_expression "(local_d8 != 0)" (( "(") (binary_expression "local_d8 != 0" (identifier "local_d8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                if (local_d8 == 0xc) goto LAB_00034274;\n                uVar23 = 0x468;\n                goto LAB_00035118;\n              }" ({ "{") (if_statement "if (local_d8 == 0xc) goto LAB_00034274;" (if "if") (parenthesized_expression "(local_d8 == 0xc)" (( "(") (binary_expression "local_d8 == 0xc" (identifier "local_d8") (== "==") (number_literal "0xc")) () ")")) (goto_statement "goto LAB_00034274;" (goto "goto") (statement_identifier "LAB_00034274") (; ";"))) (expression_statement "uVar23 = 0x468;" (assignment_expression "uVar23 = 0x468" (identifier "uVar23") (= "=") (number_literal "0x468")) (; ";")) (goto_statement "goto LAB_00035118;" (goto "goto") (statement_identifier "LAB_00035118") (; ";")) (} "}"))) (expression_statement "iVar11 = *(int *)(iVar33 + 0x34);" (assignment_expression "iVar11 = *(int *)(iVar33 + 0x34)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar33 + 0x34)" (* "*") (cast_expression "(int *)(iVar33 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x34)" (( "(") (binary_expression "iVar33 + 0x34" (identifier "iVar33") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" (identifier "uVar15") (= "=") (identifier "local_8c")) (; ";")) (expression_statement "piVar18 = local_60;" (assignment_expression "piVar18 = local_60" (identifier "piVar18") (= "=") (identifier "local_60")) (; ";")) (} "}")))) (expression_statement "local_60 = piVar18;" (assignment_expression "local_60 = piVar18" (identifier "local_60") (= "=") (identifier "piVar18")) (; ";")) (if_statement "if (iVar11 << 5 < 0) {\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }" (if "if") (parenthesized_expression "(iVar11 << 5 < 0)" (( "(") (binary_expression "iVar11 << 5 < 0" (binary_expression "iVar11 << 5" (identifier "iVar11") (<< "<<") (number_literal "5")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              iVar11 = *(int *)(iVar33 + 8);\n              if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }\n              local_d8 = 0;\n            }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar33 + 8);" (assignment_expression "iVar11 = *(int *)(iVar33 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar33 + 8)" (* "*") (cast_expression "(int *)(iVar33 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 8)" (( "(") (binary_expression "iVar33 + 8" (identifier "iVar33") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (0 < iVar11) {\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }" (if "if") (parenthesized_expression "(0 < iVar11)" (( "(") (binary_expression "0 < iVar11" (number_literal "0") (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\n                param_4 = (uint *)0x0;\n                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);\n                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);\n                do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);\n              }" ({ "{") (expression_statement "param_4 = (uint *)0x0;" (assignment_expression "param_4 = (uint *)0x0" (identifier "param_4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);" (assignment_expression "pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0)" (identifier "pcVar20") (= "=") (cast_expression "(code *)(PTR_LAB_0005332c + -0x55a0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0005332c + -0x55a0)" (( "(") (binary_expression "PTR_LAB_0005332c + -0x55a0" (identifier "PTR_LAB_0005332c") (+ "+") (number_literal "-0x55a0")) () ")")))) (; ";")) (expression_statement "pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);" (assignment_expression "pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0)" (identifier "pcVar21") (= "=") (cast_expression "(code *)(PTR_LAB_0005332c + -0x1ec0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0005332c + -0x1ec0)" (( "(") (binary_expression "PTR_LAB_0005332c + -0x1ec0" (identifier "PTR_LAB_0005332c") (+ "+") (number_literal "-0x1ec0")) () ")")))) (; ";")) (do_statement "do {\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                } while ((int)param_4 < iVar11);" (do "do") (compound_statement "{\n                  iVar36 = *piVar18;\n                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);\n                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);\n                  if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }\nLAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);\n                }" ({ "{") (expression_statement "iVar36 = *piVar18;" (assignment_expression "iVar36 = *piVar18" (identifier "iVar36") (= "=") (pointer_expression "*piVar18" (* "*") (identifier "piVar18"))) (; ";")) (expression_statement "iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);" (assignment_expression "iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" (identifier "iVar38") (= "=") (pointer_expression "*(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar33 + 0xc) + (int)param_4 * 4)" (( "(") (binary_expression "*(int *)(iVar33 + 0xc) + (int)param_4 * 4" (pointer_expression "*(int *)(iVar33 + 0xc)" (* "*") (cast_expression "(int *)(iVar33 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0xc)" (( "(") (binary_expression "iVar33 + 0xc" (identifier "iVar33") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (binary_expression "(int)param_4 * 4" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);" (assignment_expression "uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4)" (identifier "uVar31") (= "=") (pointer_expression "*(uint *)(iVar36 + iVar38 * 8 + 4)" (* "*") (cast_expression "(uint *)(iVar36 + iVar38 * 8 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar36 + iVar38 * 8 + 4)" (( "(") (binary_expression "iVar36 + iVar38 * 8 + 4" (binary_expression "iVar36 + iVar38 * 8" (identifier "iVar36") (+ "+") (binary_expression "iVar38 * 8" (identifier "iVar38") (* "*") (number_literal "8"))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((uVar31 & 0x800) != 0) {\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }" (if "if") (parenthesized_expression "((uVar31 & 0x800) != 0)" (( "(") (binary_expression "(uVar31 & 0x800) != 0" (parenthesized_expression "(uVar31 & 0x800)" (( "(") (binary_expression "uVar31 & 0x800" (identifier "uVar31") (& "&") (number_literal "0x800")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }\n                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);\n                    if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }\n                    iVar11 = *(int *)(iVar33 + 8);\n                    uVar15 = local_8c;\n                  }" ({ "{") (if_statement "if ((uVar31 & 0xffc000) != 0) {\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }" (if "if") (parenthesized_expression "((uVar31 & 0xffc000) != 0)" (( "(") (binary_expression "(uVar31 & 0xffc000) != 0" (parenthesized_expression "(uVar31 & 0xffc000)" (( "(") (binary_expression "uVar31 & 0xffc000" (identifier "uVar31") (& "&") (number_literal "0xffc000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);\n                      uVar31 = (uVar31 << 8) >> 0x16;\n                      if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }\n                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;\n                    }" ({ "{") (expression_statement "uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);" (assignment_expression "uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c)" (identifier "uVar22") (= "=") (call_expression "(*pcVar21)(&local_b4,uVar15,local_5c)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(&local_b4,uVar15,local_5c)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (identifier "uVar15") (, ",") (identifier "local_5c") () ")")))) (; ";")) (expression_statement "uVar31 = (uVar31 << 8) >> 0x16;" (assignment_expression "uVar31 = (uVar31 << 8) >> 0x16" (identifier "uVar31") (= "=") (binary_expression "(uVar31 << 8) >> 0x16" (parenthesized_expression "(uVar31 << 8)" (( "(") (binary_expression "uVar31 << 8" (identifier "uVar31") (<< "<<") (number_literal "8")) () ")")) (>> ">>") (number_literal "0x16"))) (; ";")) (if_statement "if ((uVar31 & 4) == 0) {\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }\n                      else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }" (if "if") (parenthesized_expression "((uVar31 & 4) == 0)" (( "(") (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" (( "(") (binary_expression "uVar31 & 4" (identifier "uVar31") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        uVar29 = uVar22 & 1;\n                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;\n                      }" ({ "{") (expression_statement "uVar29 = uVar22 & 1;" (assignment_expression "uVar29 = uVar22 & 1" (identifier "uVar29") (= "=") (binary_expression "uVar22 & 1" (identifier "uVar22") (& "&") (number_literal "1"))) (; ";")) (if_statement "if ((uVar31 & 8) != 0) goto joined_r0x00034b90;" (if "if") (parenthesized_expression "((uVar31 & 8) != 0)" (( "(") (binary_expression "(uVar31 & 8) != 0" (parenthesized_expression "(uVar31 & 8)" (( "(") (binary_expression "uVar31 & 8" (identifier "uVar31") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x00034b90;" (goto "goto") (statement_identifier "joined_r0x00034b90") (; ";"))) (} "}")) (else_clause "else {\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }" (else "else") (compound_statement "{\n                        uVar29 = uVar31 & 8;\n                        if ((uVar22 & 1) == 0) goto LAB_00034cec;\njoined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;\n                      }" ({ "{") (expression_statement "uVar29 = uVar31 & 8;" (assignment_expression "uVar29 = uVar31 & 8" (identifier "uVar29") (= "=") (binary_expression "uVar31 & 8" (identifier "uVar31") (& "&") (number_literal "8"))) (; ";")) (if_statement "if ((uVar22 & 1) == 0) goto LAB_00034cec;" (if "if") (parenthesized_expression "((uVar22 & 1) == 0)" (( "(") (binary_expression "(uVar22 & 1) == 0" (parenthesized_expression "(uVar22 & 1)" (( "(") (binary_expression "uVar22 & 1" (identifier "uVar22") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00034cec;" (goto "goto") (statement_identifier "LAB_00034cec") (; ";"))) (labeled_statement "joined_r0x00034b90:\n                        if (uVar29 != 0) goto LAB_00034cec;" (statement_identifier "joined_r0x00034b90") (: ":") (if_statement "if (uVar29 != 0) goto LAB_00034cec;" (if "if") (parenthesized_expression "(uVar29 != 0)" (( "(") (binary_expression "uVar29 != 0" (identifier "uVar29") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00034cec;" (goto "goto") (statement_identifier "LAB_00034cec") (; ";")))) (} "}")))) (if_statement "if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;" (if "if") (parenthesized_expression "((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0))))" (( "(") (binary_expression "(((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||\n                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))" (parenthesized_expression "(((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0))" (( "(") (binary_expression "((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)" (parenthesized_expression "((uVar31 & 0x20) != 0)" (( "(") (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" (( "(") (binary_expression "uVar31 & 0x20" (identifier "uVar31") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uVar22 & 2) == 0)" (( "(") (binary_expression "(uVar22 & 2) == 0" (parenthesized_expression "(uVar22 & 2)" (( "(") (binary_expression "uVar22 & 2" (identifier "uVar22") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))" (( "(") (parenthesized_expression "((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0))" (( "(") (binary_expression "(uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)" (binary_expression "(uVar31 & 0x80) != 0" (parenthesized_expression "(uVar31 & 0x80)" (( "(") (binary_expression "uVar31 & 0x80" (identifier "uVar31") (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((uVar22 & 8) == 0)" (( "(") (binary_expression "(uVar22 & 8) == 0" (parenthesized_expression "(uVar22 & 8)" (( "(") (binary_expression "uVar22 & 8" (identifier "uVar22") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_00034cec;" (goto "goto") (statement_identifier "LAB_00034cec") (; ";"))) (} "}"))) (expression_statement "iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);" (assignment_expression "iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15)" (identifier "iVar11") (= "=") (call_expression "(*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15)" (parenthesized_expression "(*pcVar17)" (( "(") (pointer_expression "*pcVar17" (* "*") (identifier "pcVar17")) () ")")) (argument_list "(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15)" (( "(") (identifier "iVar36") (, ",") (binary_expression "piVar18 + 0x20" (identifier "piVar18") (+ "+") (number_literal "0x20")) (, ",") (identifier "iVar38") (, ",") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (identifier "uVar15") () ")")))) (; ";")) (if_statement "if (iVar11 != 0) {\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }\n                      iVar11 = iVar11 + local_8c;\n                      local_d4 = (*pcVar20)(&local_b4,iVar11);\n                      uVar15 = local_d4;\n                      if (local_d4 != 0) goto joined_r0x00034dec;\n                      piVar19 = local_50 + iVar11;\n                      iVar36 = *piVar19;\n                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);\n                      if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }\n                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;\n                    }" ({ "{") (if_statement "if (local_3c < iVar11) {\n                        local_3c = iVar11;\n                      }" (if "if") (parenthesized_expression "(local_3c < iVar11)" (( "(") (binary_expression "local_3c < iVar11" (identifier "local_3c") (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\n                        local_3c = iVar11;\n                      }" ({ "{") (expression_statement "local_3c = iVar11;" (assignment_expression "local_3c = iVar11" (identifier "local_3c") (= "=") (identifier "iVar11")) (; ";")) (} "}"))) (expression_statement "iVar11 = iVar11 + local_8c;" (assignment_expression "iVar11 = iVar11 + local_8c" (identifier "iVar11") (= "=") (binary_expression "iVar11 + local_8c" (identifier "iVar11") (+ "+") (identifier "local_8c"))) (; ";")) (expression_statement "local_d4 = (*pcVar20)(&local_b4,iVar11);" (assignment_expression "local_d4 = (*pcVar20)(&local_b4,iVar11)" (identifier "local_d4") (= "=") (call_expression "(*pcVar20)(&local_b4,iVar11)" (parenthesized_expression "(*pcVar20)" (( "(") (pointer_expression "*pcVar20" (* "*") (identifier "pcVar20")) () ")")) (argument_list "(&local_b4,iVar11)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (identifier "iVar11") () ")")))) (; ";")) (expression_statement "uVar15 = local_d4;" (assignment_expression "uVar15 = local_d4" (identifier "uVar15") (= "=") (identifier "local_d4")) (; ";")) (if_statement "if (local_d4 != 0) goto joined_r0x00034dec;" (if "if") (parenthesized_expression "(local_d4 != 0)" (( "(") (binary_expression "local_d4 != 0" (identifier "local_d4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x00034dec;" (goto "goto") (statement_identifier "joined_r0x00034dec") (; ";"))) (expression_statement "piVar19 = local_50 + iVar11;" (assignment_expression "piVar19 = local_50 + iVar11" (identifier "piVar19") (= "=") (binary_expression "local_50 + iVar11" (identifier "local_50") (+ "+") (identifier "iVar11"))) (; ";")) (expression_statement "iVar36 = *piVar19;" (assignment_expression "iVar36 = *piVar19" (identifier "iVar36") (= "=") (pointer_expression "*piVar19" (* "*") (identifier "piVar19"))) (; ";")) (expression_statement "piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);" (assignment_expression "piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc)" (identifier "piVar32") (= "=") (cast_expression "(int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc)" (( "(") (binary_expression "piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc" (subscript_expression "piVar18[6]" (identifier "piVar18") ([ "[") (number_literal "6") (] "]")) (+ "+") (binary_expression "*(int *)(piVar18[3] + iVar38 * 4) * 0xc" (pointer_expression "*(int *)(piVar18[3] + iVar38 * 4)" (* "*") (cast_expression "(int *)(piVar18[3] + iVar38 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar18[3] + iVar38 * 4)" (( "(") (binary_expression "piVar18[3] + iVar38 * 4" (subscript_expression "piVar18[3]" (identifier "piVar18") ([ "[") (number_literal "3") (] "]")) (+ "+") (binary_expression "iVar38 * 4" (identifier "iVar38") (* "*") (number_literal "4"))) () ")")))) (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (if_statement "if (iVar36 == 0) {\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }\n                      else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }" (if "if") (parenthesized_expression "(iVar36 == 0)" (( "(") (binary_expression "iVar36 == 0" (identifier "iVar36") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        local_d0 = (int *)*piVar32;\n                        local_cc = (int *)piVar32[1];\n                        local_c8 = piVar32[2];\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        *piVar19 = iVar36;\n                      }" ({ "{") (expression_statement "local_d0 = (int *)*piVar32;" (assignment_expression "local_d0 = (int *)*piVar32" (identifier "local_d0") (= "=") (cast_expression "(int *)*piVar32" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar32" (* "*") (identifier "piVar32")))) (; ";")) (expression_statement "local_cc = (int *)piVar32[1];" (assignment_expression "local_cc = (int *)piVar32[1]" (identifier "local_cc") (= "=") (cast_expression "(int *)piVar32[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar32[1]" (identifier "piVar32") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_c8 = piVar32[2];" (assignment_expression "local_c8 = piVar32[2]" (identifier "local_c8") (= "=") (subscript_expression "piVar32[2]" (identifier "piVar32") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);" (assignment_expression "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c)" (identifier "uVar23") (= "=") (call_expression "(*pcVar21)(&local_b4,iVar11 + -1,local_5c)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(&local_b4,iVar11 + -1,local_5c)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1")) (, ",") (identifier "local_5c") () ")")))) (; ";")) (expression_statement "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);" (assignment_expression "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" (identifier "iVar36") (= "=") (call_expression "FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" (identifier "FUN_0002d33c") (argument_list "(&local_d4,piVar18,&local_d0,uVar23)" (( "(") (pointer_expression "&local_d4" (& "&") (identifier "local_d4")) (, ",") (identifier "piVar18") (, ",") (pointer_expression "&local_d0" (& "&") (identifier "local_d0")) (, ",") (identifier "uVar23") () ")")))) (; ";")) (expression_statement "*piVar19 = iVar36;" (assignment_expression "*piVar19 = iVar36" (pointer_expression "*piVar19" (* "*") (identifier "piVar19")) (= "=") (identifier "iVar36")) (; ";")) (} "}")) (else_clause "else {\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }" (else "else") (compound_statement "{\n                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));\n                        uVar15 = local_d4;\n                        if (local_d4 != 0) goto joined_r0x00034dec;\n                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);\n                        piVar32 = local_50 + iVar11;\n                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);\n                        puVar7 = PTR_free_000534fc;\n                        *piVar32 = iVar36;\n                        (*(code *)puVar7)(local_c8);\n                      }" ({ "{") (expression_statement "local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));" (assignment_expression "local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28))" (identifier "local_d4") (= "=") (call_expression "FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28))" (identifier "FUN_0002d140") (argument_list "(&local_d0,*(undefined4 *)(iVar36 + 0x28))" (( "(") (pointer_expression "&local_d0" (& "&") (identifier "local_d0")) (, ",") (pointer_expression "*(undefined4 *)(iVar36 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar36 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar36 + 0x28)" (( "(") (binary_expression "iVar36 + 0x28" (identifier "iVar36") (+ "+") (number_literal "0x28")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar15 = local_d4;" (assignment_expression "uVar15 = local_d4" (identifier "uVar15") (= "=") (identifier "local_d4")) (; ";")) (if_statement "if (local_d4 != 0) goto joined_r0x00034dec;" (if "if") (parenthesized_expression "(local_d4 != 0)" (( "(") (binary_expression "local_d4 != 0" (identifier "local_d4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x00034dec;" (goto "goto") (statement_identifier "joined_r0x00034dec") (; ";"))) (expression_statement "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);" (assignment_expression "uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c)" (identifier "uVar23") (= "=") (call_expression "(*pcVar21)(&local_b4,iVar11 + -1,local_5c)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(&local_b4,iVar11 + -1,local_5c)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1")) (, ",") (identifier "local_5c") () ")")))) (; ";")) (expression_statement "piVar32 = local_50 + iVar11;" (assignment_expression "piVar32 = local_50 + iVar11" (identifier "piVar32") (= "=") (binary_expression "local_50 + iVar11" (identifier "local_50") (+ "+") (identifier "iVar11"))) (; ";")) (expression_statement "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);" (assignment_expression "iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" (identifier "iVar36") (= "=") (call_expression "FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23)" (identifier "FUN_0002d33c") (argument_list "(&local_d4,piVar18,&local_d0,uVar23)" (( "(") (pointer_expression "&local_d4" (& "&") (identifier "local_d4")) (, ",") (identifier "piVar18") (, ",") (pointer_expression "&local_d0" (& "&") (identifier "local_d0")) (, ",") (identifier "uVar23") () ")")))) (; ";")) (expression_statement "puVar7 = PTR_free_000534fc;" (assignment_expression "puVar7 = PTR_free_000534fc" (identifier "puVar7") (= "=") (identifier "PTR_free_000534fc")) (; ";")) (expression_statement "*piVar32 = iVar36;" (assignment_expression "*piVar32 = iVar36" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (= "=") (identifier "iVar36")) (; ";")) (expression_statement "(*(code *)puVar7)(local_c8);" (call_expression "(*(code *)puVar7)(local_c8)" (parenthesized_expression "(*(code *)puVar7)" (( "(") (pointer_expression "*(code *)puVar7" (* "*") (cast_expression "(code *)puVar7" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar7"))) () ")")) (argument_list "(local_c8)" (( "(") (identifier "local_c8") () ")"))) (; ";")) (} "}")))) (if_statement "if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))\n                      goto joined_r0x00034dec;" (if "if") (parenthesized_expression "((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))" (( "(") (binary_expression "(local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0)" (parenthesized_expression "(local_50[iVar11] == 0)" (( "(") (binary_expression "local_50[iVar11] == 0" (subscript_expression "local_50[iVar11]" (identifier "local_50") ([ "[") (identifier "iVar11") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar15 = local_d4, local_d4 != 0)" (( "(") (comma_expression "uVar15 = local_d4, local_d4 != 0" (assignment_expression "uVar15 = local_d4" (identifier "uVar15") (= "=") (identifier "local_d4")) (, ",") (binary_expression "local_d4 != 0" (identifier "local_d4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto joined_r0x00034dec;" (goto "goto") (statement_identifier "joined_r0x00034dec") (; ";"))) (} "}"))) (expression_statement "iVar11 = *(int *)(iVar33 + 8);" (assignment_expression "iVar11 = *(int *)(iVar33 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar33 + 8)" (* "*") (cast_expression "(int *)(iVar33 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 8)" (( "(") (binary_expression "iVar33 + 8" (identifier "iVar33") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" (identifier "uVar15") (= "=") (identifier "local_8c")) (; ";")) (} "}"))) (labeled_statement "LAB_00034cec:\n                  param_4 = (uint *)((int)param_4 + 1);" (statement_identifier "LAB_00034cec") (: ":") (expression_statement "param_4 = (uint *)((int)param_4 + 1);" (assignment_expression "param_4 = (uint *)((int)param_4 + 1)" (identifier "param_4") (= "=") (cast_expression "(uint *)((int)param_4 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + 1)" (( "(") (binary_expression "(int)param_4 + 1" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (number_literal "1")) () ")")))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "((int)param_4 < iVar11)" (( "(") (binary_expression "(int)param_4 < iVar11" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (< "<") (identifier "iVar11")) () ")")) (; ";")) (} "}"))) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" (identifier "local_d8") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_8c = uVar15 + 1;" (assignment_expression "local_8c = uVar15 + 1" (identifier "local_8c") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = (uint)*(byte *)(local_b0 + uVar15);" (assignment_expression "uVar15 = (uint)*(byte *)(local_b0 + uVar15)" (identifier "uVar15") (= "=") (binary_expression "(uint)*(byte *)(local_b0 + uVar15)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_b0 + uVar15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b0 + uVar15)" (( "(") (binary_expression "local_b0 + uVar15" (identifier "local_b0") (+ "+") (identifier "uVar15")) () ")"))))) (; ";")) (do_statement "do {\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            } while (iVar11 != 0);" (do "do") (compound_statement "{\n              if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }\n              iVar11 = *(int *)(iVar33 + 0x30);\n              if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }\n              iVar11 = (*pcVar28)(local_60,iVar33);\n            }" ({ "{") (if_statement "if (*(int *)(iVar33 + 0x2c) != 0) {\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }" (if "if") (parenthesized_expression "(*(int *)(iVar33 + 0x2c) != 0)" (( "(") (binary_expression "*(int *)(iVar33 + 0x2c) != 0" (pointer_expression "*(int *)(iVar33 + 0x2c)" (* "*") (cast_expression "(int *)(iVar33 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x2c)" (( "(") (binary_expression "iVar33 + 0x2c" (identifier "iVar33") (+ "+") (number_literal "0x2c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);\nLAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;\n                goto LAB_00034498;\n              }" ({ "{") (expression_statement "iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);" (assignment_expression "iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar33 + 0x2c) + uVar15 * 4)" (( "(") (binary_expression "*(int *)(iVar33 + 0x2c) + uVar15 * 4" (pointer_expression "*(int *)(iVar33 + 0x2c)" (* "*") (cast_expression "(int *)(iVar33 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x2c)" (( "(") (binary_expression "iVar33 + 0x2c" (identifier "iVar33") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (binary_expression "uVar15 * 4" (identifier "uVar15") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (labeled_statement "LAB_0003446c:\n                if (local_50 != (int *)0x0) goto LAB_00034478;" (statement_identifier "LAB_0003446c") (: ":") (if_statement "if (local_50 != (int *)0x0) goto LAB_00034478;" (if "if") (parenthesized_expression "(local_50 != (int *)0x0)" (( "(") (binary_expression "local_50 != (int *)0x0" (identifier "local_50") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00034478;" (goto "goto") (statement_identifier "LAB_00034478") (; ";")))) (goto_statement "goto LAB_00034498;" (goto "goto") (statement_identifier "LAB_00034498") (; ";")) (} "}"))) (expression_statement "iVar11 = *(int *)(iVar33 + 0x30);" (assignment_expression "iVar11 = *(int *)(iVar33 + 0x30)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar33 + 0x30)" (* "*") (cast_expression "(int *)(iVar33 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x30)" (( "(") (binary_expression "iVar33 + 0x30" (identifier "iVar33") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (iVar11 != 0) {\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);\n                if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }\n                goto LAB_0003446c;\n              }" ({ "{") (expression_statement "uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);" (assignment_expression "uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c)" (identifier "uVar31") (= "=") (call_expression "FUN_0002e140(&local_b4,local_8c - 1,local_5c)" (identifier "FUN_0002e140") (argument_list "(&local_b4,local_8c - 1,local_5c)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (binary_expression "local_8c - 1" (identifier "local_8c") (- "-") (number_literal "1")) (, ",") (identifier "local_5c") () ")")))) (; ";")) (if_statement "if ((uVar31 & 1) == 0) {\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }\n                else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }" (if "if") (parenthesized_expression "((uVar31 & 1) == 0)" (( "(") (binary_expression "(uVar31 & 1) == 0" (parenthesized_expression "(uVar31 & 1)" (( "(") (binary_expression "uVar31 & 1" (identifier "uVar31") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar11 = *(int *)(iVar11 + uVar15 * 4);\n                }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar11 + uVar15 * 4);" (assignment_expression "iVar11 = *(int *)(iVar11 + uVar15 * 4)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar11 + uVar15 * 4)" (* "*") (cast_expression "(int *)(iVar11 + uVar15 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + uVar15 * 4)" (( "(") (binary_expression "iVar11 + uVar15 * 4" (identifier "iVar11") (+ "+") (binary_expression "uVar15 * 4" (identifier "uVar15") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }" (else "else") (compound_statement "{\n                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);\n                }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);" (assignment_expression "iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar11 + (uVar15 + 0x100) * 4)" (* "*") (cast_expression "(int *)(iVar11 + (uVar15 + 0x100) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + (uVar15 + 0x100) * 4)" (( "(") (binary_expression "iVar11 + (uVar15 + 0x100) * 4" (identifier "iVar11") (+ "+") (binary_expression "(uVar15 + 0x100) * 4" (parenthesized_expression "(uVar15 + 0x100)" (( "(") (binary_expression "uVar15 + 0x100" (identifier "uVar15") (+ "+") (number_literal "0x100")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")))) (goto_statement "goto LAB_0003446c;" (goto "goto") (statement_identifier "LAB_0003446c") (; ";")) (} "}"))) (expression_statement "iVar11 = (*pcVar28)(local_60,iVar33);" (assignment_expression "iVar11 = (*pcVar28)(local_60,iVar33)" (identifier "iVar11") (= "=") (call_expression "(*pcVar28)(local_60,iVar33)" (parenthesized_expression "(*pcVar28)" (( "(") (pointer_expression "*pcVar28" (* "*") (identifier "pcVar28")) () ")")) (argument_list "(local_60,iVar33)" (( "(") (identifier "local_60") (, ",") (identifier "iVar33") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_d8 = 0xc;" (assignment_expression "local_d8 = 0xc" (identifier "local_d8") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "uVar15 = local_d8;" (assignment_expression "uVar15 = local_d8" (identifier "uVar15") (= "=") (identifier "local_d8")) (; ";")) (labeled_statement "joined_r0x00034dec:\n            local_d8 = uVar15;" (statement_identifier "joined_r0x00034dec") (: ":") (expression_statement "local_d8 = uVar15;" (assignment_expression "local_d8 = uVar15" (identifier "local_d8") (= "=") (identifier "uVar15")) (; ";"))) (if_statement "if (local_50 == (int *)0x0) {\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }" (if "if") (parenthesized_expression "(local_50 == (int *)0x0)" (( "(") (binary_expression "local_50 == (int *)0x0" (identifier "local_50") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              piVar18 = (int *)0x0;\n              goto LAB_00034230;\n            }" ({ "{") (expression_statement "piVar18 = (int *)0x0;" (assignment_expression "piVar18 = (int *)0x0" (identifier "piVar18") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00034230;" (goto "goto") (statement_identifier "LAB_00034230") (; ";")) (} "}"))) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00034478:\n            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);" (statement_identifier "LAB_00034478") (: ":") (expression_statement "iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);" (assignment_expression "iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11)" (identifier "iVar11") (= "=") (call_expression "FUN_00033724(&local_d8,&local_b4,iVar11)" (identifier "FUN_00033724") (argument_list "(&local_d8,&local_b4,iVar11)" (( "(") (pointer_expression "&local_d8" (& "&") (identifier "local_d8")) (, ",") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (identifier "iVar11") () ")")))) (; ";"))) (labeled_statement "LAB_00034498:\n            uVar15 = local_8c;" (statement_identifier "LAB_00034498") (: ":") (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" (identifier "uVar15") (= "=") (identifier "local_8c")) (; ";"))) (if_statement "if (iVar11 == 0) {\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              piVar18 = local_50;\n              if (local_d8 != 0) goto LAB_00034230;\n              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;\n              param_4 = &local_d8;\n              do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);\n            }" ({ "{") (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_d8 != 0) goto LAB_00034230;" (if "if") (parenthesized_expression "(local_d8 != 0)" (( "(") (binary_expression "local_d8 != 0" (identifier "local_d8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00034230;" (goto "goto") (statement_identifier "LAB_00034230") (; ";"))) (if_statement "if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;" (if "if") (parenthesized_expression "((local_50 == (int *)0x0) || ((bVar5 && (!bVar27))))" (( "(") (binary_expression "(local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))" (parenthesized_expression "(local_50 == (int *)0x0)" (( "(") (binary_expression "local_50 == (int *)0x0" (identifier "local_50") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((bVar5 && (!bVar27)))" (( "(") (parenthesized_expression "(bVar5 && (!bVar27))" (( "(") (binary_expression "bVar5 && (!bVar27)" (identifier "bVar5") (&& "&&") (parenthesized_expression "(!bVar27)" (( "(") (unary_expression "!bVar27" (! "!") (identifier "bVar27")) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_4 = &local_d8;" (assignment_expression "param_4 = &local_d8" (identifier "param_4") (= "=") (pointer_expression "&local_d8" (& "&") (identifier "local_d8"))) (; ";")) (do_statement "do {\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              } while (iVar11 == 0);" (do "do") (compound_statement "{\n                bVar3 = false;\n                piVar18 = local_50 + local_8c;\n                uVar15 = local_8c;\n                do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);\n                local_8c = uVar31;\n                iVar11 = FUN_00033724(param_4,&local_b4,0);\n                uVar15 = local_8c;\n                if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }\n              }" ({ "{") (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (expression_statement "piVar18 = local_50 + local_8c;" (assignment_expression "piVar18 = local_50 + local_8c" (identifier "piVar18") (= "=") (binary_expression "local_50 + local_8c" (identifier "local_50") (+ "+") (identifier "local_8c"))) (; ";")) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" (identifier "uVar15") (= "=") (identifier "local_8c")) (; ";")) (do_statement "do {\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                } while (*piVar18 == 0);" (do "do") (compound_statement "{\n                  uVar31 = uVar15 + 1;\n                  piVar18 = piVar18 + 1;\n                  if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }\n                  bVar3 = true;\n                  uVar15 = uVar31;\n                }" ({ "{") (expression_statement "uVar31 = uVar15 + 1;" (assignment_expression "uVar31 = uVar15 + 1" (identifier "uVar31") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar18 = piVar18 + 1;" (assignment_expression "piVar18 = piVar18 + 1" (identifier "piVar18") (= "=") (binary_expression "piVar18 + 1" (identifier "piVar18") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_4c < (int)uVar31) {\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }" (if "if") (parenthesized_expression "(local_4c < (int)uVar31)" (( "(") (binary_expression "local_4c < (int)uVar31" (identifier "local_4c") (< "<") (cast_expression "(int)uVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar31"))) () ")")) (compound_statement "{\n                    if (bVar3) {\n                      local_8c = uVar15;\n                    }\n                    goto LAB_00034748;\n                  }" ({ "{") (if_statement "if (bVar3) {\n                      local_8c = uVar15;\n                    }" (if "if") (parenthesized_expression "(bVar3)" (( "(") (identifier "bVar3") () ")")) (compound_statement "{\n                      local_8c = uVar15;\n                    }" ({ "{") (expression_statement "local_8c = uVar15;" (assignment_expression "local_8c = uVar15" (identifier "local_8c") (= "=") (identifier "uVar15")) (; ";")) (} "}"))) (goto_statement "goto LAB_00034748;" (goto "goto") (statement_identifier "LAB_00034748") (; ";")) (} "}"))) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (; ";")) (expression_statement "uVar15 = uVar31;" (assignment_expression "uVar15 = uVar31" (identifier "uVar15") (= "=") (identifier "uVar31")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar18 == 0)" (( "(") (binary_expression "*piVar18 == 0" (pointer_expression "*piVar18" (* "*") (identifier "piVar18")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_8c = uVar31;" (assignment_expression "local_8c = uVar31" (identifier "local_8c") (= "=") (identifier "uVar31")) (; ";")) (expression_statement "iVar11 = FUN_00033724(param_4,&local_b4,0);" (assignment_expression "iVar11 = FUN_00033724(param_4,&local_b4,0)" (identifier "iVar11") (= "=") (call_expression "FUN_00033724(param_4,&local_b4,0)" (identifier "FUN_00033724") (argument_list "(param_4,&local_b4,0)" (( "(") (identifier "param_4") (, ",") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar15 = local_8c;" (assignment_expression "uVar15 = local_8c" (identifier "uVar15") (= "=") (identifier "local_8c")) (; ";")) (if_statement "if (local_d8 != 0) {\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }" (if "if") (parenthesized_expression "(local_d8 != 0)" (( "(") (binary_expression "local_d8 != 0" (identifier "local_d8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  if (iVar11 == 0) goto LAB_00034748;\n                  break;\n                }" ({ "{") (if_statement "if (iVar11 == 0) goto LAB_00034748;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00034748;" (goto "goto") (statement_identifier "LAB_00034748") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar31 = local_140;" (assignment_expression "uVar31 = local_140" (identifier "uVar31") (= "=") (identifier "local_140")) (; ";")) (if_statement "if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {\n              bVar4 = false;\n              uVar31 = local_140;\n            }" (if "if") (parenthesized_expression "((bVar4) && (uVar31 = uVar35, iVar33 != iVar11))" (( "(") (binary_expression "(bVar4) && (uVar31 = uVar35, iVar33 != iVar11)" (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (&& "&&") (parenthesized_expression "(uVar31 = uVar35, iVar33 != iVar11)" (( "(") (comma_expression "uVar31 = uVar35, iVar33 != iVar11" (assignment_expression "uVar31 = uVar35" (identifier "uVar31") (= "=") (identifier "uVar35")) (, ",") (binary_expression "iVar33 != iVar11" (identifier "iVar33") (!= "!=") (identifier "iVar11"))) () ")"))) () ")")) (compound_statement "{\n              bVar4 = false;\n              uVar31 = local_140;\n            }" ({ "{") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (expression_statement "uVar31 = local_140;" (assignment_expression "uVar31 = local_140" (identifier "uVar31") (= "=") (identifier "local_140")) (; ";")) (} "}"))) (expression_statement "local_140 = uVar31;" (assignment_expression "local_140 = uVar31" (identifier "local_140") (= "=") (identifier "uVar31")) (; ";")) (expression_statement "iVar33 = iVar11;" (assignment_expression "iVar33 = iVar11" (identifier "iVar33") (= "=") (identifier "iVar11")) (; ";")) (expression_statement "local_8c = uVar15;" (assignment_expression "local_8c = uVar15" (identifier "local_8c") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))) {\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }" (if "if") (parenthesized_expression "(((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0))))" (( "(") (binary_expression "((*(byte *)(iVar11 + 0x34) & 8) != 0) &&\n               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))" (parenthesized_expression "((*(byte *)(iVar11 + 0x34) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(iVar11 + 0x34) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x34) & 8)" (( "(") (binary_expression "*(byte *)(iVar11 + 0x34) & 8" (pointer_expression "*(byte *)(iVar11 + 0x34)" (* "*") (cast_expression "(byte *)(iVar11 + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x34)" (( "(") (binary_expression "iVar11 + 0x34" (identifier "iVar11") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)))" (( "(") (parenthesized_expression "((*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0))" (( "(") (binary_expression "(*(byte *)(iVar11 + 0x34) & 1) == 0 ||\n                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)" (binary_expression "(*(byte *)(iVar11 + 0x34) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar11 + 0x34) & 1)" (( "(") (binary_expression "*(byte *)(iVar11 + 0x34) & 1" (pointer_expression "*(byte *)(iVar11 + 0x34)" (* "*") (cast_expression "(byte *)(iVar11 + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x34)" (( "(") (binary_expression "iVar11 + 0x34" (identifier "iVar11") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0)" (( "(") (comma_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),\n                iVar11 != 0" (assignment_expression "iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15)" (identifier "iVar11") (= "=") (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15)" (identifier "FUN_0002e41c") (argument_list "(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (pointer_expression "*(undefined4 *)(iVar11 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar11 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 8)" (( "(") (binary_expression "iVar11 + 8" (identifier "iVar11") (+ "+") (number_literal "8")) () ")")))) (, ",") (binary_expression "iVar11 + 0xc" (identifier "iVar11") (+ "+") (number_literal "0xc")) (, ",") (identifier "uVar15") () ")")))) (, ",") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              if (!bVar27) goto LAB_00034760;\n              local_14c = (uint **)0x0;\n              uVar9 = uVar15;\n              bVar5 = bVar27;\n            }" ({ "{") (if_statement "if (!bVar27) goto LAB_00034760;" (if "if") (parenthesized_expression "(!bVar27)" (( "(") (unary_expression "!bVar27" (! "!") (identifier "bVar27")) () ")")) (goto_statement "goto LAB_00034760;" (goto "goto") (statement_identifier "LAB_00034760") (; ";"))) (expression_statement "local_14c = (uint **)0x0;" (assignment_expression "local_14c = (uint **)0x0" (identifier "local_14c") (= "=") (cast_expression "(uint **)0x0" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar9 = uVar15;" (assignment_expression "uVar9 = uVar15" (identifier "uVar9") (= "=") (identifier "uVar15")) (; ";")) (expression_statement "bVar5 = bVar27;" (assignment_expression "bVar5 = bVar27" (identifier "bVar5") (= "=") (identifier "bVar27")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00034748:\n          uVar15 = uVar9;" (statement_identifier "LAB_00034748") (: ":") (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" (identifier "uVar15") (= "=") (identifier "uVar9")) (; ";"))) (if_statement "if (local_14c != (uint **)0x0) {\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }" (if "if") (parenthesized_expression "(local_14c != (uint **)0x0)" (( "(") (binary_expression "local_14c != (uint **)0x0" (identifier "local_14c") (!= "!=") (cast_expression "(uint **)0x0" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            *local_14c = (uint *)((int)*local_14c + local_140);\n          }" ({ "{") (expression_statement "*local_14c = (uint *)((int)*local_14c + local_140);" (assignment_expression "*local_14c = (uint *)((int)*local_14c + local_140)" (pointer_expression "*local_14c" (* "*") (identifier "local_14c")) (= "=") (cast_expression "(uint *)((int)*local_14c + local_140)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)*local_14c + local_140)" (( "(") (binary_expression "(int)*local_14c + local_140" (cast_expression "(int)*local_14c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*local_14c" (* "*") (identifier "local_14c"))) (+ "+") (identifier "local_140")) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" (else "else") (compound_statement "{\n          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);\n          local_d8 = uVar15;\n          if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }\n        }" ({ "{") (expression_statement "uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);" (assignment_expression "uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0)" (identifier "uVar15") (= "=") (call_expression "FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0)" (identifier "FUN_0002dfb4") (argument_list "(&local_b4,iVar33 + 8,iVar33 + 0xc,0)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (binary_expression "iVar33 + 8" (identifier "iVar33") (+ "+") (number_literal "8")) (, ",") (binary_expression "iVar33 + 0xc" (identifier "iVar33") (+ "+") (number_literal "0xc")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_d8 = uVar15;" (assignment_expression "local_d8 = uVar15" (identifier "local_d8") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (uVar15 == 0) {\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }" (if "if") (parenthesized_expression "(uVar15 == 0)" (( "(") (binary_expression "uVar15 == 0" (identifier "uVar15") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }\n            goto LAB_000343c4;\n          }" ({ "{") (if_statement "if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {\n              bVar4 = false;\n            }\n            else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }" (if "if") (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar33 + 0x34) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 2)" (( "(") (binary_expression "*(byte *)(iVar33 + 0x34) & 2" (pointer_expression "*(byte *)(iVar33 + 0x34)" (* "*") (cast_expression "(byte *)(iVar33 + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x34)" (( "(") (binary_expression "iVar33 + 0x34" (identifier "iVar33") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              bVar4 = false;\n            }" ({ "{") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }" (else "else") (compound_statement "{\n              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);\n              local_d8 = uVar15;\n              if (uVar15 != 0) goto LAB_00034760;\n              bVar4 = false;\n            }" ({ "{") (expression_statement "uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);" (assignment_expression "uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc)" (identifier "uVar15") (= "=") (call_expression "FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc)" (identifier "FUN_00032d38") (argument_list "(&local_b4,iVar33 + 8,iVar33 + 0xc)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (binary_expression "iVar33 + 8" (identifier "iVar33") (+ "+") (number_literal "8")) (, ",") (binary_expression "iVar33 + 0xc" (identifier "iVar33") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "local_d8 = uVar15;" (assignment_expression "local_d8 = uVar15" (identifier "local_d8") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (uVar15 != 0) goto LAB_00034760;" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00034760;" (goto "goto") (statement_identifier "LAB_00034760") (; ";"))) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (} "}")))) (goto_statement "goto LAB_000343c4;" (goto "goto") (statement_identifier "LAB_000343c4") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00034760:\n        piVar18 = local_50;" (statement_identifier "LAB_00034760") (: ":") (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";"))) (expression_statement "puVar7 = PTR_LAB_0005332c;" (assignment_expression "puVar7 = PTR_LAB_0005332c" (identifier "puVar7") (= "=") (identifier "PTR_LAB_0005332c")) (; ";")) (if_statement "if (uVar15 != 0xffffffff) {\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }" (if "if") (parenthesized_expression "(uVar15 != 0xffffffff)" (( "(") (binary_expression "uVar15 != 0xffffffff" (identifier "uVar15") (!= "!=") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n          if (uVar15 == 0xfffffffe) goto LAB_00034274;\n          local_58 = uVar15;\n          if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }\nLAB_00034e5c:\n          piVar18 = local_50;\n          local_154 = uVar12;\n          if (param_7 == 0) goto LAB_0003423c;\n          bVar1 = *(byte *)(param_1 + 7);\n          if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }\n          *param_8 = 0;\n          param_8[1] = local_58;\n          goto LAB_00034eb4;\n        }" ({ "{") (if_statement "if (uVar15 == 0xfffffffe) goto LAB_00034274;" (if "if") (parenthesized_expression "(uVar15 == 0xfffffffe)" (( "(") (binary_expression "uVar15 == 0xfffffffe" (identifier "uVar15") (== "==") (number_literal "0xfffffffe")) () ")")) (goto_statement "goto LAB_00034274;" (goto "goto") (statement_identifier "LAB_00034274") (; ";"))) (expression_statement "local_58 = uVar15;" (assignment_expression "local_58 = uVar15" (identifier "local_58") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if ((*(byte *)(param_1 + 7) & 8) == 0) {\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }\n          else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 7) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 7) & 8) == 0" (parenthesized_expression "(*(byte *)(param_1 + 7) & 8)" (( "(") (binary_expression "*(byte *)(param_1 + 7) & 8" (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }\n            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);\n            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;\n          }" ({ "{") (if_statement "if (!bVar2) {\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (compound_statement "{\n              iVar33 = piVar37[0x13];\n              goto joined_r0x00034fc8;\n            }" ({ "{") (expression_statement "iVar33 = piVar37[0x13];" (assignment_expression "iVar33 = piVar37[0x13]" (identifier "iVar33") (= "=") (subscript_expression "piVar37[0x13]" (identifier "piVar37") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (goto_statement "goto joined_r0x00034fc8;" (goto "goto") (statement_identifier "joined_r0x00034fc8") (; ";")) (} "}"))) (expression_statement "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15);" (assignment_expression "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15)" (identifier "local_54") (= "=") (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15)" (identifier "FUN_0002e41c") (argument_list "(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                    local_50[uVar15] + 0xc,uVar15)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (pointer_expression "*(undefined4 *)(local_50[uVar15] + 8)" (* "*") (cast_expression "(undefined4 *)(local_50[uVar15] + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50[uVar15] + 8)" (( "(") (binary_expression "local_50[uVar15] + 8" (subscript_expression "local_50[uVar15]" (identifier "local_50") ([ "[") (identifier "uVar15") (] "]")) (+ "+") (number_literal "8")) () ")")))) (, ",") (binary_expression "local_50[uVar15] + 0xc" (subscript_expression "local_50[uVar15]" (identifier "local_50") ([ "[") (identifier "uVar15") (] "]")) (+ "+") (number_literal "0xc")) (, ",") (identifier "uVar15") () ")")))) (; ";")) (if_statement "if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;" (if "if") (parenthesized_expression "((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0))" (( "(") (binary_expression "(*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)" (parenthesized_expression "(*(char *)(piVar37 + 0x16) < '\0')" (( "(") (binary_expression "*(char *)(piVar37 + 0x16) < '\0'" (pointer_expression "*(char *)(piVar37 + 0x16)" (* "*") (cast_expression "(char *)(piVar37 + 0x16)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar37 + 0x16)" (( "(") (binary_expression "piVar37 + 0x16" (identifier "piVar37") (+ "+") (number_literal "0x16")) () ")")))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(piVar37[0x13] != 0)" (( "(") (binary_expression "piVar37[0x13] != 0" (subscript_expression "piVar37[0x13]" (identifier "piVar37") ([ "[") (number_literal "0x13") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_000347ec;" (goto "goto") (statement_identifier "LAB_000347ec") (; ";"))) (} "}")) (else_clause "else {\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }" (else "else") (compound_statement "{\n            iVar33 = piVar37[0x13];\njoined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }\n          }" ({ "{") (expression_statement "iVar33 = piVar37[0x13];" (assignment_expression "iVar33 = piVar37[0x13]" (identifier "iVar33") (= "=") (subscript_expression "piVar37[0x13]" (identifier "piVar37") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (labeled_statement "joined_r0x00034fc8:\n            if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }" (statement_identifier "joined_r0x00034fc8") (: ":") (if_statement "if (iVar33 != 0) {\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }" (if "if") (parenthesized_expression "(iVar33 != 0)" (( "(") (binary_expression "iVar33 != 0" (identifier "iVar33") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);\nLAB_000347ec:\n              iVar33 = local_54;\n              piVar32 = local_60;\n              if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }\n              local_154 = 0xc;\n              goto LAB_0003423c;\n            }" ({ "{") (expression_statement "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15);" (assignment_expression "local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15)" (identifier "local_54") (= "=") (call_expression "FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15)" (identifier "FUN_0002e41c") (argument_list "(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),\n                                      local_50[uVar15] + 0xc,uVar15)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (pointer_expression "*(undefined4 *)(local_50[uVar15] + 8)" (* "*") (cast_expression "(undefined4 *)(local_50[uVar15] + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_50[uVar15] + 8)" (( "(") (binary_expression "local_50[uVar15] + 8" (subscript_expression "local_50[uVar15]" (identifier "local_50") ([ "[") (identifier "uVar15") (] "]")) (+ "+") (number_literal "8")) () ")")))) (, ",") (binary_expression "local_50[uVar15] + 0xc" (subscript_expression "local_50[uVar15]" (identifier "local_50") ([ "[") (identifier "uVar15") (] "]")) (+ "+") (number_literal "0xc")) (, ",") (identifier "uVar15") () ")")))) (; ";")) (labeled_statement "LAB_000347ec:\n              iVar33 = local_54;" (statement_identifier "LAB_000347ec") (: ":") (expression_statement "iVar33 = local_54;" (assignment_expression "iVar33 = local_54" (identifier "iVar33") (= "=") (identifier "local_54")) (; ";"))) (expression_statement "piVar32 = local_60;" (assignment_expression "piVar32 = local_60" (identifier "piVar32") (= "=") (identifier "local_60")) (; ";")) (if_statement "if (uVar15 < 0x3fffffff) {\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }" (if "if") (parenthesized_expression "(uVar15 < 0x3fffffff)" (( "(") (binary_expression "uVar15 < 0x3fffffff" (identifier "uVar15") (< "<") (number_literal "0x3fffffff")) () ")")) (compound_statement "{\n                local_160 = uVar15 + 1;\n                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                if (piVar18 == (int *)0x0) goto LAB_00034274;\n                if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }\n                (*(code *)PTR_free_000534fc)(piVar18);\n                (*(code *)PTR_free_000534fc)(local_15c);\n                piVar18 = local_50;\n                if (local_154 == 1) goto LAB_00034950;\n                goto LAB_0003423c;\n              }" ({ "{") (expression_statement "local_160 = uVar15 + 1;" (assignment_expression "local_160 = uVar15 + 1" (identifier "local_160") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);" (assignment_expression "piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" (identifier "piVar18") (= "=") (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_malloc_00053474)(local_160 * 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 "(local_160 * 4)" (( "(") (binary_expression "local_160 * 4" (identifier "local_160") (* "*") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (piVar18 == (int *)0x0) goto LAB_00034274;" (if "if") (parenthesized_expression "(piVar18 == (int *)0x0)" (( "(") (binary_expression "piVar18 == (int *)0x0" (identifier "piVar18") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00034274;" (goto "goto") (statement_identifier "LAB_00034274") (; ";"))) (if_statement "if (piVar32[0x13] == 0) {\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }\n                else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }" (if "if") (parenthesized_expression "(piVar32[0x13] == 0)" (( "(") (binary_expression "piVar32[0x13] == 0" (subscript_expression "piVar32[0x13]" (identifier "piVar32") ([ "[") (number_literal "0x13") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  local_cc = (int *)0x0;\n                  local_c0 = 0;\n                  local_bc = 0;\n                  local_b8 = 0;\n                  local_d0 = piVar18;\n                  local_c8 = iVar33;\n                  local_c4 = uVar15;\n                  local_154 = FUN_00033988(&local_b4,&local_d0);\n                  (*(code *)PTR_free_000534fc)(local_b8);\n                  if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }\nLAB_00035394:\n                  local_15c = (int *)0x0;\n                }" ({ "{") (expression_statement "local_cc = (int *)0x0;" (assignment_expression "local_cc = (int *)0x0" (identifier "local_cc") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" (identifier "local_c0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" (identifier "local_bc") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0 = piVar18;" (assignment_expression "local_d0 = piVar18" (identifier "local_d0") (= "=") (identifier "piVar18")) (; ";")) (expression_statement "local_c8 = iVar33;" (assignment_expression "local_c8 = iVar33" (identifier "local_c8") (= "=") (identifier "iVar33")) (; ";")) (expression_statement "local_c4 = uVar15;" (assignment_expression "local_c4 = uVar15" (identifier "local_c4") (= "=") (identifier "uVar15")) (; ";")) (expression_statement "local_154 = FUN_00033988(&local_b4,&local_d0);" (assignment_expression "local_154 = FUN_00033988(&local_b4,&local_d0)" (identifier "local_154") (= "=") (call_expression "FUN_00033988(&local_b4,&local_d0)" (identifier "FUN_00033988") (argument_list "(&local_b4,&local_d0)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (pointer_expression "&local_d0" (& "&") (identifier "local_d0")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_free_000534fc)(local_b8);" (call_expression "(*(code *)PTR_free_000534fc)(local_b8)" (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_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";")) (if_statement "if (local_154 == 0) {\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }" (if "if") (parenthesized_expression "(local_154 == 0)" (( "(") (binary_expression "local_154 == 0" (identifier "local_154") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }\nLAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);\n                    local_58 = uVar15;\n                    local_54 = iVar33;\n                    local_50 = piVar18;\n                    goto LAB_00034e5c;\n                  }" ({ "{") (if_statement "if (*piVar18 == 0) {\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }" (if "if") (parenthesized_expression "(*piVar18 == 0)" (( "(") (binary_expression "*piVar18 == 0" (pointer_expression "*piVar18" (* "*") (identifier "piVar18")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      (*(code *)PTR_free_000534fc)(piVar18);\n                      goto LAB_00034950;\n                    }" ({ "{") (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" (( "(") (identifier "piVar18") () ")"))) (; ";")) (goto_statement "goto LAB_00034950;" (goto "goto") (statement_identifier "LAB_00034950") (; ";")) (} "}"))) (labeled_statement "LAB_00035074:\n                    (*(code *)PTR_free_000534fc)(local_50);" (statement_identifier "LAB_00035074") (: ":") (expression_statement "(*(code *)PTR_free_000534fc)(local_50);" (call_expression "(*(code *)PTR_free_000534fc)(local_50)" (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_50)" (( "(") (identifier "local_50") () ")"))) (; ";"))) (expression_statement "local_58 = uVar15;" (assignment_expression "local_58 = uVar15" (identifier "local_58") (= "=") (identifier "uVar15")) (; ";")) (expression_statement "local_54 = iVar33;" (assignment_expression "local_54 = iVar33" (identifier "local_54") (= "=") (identifier "iVar33")) (; ";")) (expression_statement "local_50 = piVar18;" (assignment_expression "local_50 = piVar18" (identifier "local_50") (= "=") (identifier "piVar18")) (; ";")) (goto_statement "goto LAB_00034e5c;" (goto "goto") (statement_identifier "LAB_00034e5c") (; ";")) (} "}"))) (labeled_statement "LAB_00035394:\n                  local_15c = (int *)0x0;" (statement_identifier "LAB_00035394") (: ":") (expression_statement "local_15c = (int *)0x0;" (assignment_expression "local_15c = (int *)0x0" (identifier "local_15c") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}")) (else_clause "else {\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }" (else "else") (compound_statement "{\n                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);\n                  if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }\n                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);\n                  while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }\n                }" ({ "{") (expression_statement "local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);" (assignment_expression "local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" (identifier "local_15c") (= "=") (cast_expression "(int *)(*(code *)PTR_malloc_00053474)(local_160 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_malloc_00053474)(local_160 * 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 "(local_160 * 4)" (( "(") (binary_expression "local_160 * 4" (identifier "local_160") (* "*") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (local_15c == (int *)0x0) {\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }" (if "if") (parenthesized_expression "(local_15c == (int *)0x0)" (( "(") (binary_expression "local_15c == (int *)0x0" (identifier "local_15c") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    (*(code *)PTR_free_000534fc)(piVar18);\n                    local_154 = 0xc;\n                    piVar18 = local_50;\n                    goto LAB_0003423c;\n                  }" ({ "{") (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" (( "(") (identifier "piVar18") () ")"))) (; ";")) (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" (identifier "local_154") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";")) (} "}"))) (expression_statement "pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);" (assignment_expression "pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988)" (identifier "pcVar16") (= "=") (cast_expression "(code *)(PTR_LAB_0005332c + 0x3988)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0005332c + 0x3988)" (( "(") (binary_expression "PTR_LAB_0005332c + 0x3988" (identifier "PTR_LAB_0005332c") (+ "+") (number_literal "0x3988")) () ")")))) (; ";")) (while_statement "while( true ) {\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);\n                    local_c0 = 0;\n                    local_bc = 0;\n                    local_b8 = 0;\n                    local_d0 = piVar18;\n                    local_cc = local_15c;\n                    local_c8 = iVar33;\n                    local_c4 = uVar15;\n                    local_154 = (*pcVar16)(&local_b4,&local_d0);\n                    (*(code *)PTR_free_000534fc)(local_b8);\n                    if (local_154 != 0) break;\n                    if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }\n                    piVar19 = local_50 + (local_160 - 1);\n                    local_160 = uVar15;\n                    while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }\n                    iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);\n                  }" ({ "{") (expression_statement "(*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);" (call_expression "(*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4)" (parenthesized_expression "(*(code *)PTR_memset_00053430)" (( "(") (pointer_expression "*(code *)PTR_memset_00053430" (* "*") (cast_expression "(code *)PTR_memset_00053430" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memset_00053430"))) () ")")) (argument_list "(local_15c,0,local_160 * 4)" (( "(") (identifier "local_15c") (, ",") (number_literal "0") (, ",") (binary_expression "local_160 * 4" (identifier "local_160") (* "*") (number_literal "4")) () ")"))) (; ";")) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" (identifier "local_c0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" (identifier "local_bc") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0 = piVar18;" (assignment_expression "local_d0 = piVar18" (identifier "local_d0") (= "=") (identifier "piVar18")) (; ";")) (expression_statement "local_cc = local_15c;" (assignment_expression "local_cc = local_15c" (identifier "local_cc") (= "=") (identifier "local_15c")) (; ";")) (expression_statement "local_c8 = iVar33;" (assignment_expression "local_c8 = iVar33" (identifier "local_c8") (= "=") (identifier "iVar33")) (; ";")) (expression_statement "local_c4 = uVar15;" (assignment_expression "local_c4 = uVar15" (identifier "local_c4") (= "=") (identifier "uVar15")) (; ";")) (expression_statement "local_154 = (*pcVar16)(&local_b4,&local_d0);" (assignment_expression "local_154 = (*pcVar16)(&local_b4,&local_d0)" (identifier "local_154") (= "=") (call_expression "(*pcVar16)(&local_b4,&local_d0)" (parenthesized_expression "(*pcVar16)" (( "(") (pointer_expression "*pcVar16" (* "*") (identifier "pcVar16")) () ")")) (argument_list "(&local_b4,&local_d0)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (pointer_expression "&local_d0" (& "&") (identifier "local_d0")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_free_000534fc)(local_b8);" (call_expression "(*(code *)PTR_free_000534fc)(local_b8)" (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_b8)" (( "(") (identifier "local_b8") () ")"))) (; ";")) (if_statement "if (local_154 != 0) break;" (if "if") (parenthesized_expression "(local_154 != 0)" (( "(") (binary_expression "local_154 != 0" (identifier "local_154") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((*piVar18 != 0) || (*local_15c != 0)) {\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }" (if "if") (parenthesized_expression "((*piVar18 != 0) || (*local_15c != 0))" (( "(") (binary_expression "(*piVar18 != 0) || (*local_15c != 0)" (parenthesized_expression "(*piVar18 != 0)" (( "(") (binary_expression "*piVar18 != 0" (pointer_expression "*piVar18" (* "*") (identifier "piVar18")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*local_15c != 0)" (( "(") (binary_expression "*local_15c != 0" (pointer_expression "*local_15c" (* "*") (identifier "local_15c")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);\n                      (*(code *)PTR_free_000534fc)(local_15c);\n                      if (local_154 != 0) goto LAB_00035394;\n                      goto LAB_00035074;\n                    }" ({ "{") (expression_statement "local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);" (assignment_expression "local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160)" (identifier "local_154") (= "=") (call_expression "FUN_0002da20(piVar32,piVar18,local_15c,local_160)" (identifier "FUN_0002da20") (argument_list "(piVar32,piVar18,local_15c,local_160)" (( "(") (identifier "piVar32") (, ",") (identifier "piVar18") (, ",") (identifier "local_15c") (, ",") (identifier "local_160") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_free_000534fc)(local_15c);" (call_expression "(*(code *)PTR_free_000534fc)(local_15c)" (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_15c)" (( "(") (identifier "local_15c") () ")"))) (; ";")) (if_statement "if (local_154 != 0) goto LAB_00035394;" (if "if") (parenthesized_expression "(local_154 != 0)" (( "(") (binary_expression "local_154 != 0" (identifier "local_154") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00035394;" (goto "goto") (statement_identifier "LAB_00035394") (; ";"))) (goto_statement "goto LAB_00035074;" (goto "goto") (statement_identifier "LAB_00035074") (; ";")) (} "}"))) (expression_statement "piVar19 = local_50 + (local_160 - 1);" (assignment_expression "piVar19 = local_50 + (local_160 - 1)" (identifier "piVar19") (= "=") (binary_expression "local_50 + (local_160 - 1)" (identifier "local_50") (+ "+") (parenthesized_expression "(local_160 - 1)" (( "(") (binary_expression "local_160 - 1" (identifier "local_160") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "local_160 = uVar15;" (assignment_expression "local_160 = uVar15" (identifier "local_160") (= "=") (identifier "uVar15")) (; ";")) (while_statement "while( true ) {\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                      uVar15 = local_160 - 1;\n                      if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }\n                      iVar33 = piVar19[-1];\n                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;\n                      piVar19 = piVar19 + -1;\n                      local_160 = uVar15;\n                    }" ({ "{") (expression_statement "uVar15 = local_160 - 1;" (assignment_expression "uVar15 = local_160 - 1" (identifier "uVar15") (= "=") (binary_expression "local_160 - 1" (identifier "local_160") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar15 == 0xffffffff) {\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }" (if "if") (parenthesized_expression "(uVar15 == 0xffffffff)" (( "(") (binary_expression "uVar15 == 0xffffffff" (identifier "uVar15") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                        (*(code *)PTR_free_000534fc)(piVar18);\n                        (*(code *)PTR_free_000534fc)(local_15c);\n                        goto LAB_00034950;\n                      }" ({ "{") (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" (( "(") (identifier "piVar18") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_000534fc)(local_15c);" (call_expression "(*(code *)PTR_free_000534fc)(local_15c)" (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_15c)" (( "(") (identifier "local_15c") () ")"))) (; ";")) (goto_statement "goto LAB_00034950;" (goto "goto") (statement_identifier "LAB_00034950") (; ";")) (} "}"))) (expression_statement "iVar33 = piVar19[-1];" (assignment_expression "iVar33 = piVar19[-1]" (identifier "iVar33") (= "=") (subscript_expression "piVar19[-1]" (identifier "piVar19") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (if_statement "if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;" (if "if") (parenthesized_expression "((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0))" (( "(") (binary_expression "(iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)" (parenthesized_expression "(iVar33 != 0)" (( "(") (binary_expression "iVar33 != 0" (identifier "iVar33") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(iVar33 + 0x34) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(iVar33 + 0x34) & 8) != 0" (parenthesized_expression "(*(byte *)(iVar33 + 0x34) & 8)" (( "(") (binary_expression "*(byte *)(iVar33 + 0x34) & 8" (pointer_expression "*(byte *)(iVar33 + 0x34)" (* "*") (cast_expression "(byte *)(iVar33 + 0x34)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 0x34)" (( "(") (binary_expression "iVar33 + 0x34" (identifier "iVar33") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar19 = piVar19 + -1;" (assignment_expression "piVar19 = piVar19 + -1" (identifier "piVar19") (= "=") (binary_expression "piVar19 + -1" (identifier "piVar19") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "local_160 = uVar15;" (assignment_expression "local_160 = uVar15" (identifier "local_160") (= "=") (identifier "uVar15")) (; ";")) (} "}"))) (expression_statement "iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);" (assignment_expression "iVar33 = (*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15)" (identifier "iVar33") (= "=") (call_expression "(*(code *)(puVar7 + -0x1be4))\n                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15)" (parenthesized_expression "(*(code *)(puVar7 + -0x1be4))" (( "(") (pointer_expression "*(code *)(puVar7 + -0x1be4)" (* "*") (cast_expression "(code *)(puVar7 + -0x1be4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x1be4)" (( "(") (binary_expression "puVar7 + -0x1be4" (identifier "puVar7") (+ "+") (number_literal "-0x1be4")) () ")")))) () ")")) (argument_list "(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (pointer_expression "*(undefined4 *)(iVar33 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar33 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 8)" (( "(") (binary_expression "iVar33 + 8" (identifier "iVar33") (+ "+") (number_literal "8")) () ")")))) (, ",") (binary_expression "iVar33 + 0xc" (identifier "iVar33") (+ "+") (number_literal "0xc")) (, ",") (identifier "uVar15") () ")")))) (; ";")) (} "}"))) (} "}")))) (expression_statement "(*(code *)PTR_free_000534fc)(piVar18);" (call_expression "(*(code *)PTR_free_000534fc)(piVar18)" (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 "(piVar18)" (( "(") (identifier "piVar18") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_000534fc)(local_15c);" (call_expression "(*(code *)PTR_free_000534fc)(local_15c)" (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_15c)" (( "(") (identifier "local_15c") () ")"))) (; ";")) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_154 == 1) goto LAB_00034950;" (if "if") (parenthesized_expression "(local_154 == 1)" (( "(") (binary_expression "local_154 == 1" (identifier "local_154") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00034950;" (goto "goto") (statement_identifier "LAB_00034950") (; ";"))) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";")) (} "}"))) (expression_statement "local_154 = 0xc;" (assignment_expression "local_154 = 0xc" (identifier "local_154") (= "=") (number_literal "0xc")) (; ";")) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_00034e5c:\n          piVar18 = local_50;" (statement_identifier "LAB_00034e5c") (: ":") (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";"))) (expression_statement "local_154 = uVar12;" (assignment_expression "local_154 = uVar12" (identifier "local_154") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if (param_7 == 0) goto LAB_0003423c;" (if "if") (parenthesized_expression "(param_7 == 0)" (( "(") (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";"))) (expression_statement "bVar1 = *(byte *)(param_1 + 7);" (assignment_expression "bVar1 = *(byte *)(param_1 + 7)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 7)" (* "*") (cast_expression "(byte *)(param_1 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")"))))) (; ";")) (if_statement "if (bVar2) {\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n            puVar25 = param_8 + 2;\n            do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);\n            *param_8 = 0;\n            param_8[1] = local_58;\n            if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }\n            uVar30 = 0;\n            puVar25 = param_8;\n            while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }\n            if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }\n            piVar14 = (int *)piVar37[0x21];\n            piVar18 = local_50;\n            local_154 = uVar12;\n            if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }\n            goto LAB_0003423c;\n          }" ({ "{") (expression_statement "puVar25 = param_8 + 2;" (assignment_expression "puVar25 = param_8 + 2" (identifier "puVar25") (= "=") (binary_expression "param_8 + 2" (identifier "param_8") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            } while (param_8 + param_7 * 2 != puVar24);" (do "do") (compound_statement "{\n              puVar25[1] = 0xffffffff;\n              puVar24 = puVar25 + 2;\n              *puVar25 = 0xffffffff;\n              puVar25 = puVar24;\n            }" ({ "{") (expression_statement "puVar25[1] = 0xffffffff;" (assignment_expression "puVar25[1] = 0xffffffff" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar24 = puVar25 + 2;" (assignment_expression "puVar24 = puVar25 + 2" (identifier "puVar24") (= "=") (binary_expression "puVar25 + 2" (identifier "puVar25") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*puVar25 = 0xffffffff;" (assignment_expression "*puVar25 = 0xffffffff" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar25 = puVar24;" (assignment_expression "puVar25 = puVar24" (identifier "puVar25") (= "=") (identifier "puVar24")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_8 + param_7 * 2 != puVar24)" (( "(") (binary_expression "param_8 + param_7 * 2 != puVar24" (binary_expression "param_8 + param_7 * 2" (identifier "param_8") (+ "+") (binary_expression "param_7 * 2" (identifier "param_7") (* "*") (number_literal "2"))) (!= "!=") (identifier "puVar24")) () ")")) (; ";")) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_8[1] = local_58;" (assignment_expression "param_8[1] = local_58" (subscript_expression "param_8[1]" (identifier "param_8") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_58")) (; ";")) (if_statement "if ((bVar1 & 8) == 0) {\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }\n            else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }" (if "if") (parenthesized_expression "((bVar1 & 8) == 0)" (( "(") (binary_expression "(bVar1 & 8) == 0" (parenthesized_expression "(bVar1 & 8)" (( "(") (binary_expression "bVar1 & 8" (identifier "bVar1") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }\n              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);\n              piVar18 = local_50;\n              if (local_154 != 0) goto LAB_0003423c;\n              uVar9 = *param_8;\n            }" ({ "{") (if_statement "if (*(char *)(piVar37 + 0x16) < '\0') {\n                bVar27 = 0 < piVar37[0x13];\n              }\n              else {\n                bVar27 = false;\n              }" (if "if") (parenthesized_expression "(*(char *)(piVar37 + 0x16) < '\0')" (( "(") (binary_expression "*(char *)(piVar37 + 0x16) < '\0'" (pointer_expression "*(char *)(piVar37 + 0x16)" (* "*") (cast_expression "(char *)(piVar37 + 0x16)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar37 + 0x16)" (( "(") (binary_expression "piVar37 + 0x16" (identifier "piVar37") (+ "+") (number_literal "0x16")) () ")")))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                bVar27 = 0 < piVar37[0x13];\n              }" ({ "{") (expression_statement "bVar27 = 0 < piVar37[0x13];" (assignment_expression "bVar27 = 0 < piVar37[0x13]" (identifier "bVar27") (= "=") (binary_expression "0 < piVar37[0x13]" (number_literal "0") (< "<") (subscript_expression "piVar37[0x13]" (identifier "piVar37") ([ "[") (number_literal "0x13") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n                bVar27 = false;\n              }" (else "else") (compound_statement "{\n                bVar27 = false;\n              }" ({ "{") (expression_statement "bVar27 = false;" (assignment_expression "bVar27 = false" (identifier "bVar27") (= "=") (false "false")) (; ";")) (} "}")))) (expression_statement "local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);" (assignment_expression "local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27)" (identifier "local_154") (= "=") (call_expression "FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27)" (identifier "FUN_00032290") (argument_list "(param_1,&local_b4,param_7,param_8,bVar27)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) (, ",") (identifier "param_7") (, ",") (identifier "param_8") (, ",") (identifier "bVar27") () ")")))) (; ";")) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_154 != 0) goto LAB_0003423c;" (if "if") (parenthesized_expression "(local_154 != 0)" (( "(") (binary_expression "local_154 != 0" (identifier "local_154") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";"))) (expression_statement "uVar9 = *param_8;" (assignment_expression "uVar9 = *param_8" (identifier "uVar9") (= "=") (pointer_expression "*param_8" (* "*") (identifier "param_8"))) (; ";")) (} "}")) (else_clause "else {\nLAB_00034eb4:\n              uVar9 = 0;\n            }" (else "else") (compound_statement "{\nLAB_00034eb4:\n              uVar9 = 0;\n            }" ({ "{") (labeled_statement "LAB_00034eb4:\n              uVar9 = 0;" (statement_identifier "LAB_00034eb4") (: ":") (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";"))) (} "}")))) (expression_statement "uVar30 = 0;" (assignment_expression "uVar30 = 0" (identifier "uVar30") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar25 = param_8;" (assignment_expression "puVar25 = param_8" (identifier "puVar25") (= "=") (identifier "param_8")) (; ";")) (while_statement "while( true ) {\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }\n              uVar30 = uVar30 + 1;\n              puVar25 = puVar25 + 2;\n              if (uVar30 == param_7) break;\n              uVar9 = *puVar25;\n            }" ({ "{") (if_statement "if (uVar9 != 0xffffffff) {\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }" (if "if") (parenthesized_expression "(uVar9 != 0xffffffff)" (( "(") (binary_expression "uVar9 != 0xffffffff" (identifier "uVar9") (!= "!=") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                uVar31 = puVar25[1];\n                uVar15 = uVar9;\n                uVar35 = uVar31;\n                if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }\n                *puVar25 = (int)local_dc + uVar15;\n                puVar25[1] = (int)local_dc + uVar35;\n              }" ({ "{") (expression_statement "uVar31 = puVar25[1];" (assignment_expression "uVar31 = puVar25[1]" (identifier "uVar31") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" (identifier "uVar15") (= "=") (identifier "uVar9")) (; ";")) (expression_statement "uVar35 = uVar31;" (assignment_expression "uVar35 = uVar31" (identifier "uVar35") (= "=") (identifier "uVar31")) (; ";")) (if_statement "if (local_68 != '\0') {\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }" (if "if") (parenthesized_expression "(local_68 != '\0')" (( "(") (binary_expression "local_68 != '\0'" (identifier "local_68") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  uVar15 = local_94;\n                  if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }\n                  *puVar25 = uVar15;\n                  uVar35 = local_94;\n                  if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }\n                }" ({ "{") (expression_statement "uVar15 = local_94;" (assignment_expression "uVar15 = local_94" (identifier "uVar15") (= "=") (identifier "local_94")) (; ";")) (if_statement "if (local_98 != uVar9) {\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }" (if "if") (parenthesized_expression "(local_98 != uVar9)" (( "(") (binary_expression "local_98 != uVar9" (identifier "local_98") (!= "!=") (identifier "uVar9")) () ")")) (compound_statement "{\n                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);\n                  }" ({ "{") (expression_statement "uVar15 = *(uint *)(local_a8 + uVar9 * 4);" (assignment_expression "uVar15 = *(uint *)(local_a8 + uVar9 * 4)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(local_a8 + uVar9 * 4)" (* "*") (cast_expression "(uint *)(local_a8 + uVar9 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_a8 + uVar9 * 4)" (( "(") (binary_expression "local_a8 + uVar9 * 4" (identifier "local_a8") (+ "+") (binary_expression "uVar9 * 4" (identifier "uVar9") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "*puVar25 = uVar15;" (assignment_expression "*puVar25 = uVar15" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (identifier "uVar15")) (; ";")) (expression_statement "uVar35 = local_94;" (assignment_expression "uVar35 = local_94" (identifier "uVar35") (= "=") (identifier "local_94")) (; ";")) (if_statement "if (local_98 != uVar31) {\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }" (if "if") (parenthesized_expression "(local_98 != uVar31)" (( "(") (binary_expression "local_98 != uVar31" (identifier "local_98") (!= "!=") (identifier "uVar31")) () ")")) (compound_statement "{\n                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);\n                  }" ({ "{") (expression_statement "uVar35 = *(uint *)(local_a8 + uVar31 * 4);" (assignment_expression "uVar35 = *(uint *)(local_a8 + uVar31 * 4)" (identifier "uVar35") (= "=") (pointer_expression "*(uint *)(local_a8 + uVar31 * 4)" (* "*") (cast_expression "(uint *)(local_a8 + uVar31 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_a8 + uVar31 * 4)" (( "(") (binary_expression "local_a8 + uVar31 * 4" (identifier "local_a8") (+ "+") (binary_expression "uVar31 * 4" (identifier "uVar31") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "*puVar25 = (int)local_dc + uVar15;" (assignment_expression "*puVar25 = (int)local_dc + uVar15" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "(int)local_dc + uVar15" (cast_expression "(int)local_dc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_dc")) (+ "+") (identifier "uVar15"))) (; ";")) (expression_statement "puVar25[1] = (int)local_dc + uVar35;" (assignment_expression "puVar25[1] = (int)local_dc + uVar35" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(int)local_dc + uVar35" (cast_expression "(int)local_dc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_dc")) (+ "+") (identifier "uVar35"))) (; ";")) (} "}"))) (expression_statement "uVar30 = uVar30 + 1;" (assignment_expression "uVar30 = uVar30 + 1" (identifier "uVar30") (= "=") (binary_expression "uVar30 + 1" (identifier "uVar30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 2;" (assignment_expression "puVar25 = puVar25 + 2" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 2" (identifier "puVar25") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (uVar30 == param_7) break;" (if "if") (parenthesized_expression "(uVar30 == param_7)" (( "(") (binary_expression "uVar30 == param_7" (identifier "uVar30") (== "==") (identifier "param_7")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar9 = *puVar25;" (assignment_expression "uVar9 = *puVar25" (identifier "uVar9") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (} "}"))) (if_statement "if (0 < local_f0) {\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }" (if "if") (parenthesized_expression "(0 < local_f0)" (( "(") (binary_expression "0 < local_f0" (number_literal "0") (< "<") (identifier "local_f0")) () ")")) (compound_statement "{\n              puVar25 = param_8 + param_7 * 2;\n              do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);\n            }" ({ "{") (expression_statement "puVar25 = param_8 + param_7 * 2;" (assignment_expression "puVar25 = param_8 + param_7 * 2" (identifier "puVar25") (= "=") (binary_expression "param_8 + param_7 * 2" (identifier "param_8") (+ "+") (binary_expression "param_7 * 2" (identifier "param_7") (* "*") (number_literal "2")))) (; ";")) (do_statement "do {\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);" (do "do") (compound_statement "{\n                *puVar25 = 0xffffffff;\n                puVar24 = puVar25 + 2;\n                puVar25[1] = 0xffffffff;\n                puVar25 = puVar24;\n              }" ({ "{") (expression_statement "*puVar25 = 0xffffffff;" (assignment_expression "*puVar25 = 0xffffffff" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar24 = puVar25 + 2;" (assignment_expression "puVar24 = puVar25 + 2" (identifier "puVar24") (= "=") (binary_expression "puVar25 + 2" (identifier "puVar25") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar25[1] = 0xffffffff;" (assignment_expression "puVar25[1] = 0xffffffff" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar25 = puVar24;" (assignment_expression "puVar25 = puVar24" (identifier "puVar25") (= "=") (identifier "puVar24")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_8 + (local_f0 + param_7) * 2 != puVar24)" (( "(") (binary_expression "param_8 + (local_f0 + param_7) * 2 != puVar24" (binary_expression "param_8 + (local_f0 + param_7) * 2" (identifier "param_8") (+ "+") (binary_expression "(local_f0 + param_7) * 2" (parenthesized_expression "(local_f0 + param_7)" (( "(") (binary_expression "local_f0 + param_7" (identifier "local_f0") (+ "+") (identifier "param_7")) () ")")) (* "*") (number_literal "2"))) (!= "!=") (identifier "puVar24")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar14 = (int *)piVar37[0x21];" (assignment_expression "piVar14 = (int *)piVar37[0x21]" (identifier "piVar14") (= "=") (cast_expression "(int *)piVar37[0x21]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar37[0x21]" (identifier "piVar37") ([ "[") (number_literal "0x21") (] "]")))) (; ";")) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_154 = uVar12;" (assignment_expression "local_154 = uVar12" (identifier "local_154") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if (piVar14 != (int *)0x0) {\n              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\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              puVar25 = param_8;\n              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }\n            }" ({ "{") (expression_statement "puVar25 = param_8;" (assignment_expression "puVar25 = param_8" (identifier "puVar25") (= "=") (identifier "param_8")) (; ";")) (for_statement "for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }" (for "for") (( "(") (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";") (binary_expression "iVar10 != param_7 - 1" (identifier "iVar10") (!= "!=") (binary_expression "param_7 - 1" (identifier "param_7") (- "-") (number_literal "1"))) (; ";") (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n                if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }\n                piVar14 = piVar14 + 1;\n                puVar25 = puVar25 + 2;\n              }" ({ "{") (if_statement "if (*piVar14 != iVar10) {\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }" (if "if") (parenthesized_expression "(*piVar14 != iVar10)" (( "(") (binary_expression "*piVar14 != iVar10" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (!= "!=") (identifier "iVar10")) () ")")) (compound_statement "{\n                  puVar25[2] = param_8[(*piVar14 + 1) * 2];\n                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];\n                }" ({ "{") (expression_statement "puVar25[2] = param_8[(*piVar14 + 1) * 2];" (assignment_expression "puVar25[2] = param_8[(*piVar14 + 1) * 2]" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_8[(*piVar14 + 1) * 2]" (identifier "param_8") ([ "[") (binary_expression "(*piVar14 + 1) * 2" (parenthesized_expression "(*piVar14 + 1)" (( "(") (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];" (assignment_expression "puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1]" (subscript_expression "puVar25[3]" (identifier "puVar25") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "param_8[(*piVar14 + 1) * 2 + 1]" (identifier "param_8") ([ "[") (binary_expression "(*piVar14 + 1) * 2 + 1" (binary_expression "(*piVar14 + 1) * 2" (parenthesized_expression "(*piVar14 + 1)" (( "(") (binary_expression "*piVar14 + 1" (pointer_expression "*piVar14" (* "*") (identifier "piVar14")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2")) (+ "+") (number_literal "1")) (] "]"))) (; ";")) (} "}"))) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar25 = puVar25 + 2;" (assignment_expression "puVar25 = puVar25 + 2" (identifier "puVar25") (= "=") (binary_expression "puVar25 + 2" (identifier "puVar25") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";")) (} "}"))) (expression_statement "*param_8 = 0;" (assignment_expression "*param_8 = 0" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_8[1] = local_58;" (assignment_expression "param_8[1] = local_58" (subscript_expression "param_8[1]" (identifier "param_8") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_58")) (; ";")) (goto_statement "goto LAB_00034eb4;" (goto "goto") (statement_identifier "LAB_00034eb4") (; ";")) (} "}"))) (labeled_statement "LAB_00034950:\n        FUN_0002b440(&local_b4);" (statement_identifier "LAB_00034950") (: ":") (expression_statement "FUN_0002b440(&local_b4);" (call_expression "FUN_0002b440(&local_b4)" (identifier "FUN_0002b440") (argument_list "(&local_b4)" (( "(") (pointer_expression "&local_b4" (& "&") (identifier "local_b4")) () ")"))) (; ";"))) (expression_statement "param_4 = local_dc;" (assignment_expression "param_4 = local_dc" (identifier "param_4") (= "=") (identifier "local_dc")) (; ";")) (} "}"))) (expression_statement "param_4 = (uint *)((int)param_4 + iVar10);" (assignment_expression "param_4 = (uint *)((int)param_4 + iVar10)" (identifier "param_4") (= "=") (cast_expression "(uint *)((int)param_4 + iVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + iVar10)" (( "(") (binary_expression "(int)param_4 + iVar10" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (expression_statement "local_dc = param_4;" (assignment_expression "local_dc = param_4" (identifier "local_dc") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;" (if "if") (parenthesized_expression "(((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4))" (( "(") (binary_expression "((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)" (parenthesized_expression "((int)param_4 < (int)puVar25)" (( "(") (binary_expression "(int)param_4 < (int)puVar25" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (< "<") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) () ")")) (|| "||") (parenthesized_expression "(iVar33 = local_9c, (int)param_5 < (int)param_4)" (( "(") (comma_expression "iVar33 = local_9c, (int)param_5 < (int)param_4" (assignment_expression "iVar33 = local_9c" (identifier "iVar33") (= "=") (identifier "local_9c")) (, ",") (binary_expression "(int)param_5 < (int)param_4" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000345e4:\n  local_154 = 1;" (statement_identifier "LAB_000345e4") (: ":") (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" (identifier "local_154") (= "=") (number_literal "1")) (; ";"))) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";")) (labeled_statement "code_r0x000350f8:\n  local_154 = local_d8;" (statement_identifier "code_r0x000350f8") (: ":") (expression_statement "local_154 = local_d8;" (assignment_expression "local_154 = local_d8" (identifier "local_154") (= "=") (identifier "local_d8")) (; ";"))) (expression_statement "piVar18 = local_50;" (assignment_expression "piVar18 = local_50" (identifier "piVar18") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_d8 == 0xc) goto LAB_0003423c;" (if "if") (parenthesized_expression "(local_d8 == 0xc)" (( "(") (binary_expression "local_d8 == 0xc" (identifier "local_d8") (== "==") (number_literal "0xc")) () ")")) (goto_statement "goto LAB_0003423c;" (goto "goto") (statement_identifier "LAB_0003423c") (; ";"))) (expression_statement "uVar23 = 0x431;" (assignment_expression "uVar23 = 0x431" (identifier "uVar23") (= "=") (number_literal "0x431")) (; ";")) (labeled_statement "LAB_00035118:\n  (*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );" (statement_identifier "LAB_00035118") (: ":") (expression_statement "(*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            );" (call_expression "(*(code *)PTR___assert_fail_00053378)\n            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            )" (parenthesized_expression "(*(code *)PTR___assert_fail_00053378)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_00053378" (* "*") (cast_expression "(code *)PTR___assert_fail_00053378" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_00053378"))) () ")")) (argument_list "(PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620\n            )" (( "(") (binary_expression "PTR_UINT_00053118 + 0x2114" (identifier "PTR_UINT_00053118") (+ "+") (number_literal "0x2114")) (, ",") (binary_expression "PTR_UINT_00053118 + 0x2098" (identifier "PTR_UINT_00053118") (+ "+") (number_literal "0x2098")) (, ",") (identifier "uVar23") (, ",") (binary_expression "PTR_UINT_00053118 + 0x2620" (identifier "PTR_UINT_00053118") (+ "+") (number_literal "0x2620")) () ")"))) (; ";"))) (expression_statement "uVar9 = extraout_v1;" (assignment_expression "uVar9 = extraout_v1" (identifier "uVar9") (= "=") (identifier "extraout_v1")) (; ";")) (expression_statement "param_1 = &local_b4;" (assignment_expression "param_1 = &local_b4" (identifier "param_1") (= "=") (pointer_expression "&local_b4" (& "&") (identifier "local_b4"))) (; ";")) (labeled_statement "LAB_00035138:\n  uVar30 = 8;" (statement_identifier "LAB_00035138") (: ":") (expression_statement "uVar30 = 8;" (assignment_expression "uVar30 = 8" (identifier "uVar30") (= "=") (number_literal "8")) (; ";"))) (goto_statement "goto LAB_0003412c;" (goto "goto") (statement_identifier "LAB_0003412c") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (pointer_expression argument: (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 (pointer_expression argument: (identifier)) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (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 (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (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: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (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: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal)))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (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 (identifier)) arguments: (argument_list (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) 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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (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 (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (labeled_statement label: (statement_identifier) (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: (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (return_statement (identifier)))) (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 (identifier)) arguments: (argument_list (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (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))) (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: (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 (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) 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 (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (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: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (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: (compound_statement (expression_statement (assignment_expression left: (identifier) 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: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (number_literal) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (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: (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (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: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) 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))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))))) arguments: (argument_list)))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (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: (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: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))))))) (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))) (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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (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: (parenthesized_expression (parenthesized_expression (binary_expression left: (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: (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (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: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier) (pointer_expression argument: (identifier)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))))) (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: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (pointer_expression argument: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (pointer_expression argument: (identifier)) (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: (subscript_expression argument: (identifier) index: (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: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) 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 (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (unary_expression argument: (identifier)))))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (break_statement)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (binary_expression left: (identifier) right: (number_literal)) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (identifier))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (false)))))) (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))))) (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal)) (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: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal))))) (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal)) (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (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 (binary_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: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (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: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (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 (binary_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: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (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)))))) (while_statement condition: (parenthesized_expression (true)) body: (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) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))) (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 (pointer_expression argument: (identifier)) (pointer_expression argument: (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: (identifier) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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 (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)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (binary_expression left: (identifier) right: (number_literal)) (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 (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (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 (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (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: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (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)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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: (binary_expression left: (identifier) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (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: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) 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)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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: (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: (identifier))) (for_statement initializer: (assignment_expression left: (identifier) right: (number_literal)) condition: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (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: (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) consequence: (break_statement))) condition: (parenthesized_expression (true))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_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 (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))))

uint MASKED(int *param_1,int param_2,uint param_3,uint *param_4,uint *param_5,uint param_6,
                 uint param_7,uint *param_8,uint param_9)

{
  byte bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  bool bVar5;
  undefined *puVar6;
  undefined *puVar7;
  undefined *puVar8;
  uint uVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  uint **ppuVar13;
  int *piVar14;
  uint uVar15;
  code *pcVar16;
  code *pcVar17;
  int *piVar18;
  int *piVar19;
  char cVar26;
  code *pcVar20;
  code *pcVar21;
  uint uVar22;
  undefined4 uVar23;
  uint *puVar24;
  uint *puVar25;
  bool bVar27;
  uint extraout_v1;
  code *pcVar28;
  uint uVar29;
  uint uVar30;
  uint uVar31;
  int *piVar32;
  int iVar33;
  int iVar34;
  uint uVar35;
  int iVar36;
  int *piVar37;
  int iVar38;
  uint local_160;
  int *local_15c;
  uint local_154;
  char *local_150;
  uint **local_14c;
  uint local_140;
  int local_f0;
  uint *local_dc;
  uint local_d8;
  uint local_d4;
  int *local_d0;
  int *local_cc;
  int local_c8;
  uint local_c4;
  undefined4 local_c0;
  undefined4 local_bc;
  undefined4 local_b8;
  int local_b4;
  int local_b0;
  int *local_ac;
  int local_a8;
  int local_9c;
  uint local_98;
  uint local_94;
  uint local_90;
  uint local_8c;
  uint local_88;
  uint local_84;
  uint local_80;
  uint local_7c;
  undefined4 local_78;
  int local_74;
  int *local_70;
  byte local_6c;
  byte local_6b;
  byte local_6a;
  byte local_69;
  char local_68;
  byte local_67;
  byte local_66;
  int local_64;
  int *local_60;
  uint local_5c;
  uint local_58;
  int local_54;
  int *local_50;
  int local_4c;
  undefined4 local_48;
  int local_44;
  int local_40;
  int local_3c;
  int local_34;
  int local_30;
  int local_2c;
  
  puVar8 = PTR___stack_chk_guard_000534f0;
  local_2c = *(int *)PTR___stack_chk_guard_000534f0;
  piVar37 = (int *)*param_1;
  (*(code *)PTR_memset_00053430)(&local_b4,0,0x88);
  local_150 = (char *)param_1[4];
  if (local_150 != (char *)0x0) {
    if (((*(byte *)(param_1 + 7) & 0x10) == 0) || (param_4 == param_5)) {
      local_150 = (char *)0x0;
    }
    else if ((char)*(byte *)(param_1 + 7) < '\0') {
      local_150 = (char *)0x0;
    }
  }
  uVar9 = param_1[6];
  if (uVar9 < param_7) {
    local_f0 = (param_7 - 1) - uVar9;
    param_7 = param_7 + (uVar9 - (param_7 - 1));
    iVar10 = param_1[2];
  }
  else {
    iVar10 = param_1[2];
    local_f0 = 0;
  }
  local_60 = piVar37;
  if ((((iVar10 == 0) || (piVar37[9] == 0)) || (piVar37[10] == 0)) ||
     ((piVar37[0xb] == 0 || (piVar37[0xc] == 0)))) {
LAB_000341d0:
    local_154 = 1;
    goto LAB_000341d4;
  }
  if (((*(int *)(piVar37[9] + 8) == 0) && (*(int *)(piVar37[10] + 8) == 0)) &&
     ((*(int *)(piVar37[0xb] + 8) == 0 || ((*(byte *)(param_1 + 7) & 1) == 0)))) {
    if (param_4 == (uint *)0x0) {
      param_5 = (uint *)0x0;
    }
    else {
      if (param_5 != (uint *)0x0) goto LAB_000341d0;
      param_4 = (uint *)0x0;
    }
  }
  if (param_7 == 0) {
    bVar27 = piVar37[0x13] != 0;
  }
  else {
    bVar27 = true;
  }
  local_64 = piVar37[0x17];
  iVar33 = param_1[5];
  iVar10 = piVar37[2] + 1;
  if (piVar37[2] + 1 < local_64) {
    iVar10 = local_64;
  }
  local_6c = (byte)((uint)(param_1[3] << 9) >> 0x18);
  local_69 = 1;
  if (iVar33 == 0) {
    local_69 = local_6c >> 7;
  }
  iVar34 = param_3 + 1;
  if (iVar10 <= (int)(param_3 + 1)) {
    iVar34 = iVar10;
  }
  local_6c = local_6c >> 7;
  local_6b = (byte)((uint)(piVar37[0x16] << 2) >> 0x1f);
  local_6a = (byte)((uint)(piVar37[0x16] << 3) >> 0x1f);
  local_b4 = param_2;
  local_88 = param_3;
  local_84 = param_3;
  local_80 = param_3;
  local_7c = param_3;
  local_74 = iVar33;
  local_154 = FUN_00029938(&local_b4,iVar34);
  piVar18 = local_50;
  if (local_154 != 0) {
LAB_0003423c:
    while( true ) {
      (*(code *)PTR_free_000534fc)(piVar18);
      if (piVar37[0x13] != 0) {
LAB_00034290:
        FUN_0002b440(&local_b4);
        (*(code *)PTR_free_000534fc)(local_30);
        (*(code *)PTR_free_000534fc)(local_40);
      }
LAB_00034250:
      FUN_0002b3d0(&local_b4);
LAB_000341d4:
      if (local_2c == *(int *)puVar8) break;
      local_154 = (*(code *)PTR___stack_chk_fail_000534d4)();
      piVar18 = local_50;
    }
    return local_154;
  }
  local_70 = piVar37 + 0x18;
  local_66 = (byte)((uint)(piVar37[0x16] << 4) >> 0x1f);
  if ((local_69 != 0) || (local_b0 = param_2, local_98 = param_3, 1 < piVar37[0x17])) {
    local_98 = 0;
  }
  local_7c = param_6;
  local_80 = param_6;
  local_94 = local_98;
  local_67 = (byte)((uint)(param_1[7] << 7) >> 0x1f);
  iVar10 = piVar37[0x13];
  iVar34 = iVar10 * 2;
  local_5c = param_9;
  local_58 = 0xffffffff;
  if (0 < iVar34) {
    if (0xccccccc < iVar34) goto LAB_00034274;
    iVar11 = (*(code *)PTR_malloc_00053474)(iVar10 * 0x28);
    local_40 = iVar11;
    local_30 = (*(code *)PTR_malloc_00053474)(iVar10 * 8);
    if ((iVar11 == 0) || (local_30 == 0)) goto LAB_00034274;
  }
  local_44 = iVar34;
  local_34 = iVar34;
  bVar2 = 1 < param_7;
  local_3c = 1;
  if ((bVar2) || ((*(byte *)(piVar37 + 0x16) & 0x40) != 0)) {
    if (0x3ffffffe < local_90) {
LAB_00034274:
      local_154 = 0xc;
      (*(code *)PTR_free_000534fc)(local_50);
      if (piVar37[0x13] == 0) goto LAB_00034250;
      goto LAB_00034290;
    }
    local_50 = (int *)(*(code *)PTR_malloc_00053474)((local_90 + 1) * 4);
    piVar18 = local_50;
    if (local_50 == (int *)0x0) {
LAB_00034230:
      local_154 = 0xc;
      goto LAB_0003423c;
    }
  }
  else {
    local_50 = (int *)0x0;
  }
  iVar34 = piVar37[0x17];
  iVar10 = -1;
  local_dc = param_4;
  local_78 = 6;
  if ((param_9 & 1) != 0) {
    local_78 = 4;
  }
  uVar9 = (uint)((int)param_5 < (int)param_4);
  puVar25 = param_5;
  if (uVar9 == 0) {
    iVar10 = 1;
    puVar25 = param_4;
  }
  if ((int)param_5 <= (int)param_4) {
    param_5 = param_4;
  }
  if (local_150 == (char *)0x0) goto LAB_00035138;
  uVar12 = 4;
  if (((iVar34 != 1) && (uVar12 = 0, -1 < param_1[3] << 9)) && (uVar12 = 4, iVar33 != 0)) {
    uVar12 = 0;
  }
  uVar30 = 2;
  if (uVar9 != 0) {
    uVar30 = 0;
  }
  uVar30 = iVar33 != 0 | uVar12 | uVar30;
LAB_0003412c:
  puVar6 = PTR_LAB_0005332c;
  if (((int)puVar25 <= (int)param_4) && ((int)param_4 <= (int)param_5)) {
    ppuVar13 = &local_dc;
    if (uVar9 != 0) {
      ppuVar13 = (uint **)0x0;
    }
    piVar14 = (int *)(PTR_UINT_00053118 + (uVar30 - 4) * 4 + 0x21d4);
    pcVar28 = (code *)(PTR_LAB_0005332c + -0xe80);
    iVar33 = local_9c;
    do {
      if (uVar30 - 4 < 5) {
                    /* WARNING: Could not recover jumptable at 0x000341b8. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar9 = (*(code *)(&_gp_1 + *piVar14))();
        return uVar9;
      }
      local_9c = iVar33;
      while( true ) {
        uVar9 = (int)param_4 - iVar33;
        if (local_94 <= uVar9) {
          local_154 = (*(code *)(puVar6 + -0x1ac4))(&local_b4,param_4,param_9);
          piVar18 = local_50;
          if (local_154 != 0) goto LAB_0003423c;
          uVar9 = (int)param_4 - local_9c;
          iVar33 = local_9c;
        }
        if ((int)param_4 < (int)param_3) {
          cVar26 = local_150[*(byte *)(local_b0 + uVar9)];
        }
        else {
          cVar26 = *local_150;
        }
        if (cVar26 != '\0') break;
        param_4 = (uint *)((int)param_4 + iVar10);
        local_dc = param_4;
        if (((int)param_4 < (int)puVar25) || ((int)param_5 < (int)param_4)) goto LAB_000345e4;
      }
      uVar12 = FUN_0002e53c(&local_b4,param_4,param_9);
      piVar32 = local_60;
      uVar9 = local_8c;
      piVar18 = local_50;
      local_154 = uVar12;
      if (uVar12 != 0) goto LAB_0003423c;
      if (((iVar34 == 1) || (local_98 == 0)) || (*local_ac != -1)) {
        local_3c = 0;
        local_48 = 0;
        iVar33 = local_60[9];
        local_140 = local_8c;
        local_4c = 0;
        local_d8 = 0;
        if ((*(byte *)(iVar33 + 0x34) & 1) != 0) {
          uVar15 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);
          if ((uVar15 & 1) == 0) {
            if (uVar15 == 0) goto LAB_000343a0;
            if ((uVar15 & 6) == 6) {
              iVar33 = piVar32[0xc];
            }
            else if ((uVar15 & 2) == 0) {
              if ((uVar15 & 4) == 0) goto LAB_000343a0;
              iVar33 = FUN_0002d33c(&local_d8,piVar32,*(undefined4 *)(iVar33 + 0x28),uVar15);
            }
            else {
              iVar33 = piVar32[0xb];
            }
          }
          else {
            iVar33 = piVar32[10];
          }
          if (iVar33 == 0) goto code_r0x000350f8;
        }
LAB_000343a0:
        bVar4 = ppuVar13 != (uint **)0x0;
        if ((local_50 == (int *)0x0) ||
           (iVar11 = piVar32[0x13], local_50[uVar9] = iVar33, iVar11 == 0)) {
LAB_000343c4:
          if (*(int *)(iVar33 + 0x34) << 4 < 0) {
            if (((*(byte *)(iVar33 + 0x34) & 1) == 0) ||
               (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar9),
               iVar11 != 0)) {
              uVar15 = uVar9;
              bVar5 = bVar27;
              if (!bVar27) goto LAB_00034760;
            }
            else {
              uVar9 = 0xffffffff;
              bVar5 = false;
            }
          }
          else {
            uVar9 = 0xffffffff;
            bVar5 = false;
          }
          pcVar16 = (code *)(PTR_LAB_0005332c + -0x576c);
          pcVar17 = (code *)(PTR_LAB_0005332c + 0x17e0);
          uVar15 = local_8c;
          local_14c = ppuVar13;
          while ((int)uVar15 < (int)local_7c) {
            uVar35 = uVar15 + 1;
            if ((((int)uVar35 < (int)local_90) || ((int)local_84 <= (int)local_90)) &&
               (((int)uVar35 < (int)local_98 || ((int)local_84 <= (int)local_98)))) {
              iVar11 = *(int *)(iVar33 + 0x34);
              piVar18 = local_60;
            }
            else {
              local_d8 = (*pcVar16)(&local_b4,uVar15 + 2);
              if (local_d8 != 0) {
                if (local_d8 == 0xc) goto LAB_00034274;
                uVar23 = 0x468;
                goto LAB_00035118;
              }
              iVar11 = *(int *)(iVar33 + 0x34);
              uVar15 = local_8c;
              piVar18 = local_60;
            }
            local_60 = piVar18;
            if (iVar11 << 5 < 0) {
              iVar11 = *(int *)(iVar33 + 8);
              if (0 < iVar11) {
                param_4 = (uint *)0x0;
                pcVar20 = (code *)(PTR_LAB_0005332c + -0x55a0);
                pcVar21 = (code *)(PTR_LAB_0005332c + -0x1ec0);
                do {
                  iVar36 = *piVar18;
                  iVar38 = *(int *)(*(int *)(iVar33 + 0xc) + (int)param_4 * 4);
                  uVar31 = *(uint *)(iVar36 + iVar38 * 8 + 4);
                  if ((uVar31 & 0x800) != 0) {
                    if ((uVar31 & 0xffc000) != 0) {
                      uVar22 = (*pcVar21)(&local_b4,uVar15,local_5c);
                      uVar31 = (uVar31 << 8) >> 0x16;
                      if ((uVar31 & 4) == 0) {
                        uVar29 = uVar22 & 1;
                        if ((uVar31 & 8) != 0) goto joined_r0x00034b90;
                      }
                      else {
                        uVar29 = uVar31 & 8;
                        if ((uVar22 & 1) == 0) goto LAB_00034cec;
joined_r0x00034b90:
                        if (uVar29 != 0) goto LAB_00034cec;
                      }
                      if ((((uVar31 & 0x20) != 0) && ((uVar22 & 2) == 0)) ||
                         (((uVar31 & 0x80) != 0 && ((uVar22 & 8) == 0)))) goto LAB_00034cec;
                    }
                    iVar11 = (*pcVar17)(iVar36,piVar18 + 0x20,iVar38,&local_b4,uVar15);
                    if (iVar11 != 0) {
                      if (local_3c < iVar11) {
                        local_3c = iVar11;
                      }
                      iVar11 = iVar11 + local_8c;
                      local_d4 = (*pcVar20)(&local_b4,iVar11);
                      uVar15 = local_d4;
                      if (local_d4 != 0) goto joined_r0x00034dec;
                      piVar19 = local_50 + iVar11;
                      iVar36 = *piVar19;
                      piVar32 = (int *)(piVar18[6] + *(int *)(piVar18[3] + iVar38 * 4) * 0xc);
                      if (iVar36 == 0) {
                        local_d0 = (int *)*piVar32;
                        local_cc = (int *)piVar32[1];
                        local_c8 = piVar32[2];
                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);
                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);
                        *piVar19 = iVar36;
                      }
                      else {
                        local_d4 = FUN_0002d140(&local_d0,*(undefined4 *)(iVar36 + 0x28));
                        uVar15 = local_d4;
                        if (local_d4 != 0) goto joined_r0x00034dec;
                        uVar23 = (*pcVar21)(&local_b4,iVar11 + -1,local_5c);
                        piVar32 = local_50 + iVar11;
                        iVar36 = FUN_0002d33c(&local_d4,piVar18,&local_d0,uVar23);
                        puVar7 = PTR_free_000534fc;
                        *piVar32 = iVar36;
                        (*(code *)puVar7)(local_c8);
                      }
                      if ((local_50[iVar11] == 0) && (uVar15 = local_d4, local_d4 != 0))
                      goto joined_r0x00034dec;
                    }
                    iVar11 = *(int *)(iVar33 + 8);
                    uVar15 = local_8c;
                  }
LAB_00034cec:
                  param_4 = (uint *)((int)param_4 + 1);
                } while ((int)param_4 < iVar11);
              }
              local_d8 = 0;
            }
            local_8c = uVar15 + 1;
            uVar15 = (uint)*(byte *)(local_b0 + uVar15);
            do {
              if (*(int *)(iVar33 + 0x2c) != 0) {
                iVar11 = *(int *)(*(int *)(iVar33 + 0x2c) + uVar15 * 4);
LAB_0003446c:
                if (local_50 != (int *)0x0) goto LAB_00034478;
                goto LAB_00034498;
              }
              iVar11 = *(int *)(iVar33 + 0x30);
              if (iVar11 != 0) {
                uVar31 = FUN_0002e140(&local_b4,local_8c - 1,local_5c);
                if ((uVar31 & 1) == 0) {
                  iVar11 = *(int *)(iVar11 + uVar15 * 4);
                }
                else {
                  iVar11 = *(int *)(iVar11 + (uVar15 + 0x100) * 4);
                }
                goto LAB_0003446c;
              }
              iVar11 = (*pcVar28)(local_60,iVar33);
            } while (iVar11 != 0);
            local_d8 = 0xc;
            uVar15 = local_d8;
joined_r0x00034dec:
            local_d8 = uVar15;
            if (local_50 == (int *)0x0) {
              piVar18 = (int *)0x0;
              goto LAB_00034230;
            }
            iVar11 = 0;
LAB_00034478:
            iVar11 = FUN_00033724(&local_d8,&local_b4,iVar11);
LAB_00034498:
            uVar15 = local_8c;
            if (iVar11 == 0) {
              piVar18 = local_50;
              if (local_d8 != 0) goto LAB_00034230;
              if ((local_50 == (int *)0x0) || ((bVar5 && (!bVar27)))) break;
              param_4 = &local_d8;
              do {
                bVar3 = false;
                piVar18 = local_50 + local_8c;
                uVar15 = local_8c;
                do {
                  uVar31 = uVar15 + 1;
                  piVar18 = piVar18 + 1;
                  if (local_4c < (int)uVar31) {
                    if (bVar3) {
                      local_8c = uVar15;
                    }
                    goto LAB_00034748;
                  }
                  bVar3 = true;
                  uVar15 = uVar31;
                } while (*piVar18 == 0);
                local_8c = uVar31;
                iVar11 = FUN_00033724(param_4,&local_b4,0);
                uVar15 = local_8c;
                if (local_d8 != 0) {
                  if (iVar11 == 0) goto LAB_00034748;
                  break;
                }
              } while (iVar11 == 0);
            }
            uVar31 = local_140;
            if ((bVar4) && (uVar31 = uVar35, iVar33 != iVar11)) {
              bVar4 = false;
              uVar31 = local_140;
            }
            local_140 = uVar31;
            iVar33 = iVar11;
            local_8c = uVar15;
            if (((*(byte *)(iVar11 + 0x34) & 8) != 0) &&
               (((*(byte *)(iVar11 + 0x34) & 1) == 0 ||
                (iVar11 = FUN_0002e41c(&local_b4,*(undefined4 *)(iVar11 + 8),iVar11 + 0xc,uVar15),
                iVar11 != 0)))) {
              if (!bVar27) goto LAB_00034760;
              local_14c = (uint **)0x0;
              uVar9 = uVar15;
              bVar5 = bVar27;
            }
          }
LAB_00034748:
          uVar15 = uVar9;
          if (local_14c != (uint **)0x0) {
            *local_14c = (uint *)((int)*local_14c + local_140);
          }
        }
        else {
          uVar15 = FUN_0002dfb4(&local_b4,iVar33 + 8,iVar33 + 0xc,0);
          local_d8 = uVar15;
          if (uVar15 == 0) {
            if ((*(byte *)(iVar33 + 0x34) & 2) == 0) {
              bVar4 = false;
            }
            else {
              uVar15 = FUN_00032d38(&local_b4,iVar33 + 8,iVar33 + 0xc);
              local_d8 = uVar15;
              if (uVar15 != 0) goto LAB_00034760;
              bVar4 = false;
            }
            goto LAB_000343c4;
          }
        }
LAB_00034760:
        piVar18 = local_50;
        puVar7 = PTR_LAB_0005332c;
        if (uVar15 != 0xffffffff) {
          if (uVar15 == 0xfffffffe) goto LAB_00034274;
          local_58 = uVar15;
          if ((*(byte *)(param_1 + 7) & 8) == 0) {
            if (!bVar2) {
              iVar33 = piVar37[0x13];
              goto joined_r0x00034fc8;
            }
            local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),
                                    local_50[uVar15] + 0xc,uVar15);
            if ((*(char *)(piVar37 + 0x16) < '\0') || (piVar37[0x13] != 0)) goto LAB_000347ec;
          }
          else {
            iVar33 = piVar37[0x13];
joined_r0x00034fc8:
            if (iVar33 != 0) {
              local_54 = FUN_0002e41c(&local_b4,*(undefined4 *)(local_50[uVar15] + 8),
                                      local_50[uVar15] + 0xc,uVar15);
LAB_000347ec:
              iVar33 = local_54;
              piVar32 = local_60;
              if (uVar15 < 0x3fffffff) {
                local_160 = uVar15 + 1;
                piVar18 = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);
                if (piVar18 == (int *)0x0) goto LAB_00034274;
                if (piVar32[0x13] == 0) {
                  local_cc = (int *)0x0;
                  local_c0 = 0;
                  local_bc = 0;
                  local_b8 = 0;
                  local_d0 = piVar18;
                  local_c8 = iVar33;
                  local_c4 = uVar15;
                  local_154 = FUN_00033988(&local_b4,&local_d0);
                  (*(code *)PTR_free_000534fc)(local_b8);
                  if (local_154 == 0) {
                    if (*piVar18 == 0) {
                      (*(code *)PTR_free_000534fc)(piVar18);
                      goto LAB_00034950;
                    }
LAB_00035074:
                    (*(code *)PTR_free_000534fc)(local_50);
                    local_58 = uVar15;
                    local_54 = iVar33;
                    local_50 = piVar18;
                    goto LAB_00034e5c;
                  }
LAB_00035394:
                  local_15c = (int *)0x0;
                }
                else {
                  local_15c = (int *)(*(code *)PTR_malloc_00053474)(local_160 * 4);
                  if (local_15c == (int *)0x0) {
                    (*(code *)PTR_free_000534fc)(piVar18);
                    local_154 = 0xc;
                    piVar18 = local_50;
                    goto LAB_0003423c;
                  }
                  pcVar16 = (code *)(PTR_LAB_0005332c + 0x3988);
                  while( true ) {
                    (*(code *)PTR_memset_00053430)(local_15c,0,local_160 * 4);
                    local_c0 = 0;
                    local_bc = 0;
                    local_b8 = 0;
                    local_d0 = piVar18;
                    local_cc = local_15c;
                    local_c8 = iVar33;
                    local_c4 = uVar15;
                    local_154 = (*pcVar16)(&local_b4,&local_d0);
                    (*(code *)PTR_free_000534fc)(local_b8);
                    if (local_154 != 0) break;
                    if ((*piVar18 != 0) || (*local_15c != 0)) {
                      local_154 = FUN_0002da20(piVar32,piVar18,local_15c,local_160);
                      (*(code *)PTR_free_000534fc)(local_15c);
                      if (local_154 != 0) goto LAB_00035394;
                      goto LAB_00035074;
                    }
                    piVar19 = local_50 + (local_160 - 1);
                    local_160 = uVar15;
                    while( true ) {
                      uVar15 = local_160 - 1;
                      if (uVar15 == 0xffffffff) {
                        (*(code *)PTR_free_000534fc)(piVar18);
                        (*(code *)PTR_free_000534fc)(local_15c);
                        goto LAB_00034950;
                      }
                      iVar33 = piVar19[-1];
                      if ((iVar33 != 0) && ((*(byte *)(iVar33 + 0x34) & 8) != 0)) break;
                      piVar19 = piVar19 + -1;
                      local_160 = uVar15;
                    }
                    iVar33 = (*(code *)(puVar7 + -0x1be4))
                                       (&local_b4,*(undefined4 *)(iVar33 + 8),iVar33 + 0xc,uVar15);
                  }
                }
                (*(code *)PTR_free_000534fc)(piVar18);
                (*(code *)PTR_free_000534fc)(local_15c);
                piVar18 = local_50;
                if (local_154 == 1) goto LAB_00034950;
                goto LAB_0003423c;
              }
              local_154 = 0xc;
              goto LAB_0003423c;
            }
          }
LAB_00034e5c:
          piVar18 = local_50;
          local_154 = uVar12;
          if (param_7 == 0) goto LAB_0003423c;
          bVar1 = *(byte *)(param_1 + 7);
          if (bVar2) {
            puVar25 = param_8 + 2;
            do {
              puVar25[1] = 0xffffffff;
              puVar24 = puVar25 + 2;
              *puVar25 = 0xffffffff;
              puVar25 = puVar24;
            } while (param_8 + param_7 * 2 != puVar24);
            *param_8 = 0;
            param_8[1] = local_58;
            if ((bVar1 & 8) == 0) {
              if (*(char *)(piVar37 + 0x16) < '\0') {
                bVar27 = 0 < piVar37[0x13];
              }
              else {
                bVar27 = false;
              }
              local_154 = FUN_00032290(param_1,&local_b4,param_7,param_8,bVar27);
              piVar18 = local_50;
              if (local_154 != 0) goto LAB_0003423c;
              uVar9 = *param_8;
            }
            else {
LAB_00034eb4:
              uVar9 = 0;
            }
            uVar30 = 0;
            puVar25 = param_8;
            while( true ) {
              if (uVar9 != 0xffffffff) {
                uVar31 = puVar25[1];
                uVar15 = uVar9;
                uVar35 = uVar31;
                if (local_68 != '\0') {
                  uVar15 = local_94;
                  if (local_98 != uVar9) {
                    uVar15 = *(uint *)(local_a8 + uVar9 * 4);
                  }
                  *puVar25 = uVar15;
                  uVar35 = local_94;
                  if (local_98 != uVar31) {
                    uVar35 = *(uint *)(local_a8 + uVar31 * 4);
                  }
                }
                *puVar25 = (int)local_dc + uVar15;
                puVar25[1] = (int)local_dc + uVar35;
              }
              uVar30 = uVar30 + 1;
              puVar25 = puVar25 + 2;
              if (uVar30 == param_7) break;
              uVar9 = *puVar25;
            }
            if (0 < local_f0) {
              puVar25 = param_8 + param_7 * 2;
              do {
                *puVar25 = 0xffffffff;
                puVar24 = puVar25 + 2;
                puVar25[1] = 0xffffffff;
                puVar25 = puVar24;
              } while (param_8 + (local_f0 + param_7) * 2 != puVar24);
            }
            piVar14 = (int *)piVar37[0x21];
            piVar18 = local_50;
            local_154 = uVar12;
            if (piVar14 != (int *)0x0) {
              puVar25 = param_8;
              for (iVar10 = 0; iVar10 != param_7 - 1; iVar10 = iVar10 + 1) {
                if (*piVar14 != iVar10) {
                  puVar25[2] = param_8[(*piVar14 + 1) * 2];
                  puVar25[3] = param_8[(*piVar14 + 1) * 2 + 1];
                }
                piVar14 = piVar14 + 1;
                puVar25 = puVar25 + 2;
              }
            }
            goto LAB_0003423c;
          }
          *param_8 = 0;
          param_8[1] = local_58;
          goto LAB_00034eb4;
        }
LAB_00034950:
        FUN_0002b440(&local_b4);
        param_4 = local_dc;
      }
      param_4 = (uint *)((int)param_4 + iVar10);
      local_dc = param_4;
      if (((int)param_4 < (int)puVar25) || (iVar33 = local_9c, (int)param_5 < (int)param_4)) break;
    } while( true );
  }
LAB_000345e4:
  local_154 = 1;
  piVar18 = local_50;
  goto LAB_0003423c;
code_r0x000350f8:
  local_154 = local_d8;
  piVar18 = local_50;
  if (local_d8 == 0xc) goto LAB_0003423c;
  uVar23 = 0x431;
LAB_00035118:
  (*(code *)PTR___assert_fail_00053378)
            (PTR_UINT_00053118 + 0x2114,PTR_UINT_00053118 + 0x2098,uVar23,PTR_UINT_00053118 + 0x2620
            );
  uVar9 = extraout_v1;
  param_1 = &local_b4;
LAB_00035138:
  uVar30 = 8;
  goto LAB_0003412c;
}

