
/* WARNING: Type propagation algorithm not settling */

bin_tree_t *
build_charclass_op(re_dfa_t *dfa,uchar *trans,char *class_name,char *extra,_Bool non_match,
                  reg_errcode_t *err)

{
  byte bVar1;
  byte bVar2;
  undefined *puVar3;
  undefined4 *puVar4;
  anon_union_4_5_a39f51ca_for_opr sbcset;
  reg_errcode_t rVar5;
  uint uVar6;
  wchar_t **ppwVar7;
  re_string_t *prVar8;
  byte *pbVar9;
  int *piVar10;
  undefined1 *puVar11;
  re_string_t *prVar12;
  undefined4 uVar13;
  int iVar14;
  int *piVar15;
  size_t sVar16;
  char cVar20;
  bin_tree_t *pbVar17;
  byte *pbVar18;
  bin_tree_t *pbVar19;
  undefined4 *puVar21;
  int iVar22;
  re_bitset_ptr_t pbVar23;
  bin_tree_t *pbVar24;
  anon_union_4_5_a39f51ca_for_opr aVar25;
  uint uVar26;
  uint *puVar27;
  re_string_t *mbcset;
  re_string_t *prVar28;
  re_string_t *ps;
  bin_tree_t *pbVar29;
  re_string_t *token;
  re_string_t *prVar30;
  re_string_t *pstr;
  bin_tree_t **ppbVar31;
  int iVar32;
  int *piVar33;
  undefined *puVar34;
  bin_tree_t *pbVar35;
  bin_tree_t *pbVar36;
  bin_tree_t *pbVar37;
  undefined1 *puVar38;
  uint uVar39;
  anon_union_4_5_a39f51ca_for_opr unaff_s5;
  anon_union_4_5_a39f51ca_for_opr unaff_s6;
  undefined1 *puVar40;
  undefined1 *puVar41;
  int iVar42;
  undefined *puVar43;
  undefined *idx;
  code *pcVar44;
  re_string_t *prStackY_1c8;
  undefined1 auStackY_1a8 [8];
  wint_t *pwStackY_1a0;
  re_string_t arStackY_19c [3];
  re_string_t *prStackY_9c;
  re_dfa_t *prStackY_98;
  undefined *puStackY_94;
  undefined *puStackY_90;
  reg_errcode_t *prStackY_8c;
  bin_tree_storage_t **ppbStackY_88;
  anon_union_4_5_a39f51ca_for_opr aStackY_84;
  anon_union_4_5_a39f51ca_for_opr aStackY_80;
  int *piStackY_7c;
  re_string_t *prStackY_78;
  code *pcStackY_74;
  Idx alloc;
  re_token_t br_token;
  re_token_t t;
  
  puVar3 = PTR___stack_chk_guard_000afc3c;
  aVar25.idx = 1;
  alloc = 0;
  puVar4 = *(undefined4 **)PTR___stack_chk_guard_000afc3c;
  puVar34 = (undefined *)(uint)non_match;
  mbcset = (re_string_t *)class_name;
  token = (re_string_t *)extra;
  sbcset.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x20);
  if (sbcset.sbcset == (re_bitset_ptr_t)0x0) {
LAB_00078814:
    sbcset = unaff_s5;
    prVar8 = (re_string_t *)0x0;
    *err = _REG_ESPACE;
  }
  else {
    aVar25.idx = 1;
    unaff_s6.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28);
    if ((re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0) {
      prVar8 = (re_string_t *)0x0;
      (*(code *)PTR_free_000afd08)(sbcset.sbcset);
      *err = _REG_ESPACE;
    }
    else {
      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;
      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;
      *(byte *)(unaff_s6.idx + 0x10) =
           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);
      aVar25.sbcset = sbcset.sbcset;
      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc
                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);
      if (rVar5 == _REG_NOERROR) {
        cVar20 = *extra;
        while (uVar26 = (uint)cVar20, uVar26 != 0) {
          uVar6 = uVar26;
          if ((int)uVar26 < 0) {
            uVar6 = uVar26 + 0x1f;
          }
          extra = extra + 1;
          cVar20 = *extra;
          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);
        }
        aVar25.sbcset = sbcset.sbcset;
        if (puVar34 != (undefined *)0x0) {
          do {
            ppwVar7 = &(aVar25.mbcset)->range_starts;
            *aVar25.sbcset = ~*aVar25.sbcset;
            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;
          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);
        }
        if (1 < dfa->mb_cur_max) {
          pbVar23 = dfa->sb_char;
          aVar25.sbcset = sbcset.sbcset;
          do {
            ppwVar7 = &(aVar25.mbcset)->range_starts;
            uVar26 = *pbVar23;
            pbVar23 = pbVar23 + 1;
            *aVar25.sbcset = *aVar25.sbcset & uVar26;
            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;
          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);
        }
        extra = (char *)&dfa->str_tree_storage;
        trans = (uchar *)&dfa->str_tree_storage_idx;
        puVar34 = PTR_LAB_000afa20 + 0x411c;
        token = (re_string_t *)0x0;
        mbcset = (re_string_t *)0x0;
        br_token._4_1_ = 3;
        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;
        br_token.opr.sbcset = sbcset.sbcset;
        prVar8 = (re_string_t *)
                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,
                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);
        prVar30 = token;
        if (prVar8 == (re_string_t *)0x0) {
LAB_000787f0:
          (*(code *)PTR_free_000afd08)(sbcset.sbcset);
          free_charset(unaff_s6.mbcset);
          token = prVar30;
          unaff_s5.sbcset = sbcset.sbcset;
          goto LAB_00078814;
        }
        if (dfa->mb_cur_max < 2) {
          free_charset(unaff_s6.mbcset);
        }
        else {
          prVar30 = (re_string_t *)0x0;
          mbcset = (re_string_t *)0x0;
          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;
          br_token._4_1_ = 6;
          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;
          br_token.opr.sbcset = unaff_s6.sbcset;
          token = (re_string_t *)
                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,
                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);
          if (token == (re_string_t *)0x0) goto LAB_000787f0;
          t._4_1_ = 10;
          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;
          prVar30 = (re_string_t *)
                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,
                                      (re_token_t *)token,(re_dfa_t *)&t);
          mbcset = prVar8;
          prVar8 = prVar30;
        }
      }
      else {
        prVar8 = (re_string_t *)0x0;
        (*(code *)PTR_free_000afd08)(sbcset.sbcset);
        free_charset(unaff_s6.mbcset);
        *err = rVar5;
      }
    }
  }
  if (puVar4 == *(undefined4 **)puVar3) {
    return (bin_tree_t *)prVar8;
  }
  pcVar44 = re_compile_fastmap_iter;
  puVar43 = PTR___stack_chk_fail_000afbd4;
  (*(code *)PTR___stack_chk_fail_000afbd4)();
  idx = puVar43 + 0x3eb90;
  puVar21 = *(undefined4 **)(puVar43 + 0x3739c);
  puStackY_94 = puVar3;
  piVar33 = (int *)*puVar4;
  prStackY_9c = (re_string_t *)*puVar21;
  prStackY_8c = err;
  if (piVar33[0x17] == 1) {
    uVar26 = (uint)(puVar4[3] << 9) >> 0x1f;
  }
  else {
    uVar26 = 0;
  }
  puVar27 = (uint *)(aVar25.mbcset)->mbchars;
  iVar32 = 0;
  prVar30 = prStackY_9c;
  prVar28 = mbcset;
  ps = mbcset;
  pstr = token;
  prStackY_98 = dfa;
  puStackY_90 = puVar34;
  ppbStackY_88 = (bin_tree_storage_t **)extra;
  aStackY_84 = sbcset;
  aStackY_80 = unaff_s6;
  piStackY_7c = (int *)trans;
  prStackY_78 = prVar8;
  pcStackY_74 = pcVar44;
  if (0 < (int)puVar27) {
    do {
      while( true ) {
        prVar30 = (re_string_t *)mbcset->raw_mbs;
        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];
        iVar22 = (int)pbVar37 * 8;
        pbVar9 = (byte *)(*piVar33 + iVar22);
        bVar1 = pbVar9[4];
        if (bVar1 != 1) break;
        bVar1 = *pbVar9;
        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;
        if (uVar26 != 0) {
          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();
          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;
        }
        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {
          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);
          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);
          if ((puVar38 < (undefined1 *)piVar33[2]) &&
             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),
             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {
            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);
            do {
              puVar41 = puVar40 + 1;
              puVar38 = puVar38 + 1;
              *puVar40 = *puVar11;
              if ((undefined1 *)piVar33[2] <= puVar38) break;
              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);
              puVar40 = puVar41;
            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);
            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);
          }
          else {
            prVar8 = (re_string_t *)0x1;
          }
          prStackY_1c8 = arStackY_19c;
          ps = (re_string_t *)(auStackY_1a8 + 4);
          prVar30 = (re_string_t *)auStackY_1a8;
          auStackY_1a8._4_4_ = (uchar *)0x0;
          pwStackY_1a0 = (wint_t *)0x0;
          prVar28 = prVar8;
          pstr = ps;
          prVar12 = (re_string_t *)
                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,
                                (mbstate_t *)ps);
          if (prVar12 != prVar8) goto LAB_00078a04;
          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);
          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);
          prVar30 = prStackY_1c8;
          prVar28 = ps;
          if (iVar22 == -1) goto LAB_00078a04;
          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;
          puVar27 = (uint *)*aVar25.sbcset;
        }
        else {
LAB_00078a04:
          puVar27 = (uint *)*aVar25.sbcset;
          prStackY_1c8 = prVar30;
          ps = prVar28;
        }
LAB_00078a08:
        iVar32 = iVar32 + 1;
        prVar30 = prStackY_1c8;
        prVar28 = ps;
        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;
      }
      if (bVar1 == 3) {
        iVar14 = 0x20;
        prStackY_1c8 = (re_string_t *)0x0;
        while( true ) {
          iVar42 = iVar14 + -0x20;
          uVar6 = 0;
          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);
          do {
            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&
               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {
              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);
              if (prVar28 != (re_string_t *)0x0) {
                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();
                prVar28 = (re_string_t *)(iVar42 * 4);
                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))
                     = 1;
              }
            }
            iVar42 = iVar42 + 1;
            uVar6 = uVar6 + 1;
          } while (iVar14 != iVar42);
          iVar14 = iVar14 + 0x20;
          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);
          if (iVar14 == 0x120) break;
          pbVar9 = (byte *)(*piVar33 + iVar22);
        }
        goto LAB_00078a04;
      }
      if (bVar1 == 6) {
        piVar10 = *(int **)pbVar9;
        if ((1 < piVar33[0x17]) &&
           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {
          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;
          do {
            ps = (re_string_t *)0x1;
            prStackY_1c8 = (re_string_t *)0x0;
            auStackY_1a8._4_4_ = (uchar *)0x0;
            pwStackY_1a0 = (wint_t *)0x0;
            pstr = (re_string_t *)(auStackY_1a8 + 4);
            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));
            if (sVar16 == 0xfffffffe) {
              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;
            }
            cVar20 = auStackY_1a8[0] + 1;
            auStackY_1a8[0] = cVar20;
          } while (cVar20 != '\0');
          puVar27 = (uint *)*aVar25.sbcset;
          goto LAB_00078a08;
        }
        if (0 < piVar10[5]) {
          iVar22 = 0;
          do {
            auStackY_1a8._4_4_ = (uchar *)0x0;
            pwStackY_1a0 = (wint_t *)0x0;
            prVar30 = arStackY_19c;
            prVar28 = (re_string_t *)(auStackY_1a8 + 4);
            iVar14 = (**(code **)(puVar43 + 0x3742c))
                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));
            if (iVar14 != -1) {
              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;
              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;
              if (uVar26 != 0) {
                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();
                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);
                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;
              }
            }
            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {
              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));
              prVar30 = arStackY_19c;
              prVar28 = (re_string_t *)(auStackY_1a8 + 4);
              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);
              if (iVar14 != -1) {
                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;
              }
            }
            iVar22 = iVar22 + 1;
          } while (iVar22 < piVar10[5]);
          goto LAB_00078a04;
        }
      }
      else {
        if ((bVar1 & 0xfd) == 5) {
          if (prStackY_9c == (re_string_t *)*puVar21) {
                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);
            return pbVar37;
          }
          goto LAB_00078e4c;
        }
        if (bVar1 == 2) {
          ps = (re_string_t *)0x100;
          puVar27 = (uint *)0x1;
          (**(code **)(puVar43 + 0x374f4))();
          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;
          prVar30 = token;
          break;
        }
      }
      iVar32 = iVar32 + 1;
      ps = prVar28;
    } while (iVar32 < (int)puVar27);
  }
LAB_00078a1c:
  prVar28 = ps;
  if (prStackY_9c == (re_string_t *)*puVar21) {
    return (bin_tree_t *)*puVar21;
  }
LAB_00078e4c:
  pcVar44 = *(code **)(puVar43 + 0x37334);
  (*pcVar44)();
  ppbVar31 = (bin_tree_t **)(&prVar30->raw_mbs + (int)prVar28 * 2);
  uVar26 = (uint)*(byte *)(ppbVar31 + 1);
  if (uVar26 == 7) {
    pbVar9 = pstr->mbs + (int)idx;
    bVar1 = *pbVar9;
    if (bVar1 < 0xc2) {
      return (bin_tree_t *)0x0;
    }
    if (pstr->len <= (int)(puVar43 + 0x3eb91)) {
      return (bin_tree_t *)0x0;
    }
    bVar2 = pbVar9[1];
    if (bVar1 < 0xe0) {
      if ((bVar2 ^ 0x80) < 0x40) {
        return (bin_tree_t *)0x2;
      }
    }
    else {
      if (bVar1 < 0xf0) {
        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {
          return (bin_tree_t *)0x0;
        }
        pbVar37 = (bin_tree_t *)0x3;
      }
      else if (bVar1 < 0xf8) {
        pbVar37 = (bin_tree_t *)0x4;
        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {
          return (bin_tree_t *)0x0;
        }
      }
      else if (bVar1 < 0xfc) {
        pbVar37 = (bin_tree_t *)0x5;
        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {
          return (bin_tree_t *)0x0;
        }
      }
      else {
        if (0xfd < bVar1) {
          return (bin_tree_t *)0x0;
        }
        pbVar37 = (bin_tree_t *)0x6;
        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {
          return (bin_tree_t *)0x0;
        }
      }
      pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);
      if ((int)(idx + (int)pbVar37) <= pstr->len) {
        do {
          bVar1 = *pbVar18;
          pbVar18 = pbVar18 + 1;
          if (0x3f < (bVar1 ^ 0x80)) {
            return (bin_tree_t *)0x0;
          }
        } while (pbVar9 + (int)pbVar37 != pbVar18);
        return pbVar37;
      }
    }
  }
  else if (pstr->mb_cur_max != 1) {
    pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx);
    if (uVar26 == 5) {
      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {
        if ((*puVar27 & 0x80) == 0) {
          return pbVar37;
        }
        if (pstr->mbs[(int)idx] != '\0') {
          return pbVar37;
        }
      }
    }
    else if ((1 < (int)pbVar37) && (uVar26 == 6)) {
      pbVar36 = *ppbVar31;
      pbVar29 = pbVar36[1].parent;
      iVar32 = (pbVar36->token).opr.idx;
      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {
LAB_00079104:
        if (-1 < *(char *)&pbVar36->next) {
          return (bin_tree_t *)0x0;
        }
        return pbVar37;
      }
      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];
      if (iVar32 < 1) {
LAB_00078fc4:
        if ((int)pbVar36[1].left < 1) {
LAB_000790c0:
          if (0 < (int)pbVar29) {
            pbVar24 = pbVar36->left;
            pbVar17 = (bin_tree_t *)0x0;
            do {
              ppbVar31 = &pbVar24->parent;
              pbVar24 = (bin_tree_t *)&pbVar24->left;
              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);
              if (((int)*ppbVar31 <= (int)pbVar35) &&
                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;
              pbVar17 = pbVar19;
            } while (pbVar19 != pbVar29);
          }
          goto LAB_00079104;
        }
        pbVar29 = pbVar36->first;
        iVar32 = 0;
        while( true ) {
          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);
          if (iVar22 != 0) break;
          if ((int)pbVar36[1].left <= iVar32 + 1) {
            pbVar29 = pbVar36[1].parent;
            goto LAB_000790c0;
          }
          pbVar29 = pbVar36->first;
          iVar32 = iVar32 + 1;
        }
      }
      else {
        pbVar17 = pbVar36->parent;
        if (pbVar17->parent != pbVar35) {
          iVar22 = 0;
          do {
            pbVar17 = (bin_tree_t *)&pbVar17->left;
            iVar22 = iVar22 + 1;
            if (iVar22 == iVar32) goto LAB_00078fc4;
          } while (pbVar35 != *(bin_tree_t **)pbVar17);
        }
      }
LAB_00079010:
      if (*(char *)&pbVar36->next < '\0') {
        return (bin_tree_t *)0x0;
      }
      return pbVar37;
    }
  }
  return (bin_tree_t *)0x0;
}



/* WARNING: Type propagation algorithm not settling */

uint * FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)

{
  byte bVar1;
  byte bVar2;
  undefined *puVar3;
  uint *puVar4;
  int iVar5;
  uint uVar6;
  uint *puVar7;
  byte *pbVar8;
  int *piVar9;
  undefined4 uVar10;
  int *piVar11;
  char cVar13;
  byte *pbVar12;
  undefined4 *puVar14;
  int iVar15;
  int iVar16;
  uint *puVar17;
  undefined4 *puVar18;
  uint *puVar19;
  uint uVar20;
  uint *puVar21;
  int iVar22;
  uint *puVar23;
  uint *puVar24;
  uint *puVar25;
  uint *puVar26;
  uint *puVar27;
  int *piVar28;
  undefined *puVar29;
  int iVar30;
  uint uVar31;
  uint *unaff_s5;
  uint *unaff_s6;
  byte *pbVar32;
  undefined *puVar33;
  undefined *puVar34;
  code *pcVar35;
  uint *puStack_1c8;
  uint auStack_1a8 [3];
  undefined4 uStack_19c;
  uint *puStack_9c;
  int iStack_98;
  undefined *puStack_94;
  undefined *puStack_90;
  int *piStack_8c;
  uint *puStack_88;
  uint *puStack_84;
  uint *puStack_80;
  uint *puStack_7c;
  uint *puStack_78;
  code *pcStack_74;
  uint **local_60;
  uint *local_5c;
  undefined4 local_58;
  uint *local_40;
  uint *local_3c;
  undefined1 local_38;
  uint *puStack_34;
  undefined1 local_30;
  undefined4 *local_2c;
  
  puVar3 = PTR___stack_chk_guard_000afc3c;
  puVar19 = (uint *)&DAT_00000001;
  local_40 = (uint *)0x0;
  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;
  puVar29 = (undefined *)(uint)param_5;
  puVar17 = param_3;
  puVar25 = param_4;
  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);
  if (puVar4 == (uint *)0x0) {
LAB_00078814:
    puVar4 = unaff_s5;
    puVar7 = (uint *)0x0;
    *param_6 = 0xc;
  }
  else {
    puVar19 = (uint *)&DAT_00000001;
    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);
    if (unaff_s6 == (uint *)0x0) {
      puVar7 = (uint *)0x0;
      (*(code *)PTR_free_000afd08)(puVar4);
      *param_6 = 0xc;
    }
    else {
      local_60 = &local_40;
      puVar25 = unaff_s6 + 9;
      puVar17 = unaff_s6 + 3;
      local_58 = 0;
      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);
      puVar19 = puVar4;
      local_5c = param_3;
      iVar5 = FUN_00077b04(param_2);
      if (iVar5 == 0) {
        cVar13 = *(char *)param_4;
        while (uVar20 = (uint)cVar13, uVar20 != 0) {
          uVar6 = uVar20;
          if ((int)uVar20 < 0) {
            uVar6 = uVar20 + 0x1f;
          }
          param_4 = (uint *)((int)param_4 + 1);
          cVar13 = *(char *)param_4;
          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);
        }
        puVar19 = puVar4;
        if (puVar29 != (undefined *)0x0) {
          do {
            puVar17 = puVar19 + 1;
            *puVar19 = ~*puVar19;
            puVar19 = puVar17;
          } while (puVar4 + 8 != puVar17);
        }
        if (1 < *(int *)(param_1 + 0x5c)) {
          puVar17 = *(uint **)(param_1 + 0x3c);
          puVar19 = puVar4;
          do {
            puVar25 = puVar19 + 1;
            uVar20 = *puVar17;
            puVar17 = puVar17 + 1;
            *puVar19 = *puVar19 & uVar20;
            puVar19 = puVar25;
          } while (puVar4 + 8 != puVar25);
        }
        param_4 = (uint *)(param_1 + 0x38);
        param_2 = (uint *)(param_1 + 0x40);
        puVar29 = PTR_FUN_000afa20 + 0x411c;
        puVar25 = (uint *)0x0;
        puVar17 = (uint *)0x0;
        local_38 = 3;
        puVar19 = param_2;
        local_60 = &local_3c;
        local_3c = puVar4;
        puVar7 = (uint *)FUN_0007411c(param_4);
        puVar26 = puVar25;
        if (puVar7 == (uint *)0x0) {
LAB_000787f0:
          (*(code *)PTR_free_000afd08)(puVar4);
          FUN_000724e4(unaff_s6);
          puVar25 = puVar26;
          unaff_s5 = puVar4;
          goto LAB_00078814;
        }
        if (*(int *)(param_1 + 0x5c) < 2) {
          FUN_000724e4(unaff_s6);
        }
        else {
          puVar26 = (uint *)0x0;
          puVar17 = (uint *)0x0;
          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;
          local_38 = 6;
          puVar19 = param_2;
          local_60 = &local_3c;
          local_3c = unaff_s6;
          puVar25 = (uint *)FUN_0007411c(param_4);
          if (puVar25 == (uint *)0x0) goto LAB_000787f0;
          local_60 = &puStack_34;
          local_30 = 10;
          puVar19 = param_2;
          puVar26 = (uint *)FUN_0007411c(param_4);
          puVar17 = puVar7;
          puVar7 = puVar26;
        }
      }
      else {
        puVar7 = (uint *)0x0;
        (*(code *)PTR_free_000afd08)(puVar4);
        FUN_000724e4(unaff_s6);
        *param_6 = iVar5;
      }
    }
  }
  if (local_2c == *(undefined4 **)puVar3) {
    return puVar7;
  }
  pcVar35 = FUN_000788a0;
  puVar18 = local_2c;
  puVar33 = PTR___stack_chk_fail_000afbd4;
  (*(code *)PTR___stack_chk_fail_000afbd4)();
  puVar34 = puVar33 + 0x3eb90;
  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);
  puStack_94 = puVar3;
  piVar28 = (int *)*puVar18;
  puStack_9c = (uint *)*puVar14;
  piStack_8c = param_6;
  if (piVar28[0x17] == 1) {
    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;
  }
  else {
    uVar20 = 0;
  }
  puVar21 = (uint *)*puVar19;
  iVar5 = 0;
  puVar26 = puStack_9c;
  puVar23 = puVar17;
  puVar24 = puVar17;
  puVar27 = puVar25;
  iStack_98 = param_1;
  puStack_90 = puVar29;
  puStack_88 = param_4;
  puStack_84 = puVar4;
  puStack_80 = unaff_s6;
  puStack_7c = param_2;
  puStack_78 = puVar7;
  pcStack_74 = pcVar35;
  if (0 < (int)puVar21) {
    do {
      while( true ) {
        puVar26 = (uint *)*puVar17;
        uVar6 = puVar26[iVar5];
        iVar15 = uVar6 * 8;
        pbVar8 = (byte *)(*piVar28 + iVar15);
        bVar1 = pbVar8[4];
        if (bVar1 != 1) break;
        bVar1 = *pbVar8;
        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';
        if (uVar20 != 0) {
          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();
          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';
        }
        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {
          uVar6 = uVar6 + 1;
          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);
          if ((uVar6 < (uint)piVar28[2]) &&
             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),
             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {
            pbVar12 = (byte *)((int)&uStack_19c + 1);
            do {
              pbVar32 = pbVar12 + 1;
              uVar6 = uVar6 + 1;
              *pbVar12 = *pbVar8;
              if ((uint)piVar28[2] <= uVar6) break;
              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);
              pbVar12 = pbVar32;
            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);
            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);
          }
          else {
            puVar4 = (uint *)&DAT_00000001;
          }
          puStack_1c8 = &uStack_19c;
          puVar24 = auStack_1a8 + 1;
          puVar26 = auStack_1a8;
          auStack_1a8[1] = 0;
          auStack_1a8[2] = 0;
          puVar23 = puVar4;
          puVar27 = puVar24;
          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);
          if (puVar7 != puVar4) goto LAB_00078a04;
          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);
          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);
          puVar26 = puStack_1c8;
          puVar23 = puVar24;
          if (iVar15 == -1) goto LAB_00078a04;
          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';
          puVar21 = (uint *)*puVar19;
        }
        else {
LAB_00078a04:
          puVar21 = (uint *)*puVar19;
          puStack_1c8 = puVar26;
          puVar24 = puVar23;
        }
LAB_00078a08:
        iVar5 = iVar5 + 1;
        puVar26 = puStack_1c8;
        puVar23 = puVar24;
        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;
      }
      if (bVar1 == 3) {
        iVar30 = 0x20;
        puStack_1c8 = (uint *)0x0;
        while( true ) {
          iVar16 = iVar30 + -0x20;
          uVar6 = 0;
          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);
          do {
            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&
               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {
              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);
              if (puVar23 != (uint *)0x0) {
                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();
                puVar23 = (uint *)(iVar16 * 4);
                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';
              }
            }
            iVar16 = iVar16 + 1;
            uVar6 = uVar6 + 1;
          } while (iVar30 != iVar16);
          iVar30 = iVar30 + 0x20;
          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);
          if (iVar30 == 0x120) break;
          pbVar8 = (byte *)(*piVar28 + iVar15);
        }
        goto LAB_00078a04;
      }
      if (bVar1 == 6) {
        piVar9 = *(int **)pbVar8;
        if ((1 < piVar28[0x17]) &&
           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {
          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;
          do {
            puVar24 = (uint *)&DAT_00000001;
            puStack_1c8 = (uint *)0x0;
            auStack_1a8[1] = 0;
            auStack_1a8[2] = 0;
            puVar27 = auStack_1a8 + 1;
            iVar15 = rpl_mbrtowc(0,auStack_1a8);
            if (iVar15 == -2) {
              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';
            }
            cVar13 = auStack_1a8[0]._0_1_ + 1;
            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);
          } while (cVar13 != '\0');
          puVar21 = (uint *)*puVar19;
          goto LAB_00078a08;
        }
        if (0 < piVar9[5]) {
          iVar15 = 0;
          do {
            auStack_1a8[1] = 0;
            auStack_1a8[2] = 0;
            puVar26 = &uStack_19c;
            puVar23 = auStack_1a8 + 1;
            iVar30 = (**(code **)(puVar33 + 0x3742c))
                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));
            if (iVar30 != -1) {
              uVar6 = (uint)uStack_19c._0_1_;
              *(char *)((int)puVar25 + uVar6) = '\x01';
              if (uVar20 != 0) {
                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();
                puVar26 = (uint *)(*piVar11 + uVar6 * 4);
                *(char *)((int)puVar25 + *puVar26) = '\x01';
              }
            }
            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {
              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));
              puVar26 = &uStack_19c;
              puVar23 = auStack_1a8 + 1;
              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);
              if (iVar30 != -1) {
                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';
              }
            }
            iVar15 = iVar15 + 1;
          } while (iVar15 < piVar9[5]);
          goto LAB_00078a04;
        }
      }
      else {
        if ((bVar1 & 0xfd) == 5) {
          if (puStack_9c == (uint *)*puVar14) {
                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);
            return puVar19;
          }
          goto LAB_00078e4c;
        }
        if (bVar1 == 2) {
          puVar24 = (uint *)0x100;
          puVar21 = (uint *)&DAT_00000001;
          (**(code **)(puVar33 + 0x374f4))();
          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;
          puVar26 = puVar25;
          break;
        }
      }
      iVar5 = iVar5 + 1;
      puVar24 = puVar23;
    } while (iVar5 < (int)puVar21);
  }
LAB_00078a1c:
  puVar23 = puVar24;
  if (puStack_9c == (uint *)*puVar14) {
    return (uint *)*puVar14;
  }
LAB_00078e4c:
  pcVar35 = *(code **)(puVar33 + 0x37334);
  (*pcVar35)();
  puVar26 = puVar26 + (int)puVar23 * 2;
  uVar20 = (uint)*(byte *)(puVar26 + 1);
  if (uVar20 == 7) {
    pbVar8 = puVar34 + puVar27[1];
    bVar1 = *pbVar8;
    if (bVar1 < 0xc2) {
      return (uint *)0x0;
    }
    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {
      return (uint *)0x0;
    }
    bVar2 = pbVar8[1];
    if (bVar1 < 0xe0) {
      if ((bVar2 ^ 0x80) < 0x40) {
        return (uint *)0x2;
      }
    }
    else {
      if (bVar1 < 0xf0) {
        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {
          return (uint *)0x0;
        }
        puVar19 = (uint *)0x3;
      }
      else if (bVar1 < 0xf8) {
        puVar19 = (uint *)&DAT_00000004;
        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {
          return (uint *)0x0;
        }
      }
      else if (bVar1 < 0xfc) {
        puVar19 = (uint *)0x5;
        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {
          return (uint *)0x0;
        }
      }
      else {
        if (0xfd < bVar1) {
          return (uint *)0x0;
        }
        puVar19 = (uint *)0x6;
        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {
          return (uint *)0x0;
        }
      }
      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];
      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {
        do {
          bVar1 = *pbVar12;
          pbVar12 = pbVar12 + 1;
          if (0x3f < (bVar1 ^ 0x80)) {
            return (uint *)0x0;
          }
        } while (pbVar8 + (int)puVar19 != pbVar12);
        return puVar19;
      }
    }
  }
  else if (puVar27[0x14] != 1) {
    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);
    if (uVar20 == 5) {
      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {
        if ((*puVar21 & 0x80) == 0) {
          return puVar19;
        }
        if (puVar34[puVar27[1]] != '\0') {
          return puVar19;
        }
      }
    }
    else if ((1 < (int)puVar19) && (uVar20 == 6)) {
      piVar28 = (int *)*puVar26;
      iVar15 = piVar28[8];
      iVar5 = piVar28[5];
      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {
LAB_00079104:
        if (-1 < *(char *)(piVar28 + 4)) {
          return (uint *)0x0;
        }
        return puVar19;
      }
      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);
      if (iVar5 < 1) {
LAB_00078fc4:
        iVar5 = 0;
        if (piVar28[9] < 1) {
LAB_000790c0:
          iVar5 = 0;
          if (0 < iVar15) {
            piVar9 = (int *)piVar28[1];
            do {
              iVar16 = *piVar9;
              iVar22 = iVar5 * 4;
              piVar9 = piVar9 + 1;
              iVar5 = iVar5 + 1;
              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))
              goto LAB_00079010;
            } while (iVar5 != iVar15);
          }
          goto LAB_00079104;
        }
        iVar15 = piVar28[3];
        while( true ) {
          iVar16 = iVar5 * 4;
          iVar5 = iVar5 + 1;
          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));
          if (iVar15 != 0) break;
          if (piVar28[9] <= iVar5) {
            iVar15 = piVar28[8];
            goto LAB_000790c0;
          }
          iVar15 = piVar28[3];
        }
      }
      else {
        piVar9 = (int *)*piVar28;
        if (*piVar9 != iVar30) {
          iVar16 = 0;
          do {
            piVar9 = piVar9 + 1;
            iVar16 = iVar16 + 1;
            if (iVar16 == iVar5) goto LAB_00078fc4;
          } while (iVar30 != *piVar9);
        }
      }
LAB_00079010:
      if (*(char *)(piVar28 + 4) < '\0') {
        return (uint *)0x0;
      }
      return puVar19;
    }
  }
  return (uint *)0x0;
}


lui gp,0x4
addiu gp,gp,-0x111c
addu gp,gp,t9
addiu sp,sp,-0x70
lw t9,-0x7678(gp)
sw s1,0x4c(sp)
lw s1,-0x77f4(gp)
sw s7,0x64(sp)
or s7,a1,zero
sw s0,0x48(sp)
li a1,0x1
or s0,a0,zero
sw gp,0x20(sp)
sw s8,0x68(sp)
li a0,0x20
sw s4,0x58(sp)
or s8,a2,zero
sw s3,0x54(sp)
or s4,a3,zero
sw s2,0x50(sp)
sw ra,0x6c(sp)
sw s6,0x60(sp)
sw s5,0x5c(sp)
sw zero,0x30(sp)
lw v0,0x0(s1)
lbu s2,0x83(sp)
lw s3,0x84(sp)
sw v0,0x44(sp)
jalr t9
_nop
beq v0,zero,0x00078814
_lw gp,0x20(sp)
lw t9,-0x7678(gp)
li a1,0x1
li a0,0x28
jalr t9
_or s5,v0,zero
lw gp,0x20(sp)
beq v0,zero,0x0007883c
_or s6,v0,zero
lbu v0,0x10(v0)
addiu v1,sp,0x30
lw t9,-0x7a10(gp)
addiu a3,s6,0x24
addiu a2,s6,0xc
sw zero,0x18(sp)
ins v0,s2,0x7,0x1
sw s8,0x14(sp)
addiu t9,t9,0x7b04
sw v1,0x10(sp)
or a1,s5,zero
sb v0,0x10(s6)
bal 0x00077b04
_or a0,s7,zero
bne v0,zero,0x0007885c
_lw gp,0x20(sp)
lb a0,0x0(s4)
beq a0,zero,0x00078690
_nop
lui a2,0x8000
li t0,-0x20
addiu a2,a2,0x1f
li a3,0x1
bgez a0,0x00078654
_or v0,a0,zero
addiu v0,a0,0x1f
sra v0,v0,0x5
and v1,a0,a2
sll v0,v0,0x2
bgez v1,0x00078674
_addu v0,s5,v0
addiu v1,v1,-0x1
or v1,v1,t0
addiu v1,v1,0x1
addiu s4,s4,0x1
lw a1,0x0(v0)
sllv v1,a3,v1
lb a0,0x0(s4)
or v1,a1,v1
bne a0,zero,0x00078648
_sw v1,0x0(v0)
beq s2,zero,0x000786b0
_addiu a0,s5,0x20
or v0,s5,zero
lw v1,0x0(v0)
addiu v0,v0,0x4
nor v1,zero,v1
bne a0,v0,0x0007869c
_sw v1,-0x4(v0)
lw v0,0x5c(s0)
slti v0,v0,0x2
bne v0,zero,0x000786e4
_addiu a2,s5,0x20
lw a0,0x3c(s0)
or v0,s5,zero
lw v1,0x0(v0)
addiu v0,v0,0x4
lw a1,0x0(a0)
addiu a0,a0,0x4
and v1,v1,a1
bne a2,v0,0x000786c8
_sw v1,-0x4(v0)
lw s2,-0x7a10(gp)
addiu v0,sp,0x34
addiu s4,s0,0x38
sw s5,0x34(sp)
sw v0,0x2c(sp)
addiu s7,s0,0x40
sw v0,0x10(sp)
addiu s2,s2,0x411c
li v0,0x3
or a3,zero,zero
or a2,zero,zero
sb v0,0x38(sp)
or a1,s7,zero
or t9,s2,zero
bal 0x0007411c
_or a0,s4,zero
lw gp,0x20(sp)
beq v0,zero,0x000787f0
_or s8,v0,zero
lw v0,0x5c(s0)
slti v0,v0,0x2
bne v0,zero,0x00078824
_li a0,0x1
lbu v0,0x58(s0)
lw v1,0x2c(sp)
or a3,zero,zero
or a2,zero,zero
sw s6,0x34(sp)
ins v0,a0,0x6,0x1
li a0,0x6
sw v1,0x10(sp)
or a1,s7,zero
sb v0,0x58(s0)
sb a0,0x38(sp)
or t9,s2,zero
bal 0x0007411c
_or a0,s4,zero
beq v0,zero,0x000787f0
_lw gp,0x20(sp)
addiu v1,sp,0x3c
or a3,v0,zero
li v0,0xa
sw v1,0x10(sp)
or a2,s8,zero
sb v0,0x40(sp)
or a1,s7,zero
or t9,s2,zero
bal 0x0007411c
_or a0,s4,zero
lw gp,0x20(sp)
or s8,v0,zero
lw a0,0x44(sp)
or v0,s8,zero
lw v1,0x0(s1)
bne a0,v1,0x00078894
_lw ra,0x6c(sp)
lw s8,0x68(sp)
lw s7,0x64(sp)
lw s6,0x60(sp)
lw s5,0x5c(sp)
lw s4,0x58(sp)
lw s3,0x54(sp)
lw s2,0x50(sp)
lw s1,0x4c(sp)
lw s0,0x48(sp)
jr ra
_addiu sp,sp,0x70
lw t9,-0x7728(gp)
jalr t9
_or a0,s5,zero
lw gp,0x20(sp)
lw t9,-0x7a10(gp)
addiu t9,t9,0x24e4
bal 0x000724e4
_or a0,s6,zero
lw gp,0x20(sp)
li v0,0xc
or s8,zero,zero
b 0x000787b0
_sw v0,0x0(s3)
lw t9,-0x7a10(gp)
addiu t9,t9,0x24e4
bal 0x000724e4
_or a0,s6,zero
b 0x000787b0
_lw gp,0x20(sp)
lw t9,-0x7728(gp)
or a0,s5,zero
jalr t9
_or s8,zero,zero
li v0,0xc
lw gp,0x20(sp)
b 0x000787b0
_sw v0,0x0(s3)
lw t9,-0x7728(gp)
or a0,s5,zero
sw v0,0x2c(sp)
jalr t9
_or s8,zero,zero
lw gp,0x20(sp)
lw t9,-0x7a10(gp)
addiu t9,t9,0x24e4
bal 0x000724e4
_or a0,s6,zero
lw v0,0x2c(sp)
lw gp,0x20(sp)
b 0x000787b0
_sw v0,0x0(s3)
lw t9,-0x785c(gp)
jalr t9
_nop
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nuint * FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  byte *pbVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  char cVar13;\n  byte *pbVar12;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  undefined4 *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint *puVar23;\n  uint *puVar24;\n  uint *puVar25;\n  uint *puVar26;\n  uint *puVar27;\n  int *piVar28;\n  undefined *puVar29;\n  int iVar30;\n  uint uVar31;\n  uint *unaff_s5;\n  uint *unaff_s6;\n  byte *pbVar32;\n  undefined *puVar33;\n  undefined *puVar34;\n  code *pcVar35;\n  uint *puStack_1c8;\n  uint auStack_1a8 [3];\n  undefined4 uStack_19c;\n  uint *puStack_9c;\n  int iStack_98;\n  undefined *puStack_94;\n  undefined *puStack_90;\n  int *piStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  uint *puStack_78;\n  code *pcStack_74;\n  uint **local_60;\n  uint *local_5c;\n  undefined4 local_58;\n  uint *local_40;\n  uint *local_3c;\n  undefined1 local_38;\n  uint *puStack_34;\n  undefined1 local_30;\n  undefined4 *local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  puVar19 = (uint *)&DAT_00000001;\n  local_40 = (uint *)0x0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar29 = (undefined *)(uint)param_5;\n  puVar17 = param_3;\n  puVar25 = param_4;\n  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }\n  pcVar35 = FUN_000788a0;\n  puVar18 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puVar34 = puVar33 + 0x3eb90;\n  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);\n  puStack_94 = puVar3;\n  piVar28 = (int *)*puVar18;\n  puStack_9c = (uint *)*puVar14;\n  piStack_8c = param_6;\n  if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }\n  puVar21 = (uint *)*puVar19;\n  iVar5 = 0;\n  puVar26 = puStack_9c;\n  puVar23 = puVar17;\n  puVar24 = puVar17;\n  puVar27 = puVar25;\n  iStack_98 = param_1;\n  puStack_90 = puVar29;\n  puStack_88 = param_4;\n  puStack_84 = puVar4;\n  puStack_80 = unaff_s6;\n  puStack_7c = param_2;\n  puStack_78 = puVar7;\n  pcStack_74 = pcVar35;\n  if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }\nLAB_00078a1c:\n  puVar23 = puVar24;\n  if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }\nLAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);\n  (*pcVar35)();\n  puVar26 = puVar26 + (int)puVar23 * 2;\n  uVar20 = (uint)*(byte *)(puVar26 + 1);\n  if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }\n  return (uint *)0x0;\n}\n\n" comment (function_definition "uint * FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  byte *pbVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  char cVar13;\n  byte *pbVar12;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  undefined4 *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint *puVar23;\n  uint *puVar24;\n  uint *puVar25;\n  uint *puVar26;\n  uint *puVar27;\n  int *piVar28;\n  undefined *puVar29;\n  int iVar30;\n  uint uVar31;\n  uint *unaff_s5;\n  uint *unaff_s6;\n  byte *pbVar32;\n  undefined *puVar33;\n  undefined *puVar34;\n  code *pcVar35;\n  uint *puStack_1c8;\n  uint auStack_1a8 [3];\n  undefined4 uStack_19c;\n  uint *puStack_9c;\n  int iStack_98;\n  undefined *puStack_94;\n  undefined *puStack_90;\n  int *piStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  uint *puStack_78;\n  code *pcStack_74;\n  uint **local_60;\n  uint *local_5c;\n  undefined4 local_58;\n  uint *local_40;\n  uint *local_3c;\n  undefined1 local_38;\n  uint *puStack_34;\n  undefined1 local_30;\n  undefined4 *local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  puVar19 = (uint *)&DAT_00000001;\n  local_40 = (uint *)0x0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar29 = (undefined *)(uint)param_5;\n  puVar17 = param_3;\n  puVar25 = param_4;\n  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }\n  pcVar35 = FUN_000788a0;\n  puVar18 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puVar34 = puVar33 + 0x3eb90;\n  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);\n  puStack_94 = puVar3;\n  piVar28 = (int *)*puVar18;\n  puStack_9c = (uint *)*puVar14;\n  piStack_8c = param_6;\n  if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }\n  puVar21 = (uint *)*puVar19;\n  iVar5 = 0;\n  puVar26 = puStack_9c;\n  puVar23 = puVar17;\n  puVar24 = puVar17;\n  puVar27 = puVar25;\n  iStack_98 = param_1;\n  puStack_90 = puVar29;\n  puStack_88 = param_4;\n  puStack_84 = puVar4;\n  puStack_80 = unaff_s6;\n  puStack_7c = param_2;\n  puStack_78 = puVar7;\n  pcStack_74 = pcVar35;\n  if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }\nLAB_00078a1c:\n  puVar23 = puVar24;\n  if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }\nLAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);\n  (*pcVar35)();\n  puVar26 = puVar26 + (int)puVar23 * 2;\n  uVar20 = (uint)*(byte *)(puVar26 + 1);\n  if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }\n  return (uint *)0x0;\n}" type_identifier (pointer_declarator "* FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)" * (function_declarator "FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)" identifier (parameter_list "(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "byte param_5" type_identifier identifier) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  byte *pbVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  char cVar13;\n  byte *pbVar12;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  undefined4 *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint *puVar23;\n  uint *puVar24;\n  uint *puVar25;\n  uint *puVar26;\n  uint *puVar27;\n  int *piVar28;\n  undefined *puVar29;\n  int iVar30;\n  uint uVar31;\n  uint *unaff_s5;\n  uint *unaff_s6;\n  byte *pbVar32;\n  undefined *puVar33;\n  undefined *puVar34;\n  code *pcVar35;\n  uint *puStack_1c8;\n  uint auStack_1a8 [3];\n  undefined4 uStack_19c;\n  uint *puStack_9c;\n  int iStack_98;\n  undefined *puStack_94;\n  undefined *puStack_90;\n  int *piStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  uint *puStack_78;\n  code *pcStack_74;\n  uint **local_60;\n  uint *local_5c;\n  undefined4 local_58;\n  uint *local_40;\n  uint *local_3c;\n  undefined1 local_38;\n  uint *puStack_34;\n  undefined1 local_30;\n  undefined4 *local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  puVar19 = (uint *)&DAT_00000001;\n  local_40 = (uint *)0x0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar29 = (undefined *)(uint)param_5;\n  puVar17 = param_3;\n  puVar25 = param_4;\n  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }\n  pcVar35 = FUN_000788a0;\n  puVar18 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puVar34 = puVar33 + 0x3eb90;\n  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);\n  puStack_94 = puVar3;\n  piVar28 = (int *)*puVar18;\n  puStack_9c = (uint *)*puVar14;\n  piStack_8c = param_6;\n  if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }\n  puVar21 = (uint *)*puVar19;\n  iVar5 = 0;\n  puVar26 = puStack_9c;\n  puVar23 = puVar17;\n  puVar24 = puVar17;\n  puVar27 = puVar25;\n  iStack_98 = param_1;\n  puStack_90 = puVar29;\n  puStack_88 = param_4;\n  puStack_84 = puVar4;\n  puStack_80 = unaff_s6;\n  puStack_7c = param_2;\n  puStack_78 = puVar7;\n  pcStack_74 = pcVar35;\n  if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }\nLAB_00078a1c:\n  puVar23 = puVar24;\n  if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }\nLAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);\n  (*pcVar35)();\n  puVar26 = puVar26 + (int)puVar23 * 2;\n  uVar20 = (uint)*(byte *)(puVar26 + 1);\n  if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }\n  return (uint *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "char cVar13;" primitive_type identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "uint *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "uint *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "uint *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "byte *pbVar32;" type_identifier (pointer_declarator "*pbVar32" * identifier) ;) (declaration "undefined *puVar33;" type_identifier (pointer_declarator "*puVar33" * identifier) ;) (declaration "undefined *puVar34;" type_identifier (pointer_declarator "*puVar34" * identifier) ;) (declaration "code *pcVar35;" type_identifier (pointer_declarator "*pcVar35" * identifier) ;) (declaration "uint *puStack_1c8;" type_identifier (pointer_declarator "*puStack_1c8" * identifier) ;) (declaration "uint auStack_1a8 [3];" type_identifier (array_declarator "auStack_1a8 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_19c;" type_identifier identifier ;) (declaration "uint *puStack_9c;" type_identifier (pointer_declarator "*puStack_9c" * identifier) ;) (declaration "int iStack_98;" primitive_type identifier ;) (declaration "undefined *puStack_94;" type_identifier (pointer_declarator "*puStack_94" * identifier) ;) (declaration "undefined *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "int *piStack_8c;" primitive_type (pointer_declarator "*piStack_8c" * identifier) ;) (declaration "uint *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "uint *puStack_84;" type_identifier (pointer_declarator "*puStack_84" * identifier) ;) (declaration "uint *puStack_80;" type_identifier (pointer_declarator "*puStack_80" * identifier) ;) (declaration "uint *puStack_7c;" type_identifier (pointer_declarator "*puStack_7c" * identifier) ;) (declaration "uint *puStack_78;" type_identifier (pointer_declarator "*puStack_78" * identifier) ;) (declaration "code *pcStack_74;" type_identifier (pointer_declarator "*pcStack_74" * identifier) ;) (declaration "uint **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (declaration "uint *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "uint *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "uint *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "undefined1 local_38;" type_identifier identifier ;) (declaration "uint *puStack_34;" type_identifier (pointer_declarator "*puStack_34" * identifier) ;) (declaration "undefined1 local_30;" type_identifier identifier ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar3 = PTR___stack_chk_guard_000afc3c;" (assignment_expression "puVar3 = PTR___stack_chk_guard_000afc3c" identifier = identifier) ;) (expression_statement "puVar19 = (uint *)&DAT_00000001;" (assignment_expression "puVar19 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "local_40 = (uint *)0x0;" (assignment_expression "local_40 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;" (assignment_expression "local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_000afc3c" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_000afc3c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar29 = (undefined *)(uint)param_5;" (assignment_expression "puVar29 = (undefined *)(uint)param_5" identifier = (cast_expression "(undefined *)(uint)param_5" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "puVar17 = param_3;" (assignment_expression "puVar17 = param_3" identifier = identifier) ;) (expression_statement "puVar25 = param_4;" (assignment_expression "puVar25 = param_4" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);" (assignment_expression "puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20)" identifier = (cast_expression "(uint *)(*(code *)PTR_calloc_000afdb8)(0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_calloc_000afdb8)(0x20)" (parenthesized_expression "(*(code *)PTR_calloc_000afdb8)" ( (pointer_expression "*(code *)PTR_calloc_000afdb8" * (cast_expression "(code *)PTR_calloc_000afdb8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x20)" ( number_literal ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }" { (labeled_statement "LAB_00078814:\n    puVar4 = unaff_s5;" statement_identifier : (expression_statement "puVar4 = unaff_s5;" (assignment_expression "puVar4 = unaff_s5" identifier = identifier) ;)) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*param_6 = 0xc;" (assignment_expression "*param_6 = 0xc" (pointer_expression "*param_6" * identifier) = number_literal) ;) }) (else_clause "else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }" else (compound_statement "{\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }" { (expression_statement "puVar19 = (uint *)&DAT_00000001;" (assignment_expression "puVar19 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);" (assignment_expression "unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28)" identifier = (cast_expression "(uint *)(*(code *)PTR_calloc_000afdb8)(0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_calloc_000afdb8)(0x28)" (parenthesized_expression "(*(code *)PTR_calloc_000afdb8)" ( (pointer_expression "*(code *)PTR_calloc_000afdb8" * (cast_expression "(code *)PTR_calloc_000afdb8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x28)" ( number_literal ))))) ;) (if_statement "if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }" if (parenthesized_expression "(unaff_s6 == (uint *)0x0)" ( (binary_expression "unaff_s6 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }" { (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR_free_000afd08)(puVar4);" (call_expression "(*(code *)PTR_free_000afd08)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "*param_6 = 0xc;" (assignment_expression "*param_6 = 0xc" (pointer_expression "*param_6" * identifier) = number_literal) ;) }) (else_clause "else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }" else (compound_statement "{\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }" { (expression_statement "local_60 = &local_40;" (assignment_expression "local_60 = &local_40" identifier = (pointer_expression "&local_40" & identifier)) ;) (expression_statement "puVar25 = unaff_s6 + 9;" (assignment_expression "puVar25 = unaff_s6 + 9" identifier = (binary_expression "unaff_s6 + 9" identifier + number_literal)) ;) (expression_statement "puVar17 = unaff_s6 + 3;" (assignment_expression "puVar17 = unaff_s6 + 3" identifier = (binary_expression "unaff_s6 + 3" identifier + number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "*(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);" (assignment_expression "*(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7)" (pointer_expression "*(byte *)(unaff_s6 + 4)" * (cast_expression "(byte *)(unaff_s6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s6 + 4)" ( (binary_expression "unaff_s6 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7)" (binary_expression "*(byte *)(unaff_s6 + 4) & 0x7f" (pointer_expression "*(byte *)(unaff_s6 + 4)" * (cast_expression "(byte *)(unaff_s6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s6 + 4)" ( (binary_expression "unaff_s6 + 4" identifier + number_literal) )))) & number_literal) | (call_expression "(byte)(((uint)puVar29 & 1) << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uint)puVar29 & 1) << 7)" ( (binary_expression "((uint)puVar29 & 1) << 7" (parenthesized_expression "((uint)puVar29 & 1)" ( (binary_expression "(uint)puVar29 & 1" (cast_expression "(uint)puVar29" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal) ))))) ;) (expression_statement "puVar19 = puVar4;" (assignment_expression "puVar19 = puVar4" identifier = identifier) ;) (expression_statement "local_5c = param_3;" (assignment_expression "local_5c = param_3" identifier = identifier) ;) (expression_statement "iVar5 = FUN_00077b04(param_2);" (assignment_expression "iVar5 = FUN_00077b04(param_2)" identifier = (call_expression "FUN_00077b04(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }" { (expression_statement "cVar13 = *(char *)param_4;" (assignment_expression "cVar13 = *(char *)param_4" identifier = (pointer_expression "*(char *)param_4" * (cast_expression "(char *)param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (while_statement "while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }" while (parenthesized_expression "(uVar20 = (uint)cVar13, uVar20 != 0)" ( (comma_expression "uVar20 = (uint)cVar13, uVar20 != 0" (assignment_expression "uVar20 = (uint)cVar13" identifier = (cast_expression "(uint)cVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) , (binary_expression "uVar20 != 0" identifier != number_literal)) )) (compound_statement "{\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }" { (expression_statement "uVar6 = uVar20;" (assignment_expression "uVar6 = uVar20" identifier = identifier) ;) (if_statement "if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }" if (parenthesized_expression "((int)uVar20 < 0)" ( (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uVar6 = uVar20 + 0x1f;\n          }" { (expression_statement "uVar6 = uVar20 + 0x1f;" (assignment_expression "uVar6 = uVar20 + 0x1f" identifier = (binary_expression "uVar20 + 0x1f" identifier + number_literal)) ;) })) (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) )))) ;) (expression_statement "cVar13 = *(char *)param_4;" (assignment_expression "cVar13 = *(char *)param_4" identifier = (pointer_expression "*(char *)param_4" * (cast_expression "(char *)param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);" (assignment_expression "puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f)" (subscript_expression "puVar4[(int)uVar6 >> 5]" identifier [ (binary_expression "(int)uVar6 >> 5" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) = (binary_expression "puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f)" (subscript_expression "puVar4[(int)uVar6 >> 5]" identifier [ (binary_expression "(int)uVar6 >> 5" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) | (binary_expression "1 << (uVar20 & 0x1f)" number_literal << (parenthesized_expression "(uVar20 & 0x1f)" ( (binary_expression "uVar20 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "puVar19 = puVar4;" (assignment_expression "puVar19 = puVar4" identifier = identifier) ;) (if_statement "if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }" if (parenthesized_expression "(puVar29 != (undefined *)0x0)" ( (binary_expression "puVar29 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }" { (do_statement "do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);" do (compound_statement "{\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          }" { (expression_statement "puVar17 = puVar19 + 1;" (assignment_expression "puVar17 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = ~*puVar19;" (assignment_expression "*puVar19 = ~*puVar19" (pointer_expression "*puVar19" * identifier) = (unary_expression "~*puVar19" ~ (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar19 = puVar17;" (assignment_expression "puVar19 = puVar17" identifier = identifier) ;) }) while (parenthesized_expression "(puVar4 + 8 != puVar17)" ( (binary_expression "puVar4 + 8 != puVar17" (binary_expression "puVar4 + 8" identifier + number_literal) != identifier) )) ;) })) (if_statement "if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }" if (parenthesized_expression "(1 < *(int *)(param_1 + 0x5c))" ( (binary_expression "1 < *(int *)(param_1 + 0x5c)" number_literal < (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) )) (compound_statement "{\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }" { (expression_statement "puVar17 = *(uint **)(param_1 + 0x3c);" (assignment_expression "puVar17 = *(uint **)(param_1 + 0x3c)" identifier = (pointer_expression "*(uint **)(param_1 + 0x3c)" * (cast_expression "(uint **)(param_1 + 0x3c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "puVar19 = puVar4;" (assignment_expression "puVar19 = puVar4" identifier = identifier) ;) (do_statement "do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);" do (compound_statement "{\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          }" { (expression_statement "puVar25 = puVar19 + 1;" (assignment_expression "puVar25 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar20 = *puVar17;" (assignment_expression "uVar20 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = *puVar19 & uVar20;" (assignment_expression "*puVar19 = *puVar19 & uVar20" (pointer_expression "*puVar19" * identifier) = (binary_expression "*puVar19 & uVar20" (pointer_expression "*puVar19" * identifier) & identifier)) ;) (expression_statement "puVar19 = puVar25;" (assignment_expression "puVar19 = puVar25" identifier = identifier) ;) }) while (parenthesized_expression "(puVar4 + 8 != puVar25)" ( (binary_expression "puVar4 + 8 != puVar25" (binary_expression "puVar4 + 8" identifier + number_literal) != identifier) )) ;) })) (expression_statement "param_4 = (uint *)(param_1 + 0x38);" (assignment_expression "param_4 = (uint *)(param_1 + 0x38)" identifier = (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (expression_statement "param_2 = (uint *)(param_1 + 0x40);" (assignment_expression "param_2 = (uint *)(param_1 + 0x40)" identifier = (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) ;) (expression_statement "puVar29 = PTR_FUN_000afa20 + 0x411c;" (assignment_expression "puVar29 = PTR_FUN_000afa20 + 0x411c" identifier = (binary_expression "PTR_FUN_000afa20 + 0x411c" identifier + number_literal)) ;) (expression_statement "puVar25 = (uint *)0x0;" (assignment_expression "puVar25 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = (uint *)0x0;" (assignment_expression "puVar17 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_38 = 3;" (assignment_expression "local_38 = 3" identifier = number_literal) ;) (expression_statement "puVar19 = param_2;" (assignment_expression "puVar19 = param_2" identifier = identifier) ;) (expression_statement "local_60 = &local_3c;" (assignment_expression "local_60 = &local_3c" identifier = (pointer_expression "&local_3c" & identifier)) ;) (expression_statement "local_3c = puVar4;" (assignment_expression "local_3c = puVar4" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)FUN_0007411c(param_4);" (assignment_expression "puVar7 = (uint *)FUN_0007411c(param_4)" identifier = (cast_expression "(uint *)FUN_0007411c(param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007411c(param_4)" identifier (argument_list "(param_4)" ( identifier ))))) ;) (expression_statement "puVar26 = puVar25;" (assignment_expression "puVar26 = puVar25" identifier = identifier) ;) (if_statement "if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }" if (parenthesized_expression "(puVar7 == (uint *)0x0)" ( (binary_expression "puVar7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }" { (labeled_statement "LAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);" statement_identifier : (expression_statement "(*(code *)PTR_free_000afd08)(puVar4);" (call_expression "(*(code *)PTR_free_000afd08)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;)) (expression_statement "FUN_000724e4(unaff_s6);" (call_expression "FUN_000724e4(unaff_s6)" identifier (argument_list "(unaff_s6)" ( identifier ))) ;) (expression_statement "puVar25 = puVar26;" (assignment_expression "puVar25 = puVar26" identifier = identifier) ;) (expression_statement "unaff_s5 = puVar4;" (assignment_expression "unaff_s5 = puVar4" identifier = identifier) ;) (goto_statement "goto LAB_00078814;" goto statement_identifier ;) })) (if_statement "if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x5c) < 2)" ( (binary_expression "*(int *)(param_1 + 0x5c) < 2" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n          FUN_000724e4(unaff_s6);\n        }" { (expression_statement "FUN_000724e4(unaff_s6);" (call_expression "FUN_000724e4(unaff_s6)" identifier (argument_list "(unaff_s6)" ( identifier ))) ;) }) (else_clause "else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }" else (compound_statement "{\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }" { (expression_statement "puVar26 = (uint *)0x0;" (assignment_expression "puVar26 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = (uint *)0x0;" (assignment_expression "puVar17 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;" (assignment_expression "*(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40" (pointer_expression "*(byte *)(param_1 + 0x58)" * (cast_expression "(byte *)(param_1 + 0x58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x58) & 0xbf | 0x40" (binary_expression "*(byte *)(param_1 + 0x58) & 0xbf" (pointer_expression "*(byte *)(param_1 + 0x58)" * (cast_expression "(byte *)(param_1 + 0x58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "local_38 = 6;" (assignment_expression "local_38 = 6" identifier = number_literal) ;) (expression_statement "puVar19 = param_2;" (assignment_expression "puVar19 = param_2" identifier = identifier) ;) (expression_statement "local_60 = &local_3c;" (assignment_expression "local_60 = &local_3c" identifier = (pointer_expression "&local_3c" & identifier)) ;) (expression_statement "local_3c = unaff_s6;" (assignment_expression "local_3c = unaff_s6" identifier = identifier) ;) (expression_statement "puVar25 = (uint *)FUN_0007411c(param_4);" (assignment_expression "puVar25 = (uint *)FUN_0007411c(param_4)" identifier = (cast_expression "(uint *)FUN_0007411c(param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007411c(param_4)" identifier (argument_list "(param_4)" ( identifier ))))) ;) (if_statement "if (puVar25 == (uint *)0x0) goto LAB_000787f0;" if (parenthesized_expression "(puVar25 == (uint *)0x0)" ( (binary_expression "puVar25 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000787f0;" goto statement_identifier ;)) (expression_statement "local_60 = &puStack_34;" (assignment_expression "local_60 = &puStack_34" identifier = (pointer_expression "&puStack_34" & identifier)) ;) (expression_statement "local_30 = 10;" (assignment_expression "local_30 = 10" identifier = number_literal) ;) (expression_statement "puVar19 = param_2;" (assignment_expression "puVar19 = param_2" identifier = identifier) ;) (expression_statement "puVar26 = (uint *)FUN_0007411c(param_4);" (assignment_expression "puVar26 = (uint *)FUN_0007411c(param_4)" identifier = (cast_expression "(uint *)FUN_0007411c(param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007411c(param_4)" identifier (argument_list "(param_4)" ( identifier ))))) ;) (expression_statement "puVar17 = puVar7;" (assignment_expression "puVar17 = puVar7" identifier = identifier) ;) (expression_statement "puVar7 = puVar26;" (assignment_expression "puVar7 = puVar26" identifier = identifier) ;) }))) }) (else_clause "else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }" else (compound_statement "{\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }" { (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR_free_000afd08)(puVar4);" (call_expression "(*(code *)PTR_free_000afd08)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "FUN_000724e4(unaff_s6);" (call_expression "FUN_000724e4(unaff_s6)" identifier (argument_list "(unaff_s6)" ( identifier ))) ;) (expression_statement "*param_6 = iVar5;" (assignment_expression "*param_6 = iVar5" (pointer_expression "*param_6" * identifier) = identifier) ;) }))) }))) }))) (if_statement "if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }" if (parenthesized_expression "(local_2c == *(undefined4 **)puVar3)" ( (binary_expression "local_2c == *(undefined4 **)puVar3" identifier == (pointer_expression "*(undefined4 **)puVar3" * (cast_expression "(undefined4 **)puVar3" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar7;\n  }" { (return_statement "return puVar7;" return identifier ;) })) (expression_statement "pcVar35 = FUN_000788a0;" (assignment_expression "pcVar35 = FUN_000788a0" identifier = identifier) ;) (expression_statement "puVar18 = local_2c;" (assignment_expression "puVar18 = local_2c" identifier = identifier) ;) (expression_statement "puVar33 = PTR___stack_chk_fail_000afbd4;" (assignment_expression "puVar33 = PTR___stack_chk_fail_000afbd4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000afbd4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000afbd4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000afbd4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000afbd4" * (cast_expression "(code *)PTR___stack_chk_fail_000afbd4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar34 = puVar33 + 0x3eb90;" (assignment_expression "puVar34 = puVar33 + 0x3eb90" identifier = (binary_expression "puVar33 + 0x3eb90" identifier + number_literal)) ;) (expression_statement "puVar14 = *(undefined4 **)(puVar33 + 0x3739c);" (assignment_expression "puVar14 = *(undefined4 **)(puVar33 + 0x3739c)" identifier = (pointer_expression "*(undefined4 **)(puVar33 + 0x3739c)" * (cast_expression "(undefined4 **)(puVar33 + 0x3739c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x3739c)" ( (binary_expression "puVar33 + 0x3739c" identifier + number_literal) ))))) ;) (expression_statement "puStack_94 = puVar3;" (assignment_expression "puStack_94 = puVar3" identifier = identifier) ;) (expression_statement "piVar28 = (int *)*puVar18;" (assignment_expression "piVar28 = (int *)*puVar18" identifier = (cast_expression "(int *)*puVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (expression_statement "puStack_9c = (uint *)*puVar14;" (assignment_expression "puStack_9c = (uint *)*puVar14" identifier = (cast_expression "(uint *)*puVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (expression_statement "piStack_8c = param_6;" (assignment_expression "piStack_8c = param_6" identifier = identifier) ;) (if_statement "if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }" if (parenthesized_expression "(piVar28[0x17] == 1)" ( (binary_expression "piVar28[0x17] == 1" (subscript_expression "piVar28[0x17]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }" { (expression_statement "uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;" (assignment_expression "uVar20 = (uint)(puVar18[3] << 9) >> 0x1f" identifier = (binary_expression "(uint)(puVar18[3] << 9) >> 0x1f" (call_expression "(uint)(puVar18[3] << 9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar18[3] << 9)" ( (binary_expression "puVar18[3] << 9" (subscript_expression "puVar18[3]" identifier [ number_literal ]) << number_literal) ))) >> number_literal)) ;) }) (else_clause "else {\n    uVar20 = 0;\n  }" else (compound_statement "{\n    uVar20 = 0;\n  }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) }))) (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "puVar26 = puStack_9c;" (assignment_expression "puVar26 = puStack_9c" identifier = identifier) ;) (expression_statement "puVar23 = puVar17;" (assignment_expression "puVar23 = puVar17" identifier = identifier) ;) (expression_statement "puVar24 = puVar17;" (assignment_expression "puVar24 = puVar17" identifier = identifier) ;) (expression_statement "puVar27 = puVar25;" (assignment_expression "puVar27 = puVar25" identifier = identifier) ;) (expression_statement "iStack_98 = param_1;" (assignment_expression "iStack_98 = param_1" identifier = identifier) ;) (expression_statement "puStack_90 = puVar29;" (assignment_expression "puStack_90 = puVar29" identifier = identifier) ;) (expression_statement "puStack_88 = param_4;" (assignment_expression "puStack_88 = param_4" identifier = identifier) ;) (expression_statement "puStack_84 = puVar4;" (assignment_expression "puStack_84 = puVar4" identifier = identifier) ;) (expression_statement "puStack_80 = unaff_s6;" (assignment_expression "puStack_80 = unaff_s6" identifier = identifier) ;) (expression_statement "puStack_7c = param_2;" (assignment_expression "puStack_7c = param_2" identifier = identifier) ;) (expression_statement "puStack_78 = puVar7;" (assignment_expression "puStack_78 = puVar7" identifier = identifier) ;) (expression_statement "pcStack_74 = pcVar35;" (assignment_expression "pcStack_74 = pcVar35" identifier = identifier) ;) (if_statement "if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }" if (parenthesized_expression "(0 < (int)puVar21)" ( (binary_expression "0 < (int)puVar21" number_literal < (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }" { (do_statement "do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);" do (compound_statement "{\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    }" { (while_statement "while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }" { (expression_statement "puVar26 = (uint *)*puVar17;" (assignment_expression "puVar26 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "uVar6 = puVar26[iVar5];" (assignment_expression "uVar6 = puVar26[iVar5]" identifier = (subscript_expression "puVar26[iVar5]" identifier [ identifier ])) ;) (expression_statement "iVar15 = uVar6 * 8;" (assignment_expression "iVar15 = uVar6 * 8" identifier = (binary_expression "uVar6 * 8" identifier * number_literal)) ;) (expression_statement "pbVar8 = (byte *)(*piVar28 + iVar15);" (assignment_expression "pbVar8 = (byte *)(*piVar28 + iVar15)" identifier = (cast_expression "(byte *)(*piVar28 + iVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + iVar15)" ( (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" * identifier) + identifier) )))) ;) (expression_statement "bVar1 = pbVar8[4];" (assignment_expression "bVar1 = pbVar8[4]" identifier = (subscript_expression "pbVar8[4]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 != 1) break;" if (parenthesized_expression "(bVar1 != 1)" ( (binary_expression "bVar1 != 1" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "*(char *)((int)puVar25 + (uint)bVar1) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)bVar1) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)bVar1)" * (cast_expression "(char *)((int)puVar25 + (uint)bVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (uint)bVar1)" ( (binary_expression "(int)puVar25 + (uint)bVar1" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }" { (expression_statement "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();" (assignment_expression "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))()" identifier = (cast_expression "(int *)(**(code **)(puVar33 + 0x372e0))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar33 + 0x372e0))" ( (pointer_expression "**(code **)(puVar33 + 0x372e0)" * (pointer_expression "*(code **)(puVar33 + 0x372e0)" * (cast_expression "(code **)(puVar33 + 0x372e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372e0)" ( (binary_expression "puVar33 + 0x372e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4))" * (cast_expression "(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4))" ( (binary_expression "(int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*piVar9 + (uint)bVar1 * 4)" * (cast_expression "(int *)(*piVar9 + (uint)bVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + (uint)bVar1 * 4)" ( (binary_expression "*piVar9 + (uint)bVar1 * 4" (pointer_expression "*piVar9" * identifier) + (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (if_statement "if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }" if (parenthesized_expression "(((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17]))" ( (binary_expression "((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])" (parenthesized_expression "((int)(puVar18[3] << 9) < 0)" ( (binary_expression "(int)(puVar18[3] << 9) < 0" (cast_expression "(int)(puVar18[3] << 9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar18[3] << 9)" ( (binary_expression "puVar18[3] << 9" (subscript_expression "puVar18[3]" identifier [ number_literal ]) << number_literal) ))) < number_literal) )) && (parenthesized_expression "(1 < piVar28[0x17])" ( (binary_expression "1 < piVar28[0x17]" number_literal < (subscript_expression "piVar28[0x17]" identifier [ number_literal ])) ))) )) (compound_statement "{\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }" { (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);" (assignment_expression "uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15)" (field_expression "uStack_19c._0_1_" identifier . field_identifier) = (pointer_expression "*(byte *)(*piVar28 + iVar15)" * (cast_expression "(byte *)(*piVar28 + iVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + iVar15)" ( (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" * identifier) + identifier) ))))) ;) (if_statement "if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }" if (parenthesized_expression "((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400))" ( (binary_expression "(uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)" (parenthesized_expression "(uVar6 < (uint)piVar28[2])" ( (binary_expression "uVar6 < (uint)piVar28[2]" identifier < (cast_expression "(uint)piVar28[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar28[2]" identifier [ number_literal ]))) )) && (parenthesized_expression "(pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)" ( (comma_expression "pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400" (assignment_expression "pbVar8 = (byte *)(*piVar28 + iVar15 + 8)" identifier = (cast_expression "(byte *)(*piVar28 + iVar15 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + iVar15 + 8)" ( (binary_expression "*piVar28 + iVar15 + 8" (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" * identifier) + identifier) + number_literal) )))) , (binary_expression "(*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400" (parenthesized_expression "(*(uint *)(pbVar8 + 4) & 0xff000400)" ( (binary_expression "*(uint *)(pbVar8 + 4) & 0xff000400" (pointer_expression "*(uint *)(pbVar8 + 4)" * (cast_expression "(uint *)(pbVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 4)" ( (binary_expression "pbVar8 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }" { (expression_statement "pbVar12 = (byte *)((int)&uStack_19c + 1);" (assignment_expression "pbVar12 = (byte *)((int)&uStack_19c + 1)" identifier = (cast_expression "(byte *)((int)&uStack_19c + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&uStack_19c + 1)" ( (binary_expression "(int)&uStack_19c + 1" (cast_expression "(int)&uStack_19c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_19c" & identifier)) + number_literal) )))) ;) (do_statement "do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);" do (compound_statement "{\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            }" { (expression_statement "pbVar32 = pbVar12 + 1;" (assignment_expression "pbVar32 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar12 = *pbVar8;" (assignment_expression "*pbVar12 = *pbVar8" (pointer_expression "*pbVar12" * identifier) = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if ((uint)piVar28[2] <= uVar6) break;" if (parenthesized_expression "((uint)piVar28[2] <= uVar6)" ( (binary_expression "(uint)piVar28[2] <= uVar6" (cast_expression "(uint)piVar28[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar28[2]" identifier [ number_literal ])) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar8 = (byte *)(*piVar28 + uVar6 * 8);" (assignment_expression "pbVar8 = (byte *)(*piVar28 + uVar6 * 8)" identifier = (cast_expression "(byte *)(*piVar28 + uVar6 * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + uVar6 * 8)" ( (binary_expression "*piVar28 + uVar6 * 8" (pointer_expression "*piVar28" * identifier) + (binary_expression "uVar6 * 8" identifier * number_literal)) )))) ;) (expression_statement "pbVar12 = pbVar32;" (assignment_expression "pbVar12 = pbVar32" identifier = identifier) ;) }) while (parenthesized_expression "((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)" ( (binary_expression "(*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400" (parenthesized_expression "(*(uint *)(pbVar8 + 4) & 0xff000400)" ( (binary_expression "*(uint *)(pbVar8 + 4) & 0xff000400" (pointer_expression "*(uint *)(pbVar8 + 4)" * (cast_expression "(uint *)(pbVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 4)" ( (binary_expression "pbVar8 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) ;) (expression_statement "puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);" (assignment_expression "puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c)" identifier = (cast_expression "(uint *)(pbVar32 + -(int)&uStack_19c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar32 + -(int)&uStack_19c)" ( (binary_expression "pbVar32 + -(int)&uStack_19c" identifier + (unary_expression "-(int)&uStack_19c" - (cast_expression "(int)&uStack_19c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_19c" & identifier)))) )))) ;) }) (else_clause "else {\n            puVar4 = (uint *)&DAT_00000001;\n          }" else (compound_statement "{\n            puVar4 = (uint *)&DAT_00000001;\n          }" { (expression_statement "puVar4 = (uint *)&DAT_00000001;" (assignment_expression "puVar4 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) }))) (expression_statement "puStack_1c8 = &uStack_19c;" (assignment_expression "puStack_1c8 = &uStack_19c" identifier = (pointer_expression "&uStack_19c" & identifier)) ;) (expression_statement "puVar24 = auStack_1a8 + 1;" (assignment_expression "puVar24 = auStack_1a8 + 1" identifier = (binary_expression "auStack_1a8 + 1" identifier + number_literal)) ;) (expression_statement "puVar26 = auStack_1a8;" (assignment_expression "puVar26 = auStack_1a8" identifier = identifier) ;) (expression_statement "auStack_1a8[1] = 0;" (assignment_expression "auStack_1a8[1] = 0" (subscript_expression "auStack_1a8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_1a8[2] = 0;" (assignment_expression "auStack_1a8[2] = 0" (subscript_expression "auStack_1a8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar23 = puVar4;" (assignment_expression "puVar23 = puVar4" identifier = identifier) ;) (expression_statement "puVar27 = puVar24;" (assignment_expression "puVar27 = puVar24" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);" (assignment_expression "puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8)" identifier = (cast_expression "(uint *)rpl_mbrtowc(puVar26,puStack_1c8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "rpl_mbrtowc(puVar26,puStack_1c8)" identifier (argument_list "(puVar26,puStack_1c8)" ( identifier , identifier ))))) ;) (if_statement "if (puVar7 != puVar4) goto LAB_00078a04;" if (parenthesized_expression "(puVar7 != puVar4)" ( (binary_expression "puVar7 != puVar4" identifier != identifier) )) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;)) (expression_statement "uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);" (assignment_expression "uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0])" identifier = (call_expression "(**(code **)(puVar33 + 0x372d8))(auStack_1a8[0])" (parenthesized_expression "(**(code **)(puVar33 + 0x372d8))" ( (pointer_expression "**(code **)(puVar33 + 0x372d8)" * (pointer_expression "*(code **)(puVar33 + 0x372d8)" * (cast_expression "(code **)(puVar33 + 0x372d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372d8)" ( (binary_expression "puVar33 + 0x372d8" identifier + number_literal) ))))) )) (argument_list "(auStack_1a8[0])" ( (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);" (assignment_expression "iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10)" identifier = (call_expression "(**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10)" (parenthesized_expression "(**(code **)(puVar33 + 0x3742c))" ( (pointer_expression "**(code **)(puVar33 + 0x3742c)" * (pointer_expression "*(code **)(puVar33 + 0x3742c)" * (cast_expression "(code **)(puVar33 + 0x3742c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x3742c)" ( (binary_expression "puVar33 + 0x3742c" identifier + number_literal) ))))) )) (argument_list "(puStack_1c8,uVar10)" ( identifier , identifier )))) ;) (expression_statement "puVar26 = puStack_1c8;" (assignment_expression "puVar26 = puStack_1c8" identifier = identifier) ;) (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" identifier = identifier) ;) (if_statement "if (iVar15 == -1) goto LAB_00078a04;" if (parenthesized_expression "(iVar15 == -1)" ( (binary_expression "iVar15 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;)) (expression_statement "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" * (cast_expression "(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (uint)uStack_19c._0_1_)" ( (binary_expression "(int)puVar25 + (uint)uStack_19c._0_1_" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(uint)uStack_19c._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "uStack_19c._0_1_" identifier . field_identifier))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) }) (else_clause "else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }" else (compound_statement "{\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }" { (labeled_statement "LAB_00078a04:\n          puVar21 = (uint *)*puVar19;" statement_identifier : (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;)) (expression_statement "puStack_1c8 = puVar26;" (assignment_expression "puStack_1c8 = puVar26" identifier = identifier) ;) (expression_statement "puVar24 = puVar23;" (assignment_expression "puVar24 = puVar23" identifier = identifier) ;) }))) (labeled_statement "LAB_00078a08:\n        iVar5 = iVar5 + 1;" statement_identifier : (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;)) (expression_statement "puVar26 = puStack_1c8;" (assignment_expression "puVar26 = puStack_1c8" identifier = identifier) ;) (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" identifier = identifier) ;) (if_statement "if ((int)puVar21 <= iVar5) goto LAB_00078a1c;" if (parenthesized_expression "((int)puVar21 <= iVar5)" ( (binary_expression "(int)puVar21 <= iVar5" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00078a1c;" goto statement_identifier ;)) })) (if_statement "if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }" if (parenthesized_expression "(bVar1 == 3)" ( (binary_expression "bVar1 == 3" identifier == number_literal) )) (compound_statement "{\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }" { (expression_statement "iVar30 = 0x20;" (assignment_expression "iVar30 = 0x20" identifier = number_literal) ;) (expression_statement "puStack_1c8 = (uint *)0x0;" (assignment_expression "puStack_1c8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }" { (expression_statement "iVar16 = iVar30 + -0x20;" (assignment_expression "iVar16 = iVar30 + -0x20" identifier = (binary_expression "iVar30 + -0x20" identifier + number_literal)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);" (assignment_expression "uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8)" identifier = (pointer_expression "*(uint *)(*(int *)pbVar8 + (int)puStack_1c8)" * (cast_expression "(uint *)(*(int *)pbVar8 + (int)puStack_1c8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar8 + (int)puStack_1c8)" ( (binary_expression "*(int *)pbVar8 + (int)puStack_1c8" (pointer_expression "*(int *)pbVar8" * (cast_expression "(int *)pbVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (cast_expression "(int)puStack_1c8" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (do_statement "do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);" do (compound_statement "{\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          }" { (if_statement "if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }" if (parenthesized_expression "(((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0))" ( (binary_expression "((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)" (parenthesized_expression "((uVar31 >> (uVar6 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar31 >> (uVar6 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar31 >> (uVar6 & 0x1f) & 1)" ( (binary_expression "uVar31 >> (uVar6 & 0x1f) & 1" (binary_expression "uVar31 >> (uVar6 & 0x1f)" identifier >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)" ( (comma_expression "*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0" (assignment_expression "*(char *)((int)puVar25 + iVar16) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + iVar16)" * (cast_expression "(char *)((int)puVar25 + iVar16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar16)" ( (binary_expression "(int)puVar25 + iVar16" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (char_literal "'\x01'" ' escape_sequence ')) , (binary_expression "uVar20 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }" { (expression_statement "puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);" (assignment_expression "puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180)" identifier = (cast_expression "(uint *)(uint)(iVar16 + 0x80U < 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar16 + 0x80U < 0x180)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar16 + 0x80U < 0x180)" ( (binary_expression "iVar16 + 0x80U < 0x180" (binary_expression "iVar16 + 0x80U" identifier + number_literal) < number_literal) ))))) ;) (if_statement "if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }" if (parenthesized_expression "(puVar23 != (uint *)0x0)" ( (binary_expression "puVar23 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }" { (expression_statement "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();" (assignment_expression "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))()" identifier = (cast_expression "(int *)(**(code **)(puVar33 + 0x372e0))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar33 + 0x372e0))" ( (pointer_expression "**(code **)(puVar33 + 0x372e0)" * (pointer_expression "*(code **)(puVar33 + 0x372e0)" * (cast_expression "(code **)(puVar33 + 0x372e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372e0)" ( (binary_expression "puVar33 + 0x372e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar23 = (uint *)(iVar16 * 4);" (assignment_expression "puVar23 = (uint *)(iVar16 * 4)" identifier = (cast_expression "(uint *)(iVar16 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 * 4)" ( (binary_expression "iVar16 * 4" identifier * number_literal) )))) ;) (expression_statement "*(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23))" * (cast_expression "(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + *(int *)(*piVar9 + (int)puVar23))" ( (binary_expression "(int)puVar25 + *(int *)(*piVar9 + (int)puVar23)" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*piVar9 + (int)puVar23)" * (cast_expression "(int *)(*piVar9 + (int)puVar23)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + (int)puVar23)" ( (binary_expression "*piVar9 + (int)puVar23" (pointer_expression "*piVar9" * identifier) + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar30 != iVar16)" ( (binary_expression "iVar30 != iVar16" identifier != identifier) )) ;) (expression_statement "iVar30 = iVar30 + 0x20;" (assignment_expression "iVar30 = iVar30 + 0x20" identifier = (binary_expression "iVar30 + 0x20" identifier + number_literal)) ;) (expression_statement "puStack_1c8 = (uint *)((int)puStack_1c8 + 4);" (assignment_expression "puStack_1c8 = (uint *)((int)puStack_1c8 + 4)" identifier = (cast_expression "(uint *)((int)puStack_1c8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puStack_1c8 + 4)" ( (binary_expression "(int)puStack_1c8 + 4" (cast_expression "(int)puStack_1c8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar30 == 0x120) break;" if (parenthesized_expression "(iVar30 == 0x120)" ( (binary_expression "iVar30 == 0x120" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar8 = (byte *)(*piVar28 + iVar15);" (assignment_expression "pbVar8 = (byte *)(*piVar28 + iVar15)" identifier = (cast_expression "(byte *)(*piVar28 + iVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + iVar15)" ( (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" * identifier) + identifier) )))) ;) })) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;) })) (if_statement "if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }" if (parenthesized_expression "(bVar1 == 6)" ( (binary_expression "bVar1 == 6" identifier == number_literal) )) (compound_statement "{\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }" { (expression_statement "piVar9 = *(int **)pbVar8;" (assignment_expression "piVar9 = *(int **)pbVar8" identifier = (pointer_expression "*(int **)pbVar8" * (cast_expression "(int **)pbVar8" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }" if (parenthesized_expression "((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0))))" ( (binary_expression "(1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))" (parenthesized_expression "(1 < piVar28[0x17])" ( (binary_expression "1 < piVar28[0x17]" number_literal < (subscript_expression "piVar28[0x17]" identifier [ number_literal ])) )) && (parenthesized_expression "(((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))" ( (parenthesized_expression "((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0))" ( (binary_expression "(piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)" (parenthesized_expression "(piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0'))" ( (binary_expression "piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')" (binary_expression "piVar9[9] != 0" (subscript_expression "piVar9[9]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(*(char *)(piVar9 + 4) < '\0')" ( (binary_expression "*(char *)(piVar9 + 4) < '\0'" (pointer_expression "*(char *)(piVar9 + 4)" * (cast_expression "(char *)(piVar9 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar9 + 4)" ( (binary_expression "piVar9 + 4" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(piVar9[8] != 0)" ( (binary_expression "piVar9[8] != 0" (subscript_expression "piVar9[8]" identifier [ number_literal ]) != number_literal) ))) )) ))) )) (compound_statement "{\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }" { (expression_statement "auStack_1a8[0] = auStack_1a8[0] & 0xffffff;" (assignment_expression "auStack_1a8[0] = auStack_1a8[0] & 0xffffff" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) = (binary_expression "auStack_1a8[0] & 0xffffff" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) & number_literal)) ;) (do_statement "do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');" do (compound_statement "{\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          }" { (expression_statement "puVar24 = (uint *)&DAT_00000001;" (assignment_expression "puVar24 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "puStack_1c8 = (uint *)0x0;" (assignment_expression "puStack_1c8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "auStack_1a8[1] = 0;" (assignment_expression "auStack_1a8[1] = 0" (subscript_expression "auStack_1a8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_1a8[2] = 0;" (assignment_expression "auStack_1a8[2] = 0" (subscript_expression "auStack_1a8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar27 = auStack_1a8 + 1;" (assignment_expression "puVar27 = auStack_1a8 + 1" identifier = (binary_expression "auStack_1a8 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = rpl_mbrtowc(0,auStack_1a8);" (assignment_expression "iVar15 = rpl_mbrtowc(0,auStack_1a8)" identifier = (call_expression "rpl_mbrtowc(0,auStack_1a8)" identifier (argument_list "(0,auStack_1a8)" ( number_literal , identifier )))) ;) (if_statement "if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }" if (parenthesized_expression "(iVar15 == -2)" ( (binary_expression "iVar15 == -2" identifier == number_literal) )) (compound_statement "{\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }" { (expression_statement "*(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_)" * (cast_expression "(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (uint)auStack_1a8[0]._0_1_)" ( (binary_expression "(int)puVar25 + (uint)auStack_1a8[0]._0_1_" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(uint)auStack_1a8[0]._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "auStack_1a8[0]._0_1_" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) . field_identifier))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (expression_statement "cVar13 = auStack_1a8[0]._0_1_ + 1;" (assignment_expression "cVar13 = auStack_1a8[0]._0_1_ + 1" identifier = (binary_expression "auStack_1a8[0]._0_1_ + 1" (field_expression "auStack_1a8[0]._0_1_" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);" (assignment_expression "auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_)" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) = (call_expression "CONCAT13(cVar13,auStack_1a8[0]._1_3_)" identifier (argument_list "(cVar13,auStack_1a8[0]._1_3_)" ( identifier , (field_expression "auStack_1a8[0]._1_3_" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) . field_identifier) )))) ;) }) while (parenthesized_expression "(cVar13 != '\0')" ( (binary_expression "cVar13 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (goto_statement "goto LAB_00078a08;" goto statement_identifier ;) })) (if_statement "if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }" if (parenthesized_expression "(0 < piVar9[5])" ( (binary_expression "0 < piVar9[5]" number_literal < (subscript_expression "piVar9[5]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);" do (compound_statement "{\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          }" { (expression_statement "auStack_1a8[1] = 0;" (assignment_expression "auStack_1a8[1] = 0" (subscript_expression "auStack_1a8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_1a8[2] = 0;" (assignment_expression "auStack_1a8[2] = 0" (subscript_expression "auStack_1a8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar26 = &uStack_19c;" (assignment_expression "puVar26 = &uStack_19c" identifier = (pointer_expression "&uStack_19c" & identifier)) ;) (expression_statement "puVar23 = auStack_1a8 + 1;" (assignment_expression "puVar23 = auStack_1a8 + 1" identifier = (binary_expression "auStack_1a8 + 1" identifier + number_literal)) ;) (expression_statement "iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));" (assignment_expression "iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4))" identifier = (call_expression "(**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4))" (parenthesized_expression "(**(code **)(puVar33 + 0x3742c))" ( (pointer_expression "**(code **)(puVar33 + 0x3742c)" * (pointer_expression "*(code **)(puVar33 + 0x3742c)" * (cast_expression "(code **)(puVar33 + 0x3742c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x3742c)" ( (binary_expression "puVar33 + 0x3742c" identifier + number_literal) ))))) )) (argument_list "(&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4))" ( (pointer_expression "&uStack_19c" & identifier) , (pointer_expression "*(undefined4 *)(*piVar9 + iVar15 * 4)" * (cast_expression "(undefined4 *)(*piVar9 + iVar15 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + iVar15 * 4)" ( (binary_expression "*piVar9 + iVar15 * 4" (pointer_expression "*piVar9" * identifier) + (binary_expression "iVar15 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }" if (parenthesized_expression "(iVar30 != -1)" ( (binary_expression "iVar30 != -1" identifier != number_literal) )) (compound_statement "{\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }" { (expression_statement "uVar6 = (uint)uStack_19c._0_1_;" (assignment_expression "uVar6 = (uint)uStack_19c._0_1_" identifier = (cast_expression "(uint)uStack_19c._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "uStack_19c._0_1_" identifier . field_identifier))) ;) (expression_statement "*(char *)((int)puVar25 + uVar6) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + uVar6) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + uVar6)" * (cast_expression "(char *)((int)puVar25 + uVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + uVar6)" ( (binary_expression "(int)puVar25 + uVar6" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (compound_statement "{\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }" { (expression_statement "piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();" (assignment_expression "piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))()" identifier = (cast_expression "(int *)(**(code **)(puVar33 + 0x372e0))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar33 + 0x372e0))" ( (pointer_expression "**(code **)(puVar33 + 0x372e0)" * (pointer_expression "*(code **)(puVar33 + 0x372e0)" * (cast_expression "(code **)(puVar33 + 0x372e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372e0)" ( (binary_expression "puVar33 + 0x372e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar26 = (uint *)(*piVar11 + uVar6 * 4);" (assignment_expression "puVar26 = (uint *)(*piVar11 + uVar6 * 4)" identifier = (cast_expression "(uint *)(*piVar11 + uVar6 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + uVar6 * 4)" ( (binary_expression "*piVar11 + uVar6 * 4" (pointer_expression "*piVar11" * identifier) + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "*(char *)((int)puVar25 + *puVar26) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + *puVar26) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + *puVar26)" * (cast_expression "(char *)((int)puVar25 + *puVar26)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + *puVar26)" ( (binary_expression "(int)puVar25 + *puVar26" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*puVar26" * identifier)) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) (if_statement "if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }" if (parenthesized_expression "(((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17]))" ( (binary_expression "((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])" (parenthesized_expression "((puVar18[3] & 0x400000) != 0)" ( (binary_expression "(puVar18[3] & 0x400000) != 0" (parenthesized_expression "(puVar18[3] & 0x400000)" ( (binary_expression "puVar18[3] & 0x400000" (subscript_expression "puVar18[3]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(1 < piVar28[0x17])" ( (binary_expression "1 < piVar28[0x17]" number_literal < (subscript_expression "piVar28[0x17]" identifier [ number_literal ])) ))) )) (compound_statement "{\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }" { (expression_statement "uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));" (assignment_expression "uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4))" identifier = (call_expression "(**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4))" (parenthesized_expression "(**(code **)(puVar33 + 0x372d8))" ( (pointer_expression "**(code **)(puVar33 + 0x372d8)" * (pointer_expression "*(code **)(puVar33 + 0x372d8)" * (cast_expression "(code **)(puVar33 + 0x372d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372d8)" ( (binary_expression "puVar33 + 0x372d8" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(*piVar9 + iVar15 * 4))" ( (pointer_expression "*(undefined4 *)(*piVar9 + iVar15 * 4)" * (cast_expression "(undefined4 *)(*piVar9 + iVar15 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + iVar15 * 4)" ( (binary_expression "*piVar9 + iVar15 * 4" (pointer_expression "*piVar9" * identifier) + (binary_expression "iVar15 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "puVar26 = &uStack_19c;" (assignment_expression "puVar26 = &uStack_19c" identifier = (pointer_expression "&uStack_19c" & identifier)) ;) (expression_statement "puVar23 = auStack_1a8 + 1;" (assignment_expression "puVar23 = auStack_1a8 + 1" identifier = (binary_expression "auStack_1a8 + 1" identifier + number_literal)) ;) (expression_statement "iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);" (assignment_expression "iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10)" identifier = (call_expression "(**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10)" (parenthesized_expression "(**(code **)(puVar33 + 0x3742c))" ( (pointer_expression "**(code **)(puVar33 + 0x3742c)" * (pointer_expression "*(code **)(puVar33 + 0x3742c)" * (cast_expression "(code **)(puVar33 + 0x3742c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x3742c)" ( (binary_expression "puVar33 + 0x3742c" identifier + number_literal) ))))) )) (argument_list "(&uStack_19c,uVar10)" ( (pointer_expression "&uStack_19c" & identifier) , identifier )))) ;) (if_statement "if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }" if (parenthesized_expression "(iVar30 != -1)" ( (binary_expression "iVar30 != -1" identifier != number_literal) )) (compound_statement "{\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }" { (expression_statement "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" * (cast_expression "(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (uint)uStack_19c._0_1_)" ( (binary_expression "(int)puVar25 + (uint)uStack_19c._0_1_" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(uint)uStack_19c._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "uStack_19c._0_1_" identifier . field_identifier))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 < piVar9[5])" ( (binary_expression "iVar15 < piVar9[5]" identifier < (subscript_expression "piVar9[5]" identifier [ number_literal ])) )) ;) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;) })) }) (else_clause "else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }" else (compound_statement "{\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }" { (if_statement "if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }" if (parenthesized_expression "((bVar1 & 0xfd) == 5)" ( (binary_expression "(bVar1 & 0xfd) == 5" (parenthesized_expression "(bVar1 & 0xfd)" ( (binary_expression "bVar1 & 0xfd" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }" { (if_statement "if (puStack_9c == (uint *)*puVar14) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }" if (parenthesized_expression "(puStack_9c == (uint *)*puVar14)" ( (binary_expression "puStack_9c == (uint *)*puVar14" identifier == (cast_expression "(uint *)*puVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }" { comment comment (expression_statement "puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);" (assignment_expression "puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100)" identifier = (cast_expression "(uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100)" (parenthesized_expression "(**(code **)(puVar33 + 0x374f4))" ( (pointer_expression "**(code **)(puVar33 + 0x374f4)" * (pointer_expression "*(code **)(puVar33 + 0x374f4)" * (cast_expression "(code **)(puVar33 + 0x374f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x374f4)" ( (binary_expression "puVar33 + 0x374f4" identifier + number_literal) ))))) )) (argument_list "(puVar25,1,0x100)" ( identifier , number_literal , number_literal ))))) ;) (return_statement "return puVar19;" return identifier ;) })) (goto_statement "goto LAB_00078e4c;" goto statement_identifier ;) })) (if_statement "if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }" if (parenthesized_expression "(bVar1 == 2)" ( (binary_expression "bVar1 == 2" identifier == number_literal) )) (compound_statement "{\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }" { (expression_statement "puVar24 = (uint *)0x100;" (assignment_expression "puVar24 = (uint *)0x100" identifier = (cast_expression "(uint *)0x100" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar21 = (uint *)&DAT_00000001;" (assignment_expression "puVar21 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "(**(code **)(puVar33 + 0x374f4))();" (call_expression "(**(code **)(puVar33 + 0x374f4))()" (parenthesized_expression "(**(code **)(puVar33 + 0x374f4))" ( (pointer_expression "**(code **)(puVar33 + 0x374f4)" * (pointer_expression "*(code **)(puVar33 + 0x374f4)" * (cast_expression "(code **)(puVar33 + 0x374f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x374f4)" ( (binary_expression "puVar33 + 0x374f4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;" (assignment_expression "*(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80" (pointer_expression "*(byte *)(puVar18 + 7)" * (cast_expression "(byte *)(puVar18 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 7)" ( (binary_expression "puVar18 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar18 + 7) & 0x7f | 0x80" (binary_expression "*(byte *)(puVar18 + 7) & 0x7f" (pointer_expression "*(byte *)(puVar18 + 7)" * (cast_expression "(byte *)(puVar18 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 7)" ( (binary_expression "puVar18 + 7" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "puVar26 = puVar25;" (assignment_expression "puVar26 = puVar25" identifier = identifier) ;) (break_statement "break;" break ;) })) }))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar24 = puVar23;" (assignment_expression "puVar24 = puVar23" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 < (int)puVar21)" ( (binary_expression "iVar5 < (int)puVar21" identifier < (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "LAB_00078a1c:\n  puVar23 = puVar24;" statement_identifier : (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" identifier = identifier) ;)) (if_statement "if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }" if (parenthesized_expression "(puStack_9c == (uint *)*puVar14)" ( (binary_expression "puStack_9c == (uint *)*puVar14" identifier == (cast_expression "(uint *)*puVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) )) (compound_statement "{\n    return (uint *)*puVar14;\n  }" { (return_statement "return (uint *)*puVar14;" return (cast_expression "(uint *)*puVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier)) ;) })) (labeled_statement "LAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);" statement_identifier : (expression_statement "pcVar35 = *(code **)(puVar33 + 0x37334);" (assignment_expression "pcVar35 = *(code **)(puVar33 + 0x37334)" identifier = (pointer_expression "*(code **)(puVar33 + 0x37334)" * (cast_expression "(code **)(puVar33 + 0x37334)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x37334)" ( (binary_expression "puVar33 + 0x37334" identifier + number_literal) ))))) ;)) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar26 = puVar26 + (int)puVar23 * 2;" (assignment_expression "puVar26 = puVar26 + (int)puVar23 * 2" identifier = (binary_expression "puVar26 + (int)puVar23 * 2" identifier + (binary_expression "(int)puVar23 * 2" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "uVar20 = (uint)*(byte *)(puVar26 + 1);" (assignment_expression "uVar20 = (uint)*(byte *)(puVar26 + 1)" identifier = (binary_expression "(uint)*(byte *)(puVar26 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar26 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 1)" ( (binary_expression "puVar26 + 1" identifier + number_literal) ))))) ;) (if_statement "if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" if (parenthesized_expression "(uVar20 == 7)" ( (binary_expression "uVar20 == 7" identifier == number_literal) )) (compound_statement "{\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }" { (expression_statement "pbVar8 = puVar34 + puVar27[1];" (assignment_expression "pbVar8 = puVar34 + puVar27[1]" identifier = (binary_expression "puVar34 + puVar27[1]" identifier + (subscript_expression "puVar27[1]" identifier [ number_literal ]))) ;) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "(bVar1 < 0xc2)" ( (binary_expression "bVar1 < 0xc2" identifier < number_literal) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91))" ( (binary_expression "(int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)" (cast_expression "(int)puVar27[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar27[0xc]" identifier [ number_literal ])) <= (cast_expression "(int)(puVar33 + 0x3eb91)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar33 + 0x3eb91)" ( (binary_expression "puVar33 + 0x3eb91" identifier + number_literal) )))) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar2 = pbVar8[1];" (assignment_expression "bVar2 = pbVar8[1]" identifier = (subscript_expression "pbVar8[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xe0)" ( (binary_expression "bVar1 < 0xe0" identifier < number_literal) )) (compound_statement "{\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }" { (if_statement "if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }" if (parenthesized_expression "((bVar2 ^ 0x80) < 0x40)" ( (binary_expression "(bVar2 ^ 0x80) < 0x40" (parenthesized_expression "(bVar2 ^ 0x80)" ( (binary_expression "bVar2 ^ 0x80" identifier ^ number_literal) )) < number_literal) )) (compound_statement "{\n        return (uint *)0x2;\n      }" { (return_statement "return (uint *)0x2;" return (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }" else (compound_statement "{\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }" { (if_statement "if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xf0)" ( (binary_expression "bVar1 < 0xf0" identifier < number_literal) )) (compound_statement "{\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }" { (if_statement "if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xe0) && (bVar2 < 0xa0))" ( (binary_expression "(bVar1 == 0xe0) && (bVar2 < 0xa0)" (parenthesized_expression "(bVar1 == 0xe0)" ( (binary_expression "bVar1 == 0xe0" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0xa0)" ( (binary_expression "bVar2 < 0xa0" identifier < number_literal) ))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar19 = (uint *)0x3;" (assignment_expression "puVar19 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" else (if_statement "if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xf8)" ( (binary_expression "bVar1 < 0xf8" identifier < number_literal) )) (compound_statement "{\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }" { (expression_statement "puVar19 = (uint *)&DAT_00000004;" (assignment_expression "puVar19 = (uint *)&DAT_00000004" identifier = (cast_expression "(uint *)&DAT_00000004" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000004" & identifier))) ;) (if_statement "if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xf0) && (bVar2 < 0x90))" ( (binary_expression "(bVar1 == 0xf0) && (bVar2 < 0x90)" (parenthesized_expression "(bVar1 == 0xf0)" ( (binary_expression "bVar1 == 0xf0" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x90)" ( (binary_expression "bVar2 < 0x90" identifier < number_literal) ))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" else (if_statement "if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xfc)" ( (binary_expression "bVar1 < 0xfc" identifier < number_literal) )) (compound_statement "{\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }" { (expression_statement "puVar19 = (uint *)0x5;" (assignment_expression "puVar19 = (uint *)0x5" identifier = (cast_expression "(uint *)0x5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xf8) && (bVar2 < 0x88))" ( (binary_expression "(bVar1 == 0xf8) && (bVar2 < 0x88)" (parenthesized_expression "(bVar1 == 0xf8)" ( (binary_expression "bVar1 == 0xf8" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x88)" ( (binary_expression "bVar2 < 0x88" identifier < number_literal) ))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" else (compound_statement "{\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" { (if_statement "if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(0xfd < bVar1)" ( (binary_expression "0xfd < bVar1" number_literal < identifier) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar19 = (uint *)0x6;" (assignment_expression "puVar19 = (uint *)0x6" identifier = (cast_expression "(uint *)0x6" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xfc) && (bVar2 < 0x84))" ( (binary_expression "(bVar1 == 0xfc) && (bVar2 < 0x84)" (parenthesized_expression "(bVar1 == 0xfc)" ( (binary_expression "bVar1 == 0xfc" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x84)" ( (binary_expression "bVar2 < 0x84" identifier < number_literal) ))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))))))) (expression_statement "pbVar12 = puVar33 + 0x3eb91 + puVar27[1];" (assignment_expression "pbVar12 = puVar33 + 0x3eb91 + puVar27[1]" identifier = (binary_expression "puVar33 + 0x3eb91 + puVar27[1]" (binary_expression "puVar33 + 0x3eb91" identifier + number_literal) + (subscript_expression "puVar27[1]" identifier [ number_literal ]))) ;) (if_statement "if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }" if (parenthesized_expression "((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc])" ( (binary_expression "(int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]" (cast_expression "(int)(puVar34 + (int)puVar19)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar34 + (int)puVar19)" ( (binary_expression "puVar34 + (int)puVar19" identifier + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (cast_expression "(int)puVar27[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar27[0xc]" identifier [ number_literal ]))) )) (compound_statement "{\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }" { (do_statement "do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);" do (compound_statement "{\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        }" { (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (if_statement "if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }" if (parenthesized_expression "(0x3f < (bVar1 ^ 0x80))" ( (binary_expression "0x3f < (bVar1 ^ 0x80)" number_literal < (parenthesized_expression "(bVar1 ^ 0x80)" ( (binary_expression "bVar1 ^ 0x80" identifier ^ number_literal) ))) )) (compound_statement "{\n            return (uint *)0x0;\n          }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) while (parenthesized_expression "(pbVar8 + (int)puVar19 != pbVar12)" ( (binary_expression "pbVar8 + (int)puVar19 != pbVar12" (binary_expression "pbVar8 + (int)puVar19" identifier + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) (return_statement "return puVar19;" return identifier ;) })) }))) }) (else_clause "else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" else (if_statement "if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" if (parenthesized_expression "(puVar27[0x14] != 1)" ( (binary_expression "puVar27[0x14] != 1" (subscript_expression "puVar27[0x14]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" { (expression_statement "puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);" (assignment_expression "puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34)" identifier = (cast_expression "(uint *)FUN_00072ef0(puVar27,puVar34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00072ef0(puVar27,puVar34)" identifier (argument_list "(puVar27,puVar34)" ( identifier , identifier ))))) ;) (if_statement "if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" if (parenthesized_expression "(uVar20 == 5)" ( (binary_expression "uVar20 == 5" identifier == number_literal) )) (compound_statement "{\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }" { (if_statement "if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }" if (parenthesized_expression "((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n'))))" ( (binary_expression "(1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))" (parenthesized_expression "(1 < (int)puVar19)" ( (binary_expression "1 < (int)puVar19" number_literal < (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))" ( (parenthesized_expression "((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n'))" ( (binary_expression "(*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')" (binary_expression "(*puVar21 & 0x40) != 0" (parenthesized_expression "(*puVar21 & 0x40)" ( (binary_expression "*puVar21 & 0x40" (pointer_expression "*puVar21" * identifier) & number_literal) )) != number_literal) || (parenthesized_expression "(puVar34[puVar27[1]] != '\n')" ( (binary_expression "puVar34[puVar27[1]] != '\n'" (subscript_expression "puVar34[puVar27[1]]" identifier [ (subscript_expression "puVar27[1]" identifier [ number_literal ]) ]) != (char_literal "'\n'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }" { (if_statement "if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }" if (parenthesized_expression "((*puVar21 & 0x80) == 0)" ( (binary_expression "(*puVar21 & 0x80) == 0" (parenthesized_expression "(*puVar21 & 0x80)" ( (binary_expression "*puVar21 & 0x80" (pointer_expression "*puVar21" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          return puVar19;\n        }" { (return_statement "return puVar19;" return identifier ;) })) (if_statement "if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }" if (parenthesized_expression "(puVar34[puVar27[1]] != '\0')" ( (binary_expression "puVar34[puVar27[1]] != '\0'" (subscript_expression "puVar34[puVar27[1]]" identifier [ (subscript_expression "puVar27[1]" identifier [ number_literal ]) ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return puVar19;\n        }" { (return_statement "return puVar19;" return identifier ;) })) })) }) (else_clause "else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" else (if_statement "if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" if (parenthesized_expression "((1 < (int)puVar19) && (uVar20 == 6))" ( (binary_expression "(1 < (int)puVar19) && (uVar20 == 6)" (parenthesized_expression "(1 < (int)puVar19)" ( (binary_expression "1 < (int)puVar19" number_literal < (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar20 == 6)" ( (binary_expression "uVar20 == 6" identifier == number_literal) ))) )) (compound_statement "{\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" { (expression_statement "piVar28 = (int *)*puVar26;" (assignment_expression "piVar28 = (int *)*puVar26" identifier = (cast_expression "(int *)*puVar26" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar26" * identifier))) ;) (expression_statement "iVar15 = piVar28[8];" (assignment_expression "iVar15 = piVar28[8]" identifier = (subscript_expression "piVar28[8]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = piVar28[5];" (assignment_expression "iVar5 = piVar28[5]" identifier = (subscript_expression "piVar28[5]" identifier [ number_literal ])) ;) (if_statement "if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }" if (parenthesized_expression "((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0))" ( (binary_expression "(iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)" (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar5 == 0 && piVar28[9] == 0)" ( (binary_expression "iVar5 == 0 && piVar28[9] == 0" (binary_expression "iVar5 == 0" identifier == number_literal) && (binary_expression "piVar28[9] == 0" (subscript_expression "piVar28[9]" identifier [ number_literal ]) == number_literal)) ))) )) (compound_statement "{\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }" { (labeled_statement "LAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }" statement_identifier : (if_statement "if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(-1 < *(char *)(piVar28 + 4))" ( (binary_expression "-1 < *(char *)(piVar28 + 4)" number_literal < (pointer_expression "*(char *)(piVar28 + 4)" * (cast_expression "(char *)(piVar28 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28 + 4)" ( (binary_expression "piVar28 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return puVar19;" return identifier ;) })) (expression_statement "iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);" (assignment_expression "iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4)" identifier = (pointer_expression "*(int *)(puVar27[2] + (int)puVar34 * 4)" * (cast_expression "(int *)(puVar27[2] + (int)puVar34 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27[2] + (int)puVar34 * 4)" ( (binary_expression "puVar27[2] + (int)puVar34 * 4" (subscript_expression "puVar27[2]" identifier [ number_literal ]) + (binary_expression "(int)puVar34 * 4" (cast_expression "(int)puVar34" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (if_statement "if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }" if (parenthesized_expression "(iVar5 < 1)" ( (binary_expression "iVar5 < 1" identifier < number_literal) )) (compound_statement "{\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }" { (labeled_statement "LAB_00078fc4:\n        iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) (if_statement "if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }" if (parenthesized_expression "(piVar28[9] < 1)" ( (binary_expression "piVar28[9] < 1" (subscript_expression "piVar28[9]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }" { (labeled_statement "LAB_000790c0:\n          iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) (if_statement "if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }" if (parenthesized_expression "(0 < iVar15)" ( (binary_expression "0 < iVar15" number_literal < identifier) )) (compound_statement "{\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }" { (expression_statement "piVar9 = (int *)piVar28[1];" (assignment_expression "piVar9 = (int *)piVar28[1]" identifier = (cast_expression "(int *)piVar28[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar28[1]" identifier [ number_literal ]))) ;) (do_statement "do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);" do (compound_statement "{\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            }" { (expression_statement "iVar16 = *piVar9;" (assignment_expression "iVar16 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar22 = iVar5 * 4;" (assignment_expression "iVar22 = iVar5 * 4" identifier = (binary_expression "iVar5 * 4" identifier * number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;" if (parenthesized_expression "((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))" ( (binary_expression "(iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22))" (parenthesized_expression "(iVar16 <= iVar30)" ( (binary_expression "iVar16 <= iVar30" identifier <= identifier) )) && (parenthesized_expression "(iVar30 <= *(int *)(piVar28[2] + iVar22))" ( (binary_expression "iVar30 <= *(int *)(piVar28[2] + iVar22)" identifier <= (pointer_expression "*(int *)(piVar28[2] + iVar22)" * (cast_expression "(int *)(piVar28[2] + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28[2] + iVar22)" ( (binary_expression "piVar28[2] + iVar22" (subscript_expression "piVar28[2]" identifier [ number_literal ]) + identifier) ))))) ))) )) (goto_statement "goto LAB_00079010;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar5 != iVar15)" ( (binary_expression "iVar5 != iVar15" identifier != identifier) )) ;) })) (goto_statement "goto LAB_00079104;" goto statement_identifier ;) })) (expression_statement "iVar15 = piVar28[3];" (assignment_expression "iVar15 = piVar28[3]" identifier = (subscript_expression "piVar28[3]" identifier [ number_literal ])) ;) (while_statement "while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }" { (expression_statement "iVar16 = iVar5 * 4;" (assignment_expression "iVar16 = iVar5 * 4" identifier = (binary_expression "iVar5 * 4" identifier * number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));" (assignment_expression "iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16))" identifier = (call_expression "(**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16))" (parenthesized_expression "(**(code **)(pcVar35 + 0x36d08))" ( (pointer_expression "**(code **)(pcVar35 + 0x36d08)" * (pointer_expression "*(code **)(pcVar35 + 0x36d08)" * (cast_expression "(code **)(pcVar35 + 0x36d08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x36d08)" ( (binary_expression "pcVar35 + 0x36d08" identifier + number_literal) ))))) )) (argument_list "(iVar30,*(undefined4 *)(iVar15 + iVar16))" ( identifier , (pointer_expression "*(undefined4 *)(iVar15 + iVar16)" * (cast_expression "(undefined4 *)(iVar15 + iVar16)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar16)" ( (binary_expression "iVar15 + iVar16" identifier + identifier) )))) )))) ;) (if_statement "if (iVar15 != 0) break;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }" if (parenthesized_expression "(piVar28[9] <= iVar5)" ( (binary_expression "piVar28[9] <= iVar5" (subscript_expression "piVar28[9]" identifier [ number_literal ]) <= identifier) )) (compound_statement "{\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }" { (expression_statement "iVar15 = piVar28[8];" (assignment_expression "iVar15 = piVar28[8]" identifier = (subscript_expression "piVar28[8]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000790c0;" goto statement_identifier ;) })) (expression_statement "iVar15 = piVar28[3];" (assignment_expression "iVar15 = piVar28[3]" identifier = (subscript_expression "piVar28[3]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }" else (compound_statement "{\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }" { (expression_statement "piVar9 = (int *)*piVar28;" (assignment_expression "piVar9 = (int *)*piVar28" identifier = (cast_expression "(int *)*piVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar28" * identifier))) ;) (if_statement "if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }" if (parenthesized_expression "(*piVar9 != iVar30)" ( (binary_expression "*piVar9 != iVar30" (pointer_expression "*piVar9" * identifier) != identifier) )) (compound_statement "{\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);" do (compound_statement "{\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          }" { (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (if_statement "if (iVar16 == iVar5) goto LAB_00078fc4;" if (parenthesized_expression "(iVar16 == iVar5)" ( (binary_expression "iVar16 == iVar5" identifier == identifier) )) (goto_statement "goto LAB_00078fc4;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar30 != *piVar9)" ( (binary_expression "iVar30 != *piVar9" identifier != (pointer_expression "*piVar9" * identifier)) )) ;) })) }))) (labeled_statement "LAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }" statement_identifier : (if_statement "if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(*(char *)(piVar28 + 4) < '\0')" ( (binary_expression "*(char *)(piVar28 + 4) < '\0'" (pointer_expression "*(char *)(piVar28 + 4)" * (cast_expression "(char *)(piVar28 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28 + 4)" ( (binary_expression "piVar28 + 4" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return puVar19;" return identifier ;) })))) })))) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nbin_tree_t *\nbuild_charclass_op(re_dfa_t *dfa,uchar *trans,char *class_name,char *extra,_Bool non_match,\n                  reg_errcode_t *err)\n\n{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  anon_union_4_5_a39f51ca_for_opr sbcset;\n  reg_errcode_t rVar5;\n  uint uVar6;\n  wchar_t **ppwVar7;\n  re_string_t *prVar8;\n  byte *pbVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  re_string_t *prVar12;\n  undefined4 uVar13;\n  int iVar14;\n  int *piVar15;\n  size_t sVar16;\n  char cVar20;\n  bin_tree_t *pbVar17;\n  byte *pbVar18;\n  bin_tree_t *pbVar19;\n  undefined4 *puVar21;\n  int iVar22;\n  re_bitset_ptr_t pbVar23;\n  bin_tree_t *pbVar24;\n  anon_union_4_5_a39f51ca_for_opr aVar25;\n  uint uVar26;\n  uint *puVar27;\n  re_string_t *mbcset;\n  re_string_t *prVar28;\n  re_string_t *ps;\n  bin_tree_t *pbVar29;\n  re_string_t *token;\n  re_string_t *prVar30;\n  re_string_t *pstr;\n  bin_tree_t **ppbVar31;\n  int iVar32;\n  int *piVar33;\n  undefined *puVar34;\n  bin_tree_t *pbVar35;\n  bin_tree_t *pbVar36;\n  bin_tree_t *pbVar37;\n  undefined1 *puVar38;\n  uint uVar39;\n  anon_union_4_5_a39f51ca_for_opr unaff_s5;\n  anon_union_4_5_a39f51ca_for_opr unaff_s6;\n  undefined1 *puVar40;\n  undefined1 *puVar41;\n  int iVar42;\n  undefined *puVar43;\n  undefined *idx;\n  code *pcVar44;\n  re_string_t *prStackY_1c8;\n  undefined1 auStackY_1a8 [8];\n  wint_t *pwStackY_1a0;\n  re_string_t arStackY_19c [3];\n  re_string_t *prStackY_9c;\n  re_dfa_t *prStackY_98;\n  undefined *puStackY_94;\n  undefined *puStackY_90;\n  reg_errcode_t *prStackY_8c;\n  bin_tree_storage_t **ppbStackY_88;\n  anon_union_4_5_a39f51ca_for_opr aStackY_84;\n  anon_union_4_5_a39f51ca_for_opr aStackY_80;\n  int *piStackY_7c;\n  re_string_t *prStackY_78;\n  code *pcStackY_74;\n  Idx alloc;\n  re_token_t br_token;\n  re_token_t t;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  aVar25.idx = 1;\n  alloc = 0;\n  puVar4 = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar34 = (undefined *)(uint)non_match;\n  mbcset = (re_string_t *)class_name;\n  token = (re_string_t *)extra;\n  sbcset.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (sbcset.sbcset == (re_bitset_ptr_t)0x0) {\nLAB_00078814:\n    sbcset = unaff_s5;\n    prVar8 = (re_string_t *)0x0;\n    *err = _REG_ESPACE;\n  }\n  else {\n    aVar25.idx = 1;\n    unaff_s6.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if ((re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0) {\n      prVar8 = (re_string_t *)0x0;\n      (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n      *err = _REG_ESPACE;\n    }\n    else {\n      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;\n      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;\n      *(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);\n      aVar25.sbcset = sbcset.sbcset;\n      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);\n      if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }\n    }\n  }\n  if (puVar4 == *(undefined4 **)puVar3) {\n    return (bin_tree_t *)prVar8;\n  }\n  pcVar44 = re_compile_fastmap_iter;\n  puVar43 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  idx = puVar43 + 0x3eb90;\n  puVar21 = *(undefined4 **)(puVar43 + 0x3739c);\n  puStackY_94 = puVar3;\n  piVar33 = (int *)*puVar4;\n  prStackY_9c = (re_string_t *)*puVar21;\n  prStackY_8c = err;\n  if (piVar33[0x17] == 1) {\n    uVar26 = (uint)(puVar4[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar26 = 0;\n  }\n  puVar27 = (uint *)(aVar25.mbcset)->mbchars;\n  iVar32 = 0;\n  prVar30 = prStackY_9c;\n  prVar28 = mbcset;\n  ps = mbcset;\n  pstr = token;\n  prStackY_98 = dfa;\n  puStackY_90 = puVar34;\n  ppbStackY_88 = (bin_tree_storage_t **)extra;\n  aStackY_84 = sbcset;\n  aStackY_80 = unaff_s6;\n  piStackY_7c = (int *)trans;\n  prStackY_78 = prVar8;\n  pcStackY_74 = pcVar44;\n  if (0 < (int)puVar27) {\n    do {\n      while( true ) {\n        prVar30 = (re_string_t *)mbcset->raw_mbs;\n        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];\n        iVar22 = (int)pbVar37 * 8;\n        pbVar9 = (byte *)(*piVar33 + iVar22);\n        bVar1 = pbVar9[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar9;\n        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;\n        if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }\n        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }\nLAB_00078a08:\n        iVar32 = iVar32 + 1;\n        prVar30 = prStackY_1c8;\n        prVar28 = ps;\n        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar14 = 0x20;\n        prStackY_1c8 = (re_string_t *)0x0;\n        while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar10 = *(int **)pbVar9;\n        if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }\n      iVar32 = iVar32 + 1;\n      ps = prVar28;\n    } while (iVar32 < (int)puVar27);\n  }\nLAB_00078a1c:\n  prVar28 = ps;\n  if (prStackY_9c == (re_string_t *)*puVar21) {\n    return (bin_tree_t *)*puVar21;\n  }\nLAB_00078e4c:\n  pcVar44 = *(code **)(puVar43 + 0x37334);\n  (*pcVar44)();\n  ppbVar31 = (bin_tree_t **)(&prVar30->raw_mbs + (int)prVar28 * 2);\n  uVar26 = (uint)*(byte *)(ppbVar31 + 1);\n  if (uVar26 == 7) {\n    pbVar9 = pstr->mbs + (int)idx;\n    bVar1 = *pbVar9;\n    if (bVar1 < 0xc2) {\n      return (bin_tree_t *)0x0;\n    }\n    if (pstr->len <= (int)(puVar43 + 0x3eb91)) {\n      return (bin_tree_t *)0x0;\n    }\n    bVar2 = pbVar9[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (bin_tree_t *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);\n      if ((int)(idx + (int)pbVar37) <= pstr->len) {\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }\n    }\n  }\n  else if (pstr->mb_cur_max != 1) {\n    pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx);\n    if (uVar26 == 5) {\n      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }\n    }\n    else if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }\n  }\n  return (bin_tree_t *)0x0;\n}\n\n" comment (function_definition "bin_tree_t *\nbuild_charclass_op(re_dfa_t *dfa,uchar *trans,char *class_name,char *extra,_Bool non_match,\n                  reg_errcode_t *err)\n\n{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  anon_union_4_5_a39f51ca_for_opr sbcset;\n  reg_errcode_t rVar5;\n  uint uVar6;\n  wchar_t **ppwVar7;\n  re_string_t *prVar8;\n  byte *pbVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  re_string_t *prVar12;\n  undefined4 uVar13;\n  int iVar14;\n  int *piVar15;\n  size_t sVar16;\n  char cVar20;\n  bin_tree_t *pbVar17;\n  byte *pbVar18;\n  bin_tree_t *pbVar19;\n  undefined4 *puVar21;\n  int iVar22;\n  re_bitset_ptr_t pbVar23;\n  bin_tree_t *pbVar24;\n  anon_union_4_5_a39f51ca_for_opr aVar25;\n  uint uVar26;\n  uint *puVar27;\n  re_string_t *mbcset;\n  re_string_t *prVar28;\n  re_string_t *ps;\n  bin_tree_t *pbVar29;\n  re_string_t *token;\n  re_string_t *prVar30;\n  re_string_t *pstr;\n  bin_tree_t **ppbVar31;\n  int iVar32;\n  int *piVar33;\n  undefined *puVar34;\n  bin_tree_t *pbVar35;\n  bin_tree_t *pbVar36;\n  bin_tree_t *pbVar37;\n  undefined1 *puVar38;\n  uint uVar39;\n  anon_union_4_5_a39f51ca_for_opr unaff_s5;\n  anon_union_4_5_a39f51ca_for_opr unaff_s6;\n  undefined1 *puVar40;\n  undefined1 *puVar41;\n  int iVar42;\n  undefined *puVar43;\n  undefined *idx;\n  code *pcVar44;\n  re_string_t *prStackY_1c8;\n  undefined1 auStackY_1a8 [8];\n  wint_t *pwStackY_1a0;\n  re_string_t arStackY_19c [3];\n  re_string_t *prStackY_9c;\n  re_dfa_t *prStackY_98;\n  undefined *puStackY_94;\n  undefined *puStackY_90;\n  reg_errcode_t *prStackY_8c;\n  bin_tree_storage_t **ppbStackY_88;\n  anon_union_4_5_a39f51ca_for_opr aStackY_84;\n  anon_union_4_5_a39f51ca_for_opr aStackY_80;\n  int *piStackY_7c;\n  re_string_t *prStackY_78;\n  code *pcStackY_74;\n  Idx alloc;\n  re_token_t br_token;\n  re_token_t t;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  aVar25.idx = 1;\n  alloc = 0;\n  puVar4 = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar34 = (undefined *)(uint)non_match;\n  mbcset = (re_string_t *)class_name;\n  token = (re_string_t *)extra;\n  sbcset.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (sbcset.sbcset == (re_bitset_ptr_t)0x0) {\nLAB_00078814:\n    sbcset = unaff_s5;\n    prVar8 = (re_string_t *)0x0;\n    *err = _REG_ESPACE;\n  }\n  else {\n    aVar25.idx = 1;\n    unaff_s6.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if ((re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0) {\n      prVar8 = (re_string_t *)0x0;\n      (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n      *err = _REG_ESPACE;\n    }\n    else {\n      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;\n      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;\n      *(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);\n      aVar25.sbcset = sbcset.sbcset;\n      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);\n      if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }\n    }\n  }\n  if (puVar4 == *(undefined4 **)puVar3) {\n    return (bin_tree_t *)prVar8;\n  }\n  pcVar44 = re_compile_fastmap_iter;\n  puVar43 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  idx = puVar43 + 0x3eb90;\n  puVar21 = *(undefined4 **)(puVar43 + 0x3739c);\n  puStackY_94 = puVar3;\n  piVar33 = (int *)*puVar4;\n  prStackY_9c = (re_string_t *)*puVar21;\n  prStackY_8c = err;\n  if (piVar33[0x17] == 1) {\n    uVar26 = (uint)(puVar4[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar26 = 0;\n  }\n  puVar27 = (uint *)(aVar25.mbcset)->mbchars;\n  iVar32 = 0;\n  prVar30 = prStackY_9c;\n  prVar28 = mbcset;\n  ps = mbcset;\n  pstr = token;\n  prStackY_98 = dfa;\n  puStackY_90 = puVar34;\n  ppbStackY_88 = (bin_tree_storage_t **)extra;\n  aStackY_84 = sbcset;\n  aStackY_80 = unaff_s6;\n  piStackY_7c = (int *)trans;\n  prStackY_78 = prVar8;\n  pcStackY_74 = pcVar44;\n  if (0 < (int)puVar27) {\n    do {\n      while( true ) {\n        prVar30 = (re_string_t *)mbcset->raw_mbs;\n        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];\n        iVar22 = (int)pbVar37 * 8;\n        pbVar9 = (byte *)(*piVar33 + iVar22);\n        bVar1 = pbVar9[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar9;\n        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;\n        if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }\n        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }\nLAB_00078a08:\n        iVar32 = iVar32 + 1;\n        prVar30 = prStackY_1c8;\n        prVar28 = ps;\n        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar14 = 0x20;\n        prStackY_1c8 = (re_string_t *)0x0;\n        while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar10 = *(int **)pbVar9;\n        if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }\n      iVar32 = iVar32 + 1;\n      ps = prVar28;\n    } while (iVar32 < (int)puVar27);\n  }\nLAB_00078a1c:\n  prVar28 = ps;\n  if (prStackY_9c == (re_string_t *)*puVar21) {\n    return (bin_tree_t *)*puVar21;\n  }\nLAB_00078e4c:\n  pcVar44 = *(code **)(puVar43 + 0x37334);\n  (*pcVar44)();\n  ppbVar31 = (bin_tree_t **)(&prVar30->raw_mbs + (int)prVar28 * 2);\n  uVar26 = (uint)*(byte *)(ppbVar31 + 1);\n  if (uVar26 == 7) {\n    pbVar9 = pstr->mbs + (int)idx;\n    bVar1 = *pbVar9;\n    if (bVar1 < 0xc2) {\n      return (bin_tree_t *)0x0;\n    }\n    if (pstr->len <= (int)(puVar43 + 0x3eb91)) {\n      return (bin_tree_t *)0x0;\n    }\n    bVar2 = pbVar9[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (bin_tree_t *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);\n      if ((int)(idx + (int)pbVar37) <= pstr->len) {\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }\n    }\n  }\n  else if (pstr->mb_cur_max != 1) {\n    pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx);\n    if (uVar26 == 5) {\n      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }\n    }\n    else if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }\n  }\n  return (bin_tree_t *)0x0;\n}" type_identifier (pointer_declarator "*\nbuild_charclass_op(re_dfa_t *dfa,uchar *trans,char *class_name,char *extra,_Bool non_match,\n                  reg_errcode_t *err)" * (function_declarator "build_charclass_op(re_dfa_t *dfa,uchar *trans,char *class_name,char *extra,_Bool non_match,\n                  reg_errcode_t *err)" identifier (parameter_list "(re_dfa_t *dfa,uchar *trans,char *class_name,char *extra,_Bool non_match,\n                  reg_errcode_t *err)" ( (parameter_declaration "re_dfa_t *dfa" type_identifier (pointer_declarator "*dfa" * identifier)) , (parameter_declaration "uchar *trans" type_identifier (pointer_declarator "*trans" * identifier)) , (parameter_declaration "char *class_name" primitive_type (pointer_declarator "*class_name" * identifier)) , (parameter_declaration "char *extra" primitive_type (pointer_declarator "*extra" * identifier)) , (parameter_declaration "_Bool non_match" type_identifier identifier) , (parameter_declaration "reg_errcode_t *err" type_identifier (pointer_declarator "*err" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  anon_union_4_5_a39f51ca_for_opr sbcset;\n  reg_errcode_t rVar5;\n  uint uVar6;\n  wchar_t **ppwVar7;\n  re_string_t *prVar8;\n  byte *pbVar9;\n  int *piVar10;\n  undefined1 *puVar11;\n  re_string_t *prVar12;\n  undefined4 uVar13;\n  int iVar14;\n  int *piVar15;\n  size_t sVar16;\n  char cVar20;\n  bin_tree_t *pbVar17;\n  byte *pbVar18;\n  bin_tree_t *pbVar19;\n  undefined4 *puVar21;\n  int iVar22;\n  re_bitset_ptr_t pbVar23;\n  bin_tree_t *pbVar24;\n  anon_union_4_5_a39f51ca_for_opr aVar25;\n  uint uVar26;\n  uint *puVar27;\n  re_string_t *mbcset;\n  re_string_t *prVar28;\n  re_string_t *ps;\n  bin_tree_t *pbVar29;\n  re_string_t *token;\n  re_string_t *prVar30;\n  re_string_t *pstr;\n  bin_tree_t **ppbVar31;\n  int iVar32;\n  int *piVar33;\n  undefined *puVar34;\n  bin_tree_t *pbVar35;\n  bin_tree_t *pbVar36;\n  bin_tree_t *pbVar37;\n  undefined1 *puVar38;\n  uint uVar39;\n  anon_union_4_5_a39f51ca_for_opr unaff_s5;\n  anon_union_4_5_a39f51ca_for_opr unaff_s6;\n  undefined1 *puVar40;\n  undefined1 *puVar41;\n  int iVar42;\n  undefined *puVar43;\n  undefined *idx;\n  code *pcVar44;\n  re_string_t *prStackY_1c8;\n  undefined1 auStackY_1a8 [8];\n  wint_t *pwStackY_1a0;\n  re_string_t arStackY_19c [3];\n  re_string_t *prStackY_9c;\n  re_dfa_t *prStackY_98;\n  undefined *puStackY_94;\n  undefined *puStackY_90;\n  reg_errcode_t *prStackY_8c;\n  bin_tree_storage_t **ppbStackY_88;\n  anon_union_4_5_a39f51ca_for_opr aStackY_84;\n  anon_union_4_5_a39f51ca_for_opr aStackY_80;\n  int *piStackY_7c;\n  re_string_t *prStackY_78;\n  code *pcStackY_74;\n  Idx alloc;\n  re_token_t br_token;\n  re_token_t t;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  aVar25.idx = 1;\n  alloc = 0;\n  puVar4 = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar34 = (undefined *)(uint)non_match;\n  mbcset = (re_string_t *)class_name;\n  token = (re_string_t *)extra;\n  sbcset.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (sbcset.sbcset == (re_bitset_ptr_t)0x0) {\nLAB_00078814:\n    sbcset = unaff_s5;\n    prVar8 = (re_string_t *)0x0;\n    *err = _REG_ESPACE;\n  }\n  else {\n    aVar25.idx = 1;\n    unaff_s6.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if ((re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0) {\n      prVar8 = (re_string_t *)0x0;\n      (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n      *err = _REG_ESPACE;\n    }\n    else {\n      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;\n      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;\n      *(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);\n      aVar25.sbcset = sbcset.sbcset;\n      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);\n      if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }\n    }\n  }\n  if (puVar4 == *(undefined4 **)puVar3) {\n    return (bin_tree_t *)prVar8;\n  }\n  pcVar44 = re_compile_fastmap_iter;\n  puVar43 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  idx = puVar43 + 0x3eb90;\n  puVar21 = *(undefined4 **)(puVar43 + 0x3739c);\n  puStackY_94 = puVar3;\n  piVar33 = (int *)*puVar4;\n  prStackY_9c = (re_string_t *)*puVar21;\n  prStackY_8c = err;\n  if (piVar33[0x17] == 1) {\n    uVar26 = (uint)(puVar4[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar26 = 0;\n  }\n  puVar27 = (uint *)(aVar25.mbcset)->mbchars;\n  iVar32 = 0;\n  prVar30 = prStackY_9c;\n  prVar28 = mbcset;\n  ps = mbcset;\n  pstr = token;\n  prStackY_98 = dfa;\n  puStackY_90 = puVar34;\n  ppbStackY_88 = (bin_tree_storage_t **)extra;\n  aStackY_84 = sbcset;\n  aStackY_80 = unaff_s6;\n  piStackY_7c = (int *)trans;\n  prStackY_78 = prVar8;\n  pcStackY_74 = pcVar44;\n  if (0 < (int)puVar27) {\n    do {\n      while( true ) {\n        prVar30 = (re_string_t *)mbcset->raw_mbs;\n        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];\n        iVar22 = (int)pbVar37 * 8;\n        pbVar9 = (byte *)(*piVar33 + iVar22);\n        bVar1 = pbVar9[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar9;\n        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;\n        if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }\n        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }\nLAB_00078a08:\n        iVar32 = iVar32 + 1;\n        prVar30 = prStackY_1c8;\n        prVar28 = ps;\n        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar14 = 0x20;\n        prStackY_1c8 = (re_string_t *)0x0;\n        while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar10 = *(int **)pbVar9;\n        if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }\n      iVar32 = iVar32 + 1;\n      ps = prVar28;\n    } while (iVar32 < (int)puVar27);\n  }\nLAB_00078a1c:\n  prVar28 = ps;\n  if (prStackY_9c == (re_string_t *)*puVar21) {\n    return (bin_tree_t *)*puVar21;\n  }\nLAB_00078e4c:\n  pcVar44 = *(code **)(puVar43 + 0x37334);\n  (*pcVar44)();\n  ppbVar31 = (bin_tree_t **)(&prVar30->raw_mbs + (int)prVar28 * 2);\n  uVar26 = (uint)*(byte *)(ppbVar31 + 1);\n  if (uVar26 == 7) {\n    pbVar9 = pstr->mbs + (int)idx;\n    bVar1 = *pbVar9;\n    if (bVar1 < 0xc2) {\n      return (bin_tree_t *)0x0;\n    }\n    if (pstr->len <= (int)(puVar43 + 0x3eb91)) {\n      return (bin_tree_t *)0x0;\n    }\n    bVar2 = pbVar9[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (bin_tree_t *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);\n      if ((int)(idx + (int)pbVar37) <= pstr->len) {\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }\n    }\n  }\n  else if (pstr->mb_cur_max != 1) {\n    pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx);\n    if (uVar26 == 5) {\n      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }\n    }\n    else if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }\n  }\n  return (bin_tree_t *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "anon_union_4_5_a39f51ca_for_opr sbcset;" type_identifier identifier ;) (declaration "reg_errcode_t rVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "wchar_t **ppwVar7;" type_identifier (pointer_declarator "**ppwVar7" * (pointer_declarator "*ppwVar7" * identifier)) ;) (declaration "re_string_t *prVar8;" type_identifier (pointer_declarator "*prVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "re_string_t *prVar12;" type_identifier (pointer_declarator "*prVar12" * identifier) ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "size_t sVar16;" primitive_type identifier ;) (declaration "char cVar20;" primitive_type identifier ;) (declaration "bin_tree_t *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "bin_tree_t *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "undefined4 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "re_bitset_ptr_t pbVar23;" type_identifier identifier ;) (declaration "bin_tree_t *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "anon_union_4_5_a39f51ca_for_opr aVar25;" type_identifier identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "uint *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "re_string_t *mbcset;" type_identifier (pointer_declarator "*mbcset" * identifier) ;) (declaration "re_string_t *prVar28;" type_identifier (pointer_declarator "*prVar28" * identifier) ;) (declaration "re_string_t *ps;" type_identifier (pointer_declarator "*ps" * identifier) ;) (declaration "bin_tree_t *pbVar29;" type_identifier (pointer_declarator "*pbVar29" * identifier) ;) (declaration "re_string_t *token;" type_identifier (pointer_declarator "*token" * identifier) ;) (declaration "re_string_t *prVar30;" type_identifier (pointer_declarator "*prVar30" * identifier) ;) (declaration "re_string_t *pstr;" type_identifier (pointer_declarator "*pstr" * identifier) ;) (declaration "bin_tree_t **ppbVar31;" type_identifier (pointer_declarator "**ppbVar31" * (pointer_declarator "*ppbVar31" * identifier)) ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "int *piVar33;" primitive_type (pointer_declarator "*piVar33" * identifier) ;) (declaration "undefined *puVar34;" type_identifier (pointer_declarator "*puVar34" * identifier) ;) (declaration "bin_tree_t *pbVar35;" type_identifier (pointer_declarator "*pbVar35" * identifier) ;) (declaration "bin_tree_t *pbVar36;" type_identifier (pointer_declarator "*pbVar36" * identifier) ;) (declaration "bin_tree_t *pbVar37;" type_identifier (pointer_declarator "*pbVar37" * identifier) ;) (declaration "undefined1 *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "uint uVar39;" type_identifier identifier ;) (declaration "anon_union_4_5_a39f51ca_for_opr unaff_s5;" type_identifier identifier ;) (declaration "anon_union_4_5_a39f51ca_for_opr unaff_s6;" type_identifier identifier ;) (declaration "undefined1 *puVar40;" type_identifier (pointer_declarator "*puVar40" * identifier) ;) (declaration "undefined1 *puVar41;" type_identifier (pointer_declarator "*puVar41" * identifier) ;) (declaration "int iVar42;" primitive_type identifier ;) (declaration "undefined *puVar43;" type_identifier (pointer_declarator "*puVar43" * identifier) ;) (declaration "undefined *idx;" type_identifier (pointer_declarator "*idx" * identifier) ;) (declaration "code *pcVar44;" type_identifier (pointer_declarator "*pcVar44" * identifier) ;) (declaration "re_string_t *prStackY_1c8;" type_identifier (pointer_declarator "*prStackY_1c8" * identifier) ;) (declaration "undefined1 auStackY_1a8 [8];" type_identifier (array_declarator "auStackY_1a8 [8]" identifier [ number_literal ]) ;) (declaration "wint_t *pwStackY_1a0;" type_identifier (pointer_declarator "*pwStackY_1a0" * identifier) ;) (declaration "re_string_t arStackY_19c [3];" type_identifier (array_declarator "arStackY_19c [3]" identifier [ number_literal ]) ;) (declaration "re_string_t *prStackY_9c;" type_identifier (pointer_declarator "*prStackY_9c" * identifier) ;) (declaration "re_dfa_t *prStackY_98;" type_identifier (pointer_declarator "*prStackY_98" * identifier) ;) (declaration "undefined *puStackY_94;" type_identifier (pointer_declarator "*puStackY_94" * identifier) ;) (declaration "undefined *puStackY_90;" type_identifier (pointer_declarator "*puStackY_90" * identifier) ;) (declaration "reg_errcode_t *prStackY_8c;" type_identifier (pointer_declarator "*prStackY_8c" * identifier) ;) (declaration "bin_tree_storage_t **ppbStackY_88;" type_identifier (pointer_declarator "**ppbStackY_88" * (pointer_declarator "*ppbStackY_88" * identifier)) ;) (declaration "anon_union_4_5_a39f51ca_for_opr aStackY_84;" type_identifier identifier ;) (declaration "anon_union_4_5_a39f51ca_for_opr aStackY_80;" type_identifier identifier ;) (declaration "int *piStackY_7c;" primitive_type (pointer_declarator "*piStackY_7c" * identifier) ;) (declaration "re_string_t *prStackY_78;" type_identifier (pointer_declarator "*prStackY_78" * identifier) ;) (declaration "code *pcStackY_74;" type_identifier (pointer_declarator "*pcStackY_74" * identifier) ;) (declaration "Idx alloc;" type_identifier identifier ;) (declaration "re_token_t br_token;" type_identifier identifier ;) (declaration "re_token_t t;" type_identifier identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_000afc3c;" (assignment_expression "puVar3 = PTR___stack_chk_guard_000afc3c" identifier = identifier) ;) (expression_statement "aVar25.idx = 1;" (assignment_expression "aVar25.idx = 1" (field_expression "aVar25.idx" identifier . field_identifier) = number_literal) ;) (expression_statement "alloc = 0;" (assignment_expression "alloc = 0" identifier = number_literal) ;) (expression_statement "puVar4 = *(undefined4 **)PTR___stack_chk_guard_000afc3c;" (assignment_expression "puVar4 = *(undefined4 **)PTR___stack_chk_guard_000afc3c" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_000afc3c" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_000afc3c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar34 = (undefined *)(uint)non_match;" (assignment_expression "puVar34 = (undefined *)(uint)non_match" identifier = (cast_expression "(undefined *)(uint)non_match" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)non_match" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "mbcset = (re_string_t *)class_name;" (assignment_expression "mbcset = (re_string_t *)class_name" identifier = (cast_expression "(re_string_t *)class_name" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "token = (re_string_t *)extra;" (assignment_expression "token = (re_string_t *)extra" identifier = (cast_expression "(re_string_t *)extra" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "sbcset.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x20);" (assignment_expression "sbcset.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x20)" (field_expression "sbcset.sbcset" identifier . field_identifier) = (call_expression "(re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x20)" (call_expression "(re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)" (parenthesized_expression "(re_bitset_ptr_t)" ( identifier )) (argument_list "(*(code *)PTR_calloc_000afdb8)" ( (pointer_expression "*(code *)PTR_calloc_000afdb8" * (cast_expression "(code *)PTR_calloc_000afdb8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(0x20)" ( number_literal )))) ;) (if_statement "if (sbcset.sbcset == (re_bitset_ptr_t)0x0) {\nLAB_00078814:\n    sbcset = unaff_s5;\n    prVar8 = (re_string_t *)0x0;\n    *err = _REG_ESPACE;\n  }\n  else {\n    aVar25.idx = 1;\n    unaff_s6.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if ((re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0) {\n      prVar8 = (re_string_t *)0x0;\n      (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n      *err = _REG_ESPACE;\n    }\n    else {\n      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;\n      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;\n      *(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);\n      aVar25.sbcset = sbcset.sbcset;\n      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);\n      if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }\n    }\n  }" if (parenthesized_expression "(sbcset.sbcset == (re_bitset_ptr_t)0x0)" ( (binary_expression "sbcset.sbcset == (re_bitset_ptr_t)0x0" (field_expression "sbcset.sbcset" identifier . field_identifier) == (cast_expression "(re_bitset_ptr_t)0x0" ( (type_descriptor "re_bitset_ptr_t" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_00078814:\n    sbcset = unaff_s5;\n    prVar8 = (re_string_t *)0x0;\n    *err = _REG_ESPACE;\n  }" { (labeled_statement "LAB_00078814:\n    sbcset = unaff_s5;" statement_identifier : (expression_statement "sbcset = unaff_s5;" (assignment_expression "sbcset = unaff_s5" identifier = identifier) ;)) (expression_statement "prVar8 = (re_string_t *)0x0;" (assignment_expression "prVar8 = (re_string_t *)0x0" identifier = (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*err = _REG_ESPACE;" (assignment_expression "*err = _REG_ESPACE" (pointer_expression "*err" * identifier) = identifier) ;) }) (else_clause "else {\n    aVar25.idx = 1;\n    unaff_s6.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if ((re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0) {\n      prVar8 = (re_string_t *)0x0;\n      (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n      *err = _REG_ESPACE;\n    }\n    else {\n      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;\n      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;\n      *(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);\n      aVar25.sbcset = sbcset.sbcset;\n      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);\n      if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }\n    }\n  }" else (compound_statement "{\n    aVar25.idx = 1;\n    unaff_s6.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if ((re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0) {\n      prVar8 = (re_string_t *)0x0;\n      (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n      *err = _REG_ESPACE;\n    }\n    else {\n      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;\n      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;\n      *(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);\n      aVar25.sbcset = sbcset.sbcset;\n      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);\n      if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }\n    }\n  }" { (expression_statement "aVar25.idx = 1;" (assignment_expression "aVar25.idx = 1" (field_expression "aVar25.idx" identifier . field_identifier) = number_literal) ;) (expression_statement "unaff_s6.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28);" (assignment_expression "unaff_s6.sbcset = (re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28)" (field_expression "unaff_s6.sbcset" identifier . field_identifier) = (call_expression "(re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)(0x28)" (call_expression "(re_bitset_ptr_t)(*(code *)PTR_calloc_000afdb8)" (parenthesized_expression "(re_bitset_ptr_t)" ( identifier )) (argument_list "(*(code *)PTR_calloc_000afdb8)" ( (pointer_expression "*(code *)PTR_calloc_000afdb8" * (cast_expression "(code *)PTR_calloc_000afdb8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(0x28)" ( number_literal )))) ;) (if_statement "if ((re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0) {\n      prVar8 = (re_string_t *)0x0;\n      (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n      *err = _REG_ESPACE;\n    }\n    else {\n      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;\n      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;\n      *(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);\n      aVar25.sbcset = sbcset.sbcset;\n      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);\n      if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }\n    }" if (parenthesized_expression "((re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0)" ( (binary_expression "(re_charset_t *)unaff_s6.sbcset == (re_charset_t *)0x0" (cast_expression "(re_charset_t *)unaff_s6.sbcset" ( (type_descriptor "re_charset_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "unaff_s6.sbcset" identifier . field_identifier)) == (cast_expression "(re_charset_t *)0x0" ( (type_descriptor "re_charset_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      prVar8 = (re_string_t *)0x0;\n      (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n      *err = _REG_ESPACE;\n    }" { (expression_statement "prVar8 = (re_string_t *)0x0;" (assignment_expression "prVar8 = (re_string_t *)0x0" identifier = (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR_free_000afd08)(sbcset.sbcset);" (call_expression "(*(code *)PTR_free_000afd08)(sbcset.sbcset)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(sbcset.sbcset)" ( (field_expression "sbcset.sbcset" identifier . field_identifier) ))) ;) (expression_statement "*err = _REG_ESPACE;" (assignment_expression "*err = _REG_ESPACE" (pointer_expression "*err" * identifier) = identifier) ;) }) (else_clause "else {\n      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;\n      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;\n      *(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);\n      aVar25.sbcset = sbcset.sbcset;\n      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);\n      if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }\n    }" else (compound_statement "{\n      token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;\n      mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;\n      *(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);\n      aVar25.sbcset = sbcset.sbcset;\n      rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);\n      if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }\n    }" { (expression_statement "token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes;" (assignment_expression "token = (re_string_t *)&(unaff_s6.mbcset)->nchar_classes" identifier = (cast_expression "(re_string_t *)&(unaff_s6.mbcset)->nchar_classes" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(unaff_s6.mbcset)->nchar_classes" & (field_expression "(unaff_s6.mbcset)->nchar_classes" (parenthesized_expression "(unaff_s6.mbcset)" ( (field_expression "unaff_s6.mbcset" identifier . field_identifier) )) -> field_identifier)))) ;) (expression_statement "mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes;" (assignment_expression "mbcset = (re_string_t *)&(unaff_s6.mbcset)->char_classes" identifier = (cast_expression "(re_string_t *)&(unaff_s6.mbcset)->char_classes" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(unaff_s6.mbcset)->char_classes" & (field_expression "(unaff_s6.mbcset)->char_classes" (parenthesized_expression "(unaff_s6.mbcset)" ( (field_expression "unaff_s6.mbcset" identifier . field_identifier) )) -> field_identifier)))) ;) (expression_statement "*(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7);" (assignment_expression "*(byte *)(unaff_s6.idx + 0x10) =\n           *(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7)" (pointer_expression "*(byte *)(unaff_s6.idx + 0x10)" * (cast_expression "(byte *)(unaff_s6.idx + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s6.idx + 0x10)" ( (binary_expression "unaff_s6.idx + 0x10" (field_expression "unaff_s6.idx" identifier . field_identifier) + number_literal) )))) = (binary_expression "*(byte *)(unaff_s6.idx + 0x10) & 0x7f | (byte)(((uint)puVar34 & 1) << 7)" (binary_expression "*(byte *)(unaff_s6.idx + 0x10) & 0x7f" (pointer_expression "*(byte *)(unaff_s6.idx + 0x10)" * (cast_expression "(byte *)(unaff_s6.idx + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s6.idx + 0x10)" ( (binary_expression "unaff_s6.idx + 0x10" (field_expression "unaff_s6.idx" identifier . field_identifier) + number_literal) )))) & number_literal) | (call_expression "(byte)(((uint)puVar34 & 1) << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uint)puVar34 & 1) << 7)" ( (binary_expression "((uint)puVar34 & 1) << 7" (parenthesized_expression "((uint)puVar34 & 1)" ( (binary_expression "(uint)puVar34 & 1" (cast_expression "(uint)puVar34" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal) ))))) ;) (expression_statement "aVar25.sbcset = sbcset.sbcset;" (assignment_expression "aVar25.sbcset = sbcset.sbcset" (field_expression "aVar25.sbcset" identifier . field_identifier) = (field_expression "sbcset.sbcset" identifier . field_identifier)) ;) (expression_statement "rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0);" (assignment_expression "rVar5 = build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0)" identifier = (call_expression "build_charclass(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0)" identifier (argument_list "(trans,sbcset.sbcset,(re_charset_t *)mbcset,(Idx *)token,(char *)&alloc\n                              ,(reg_syntax_t)class_name,(re_charset_t *)0x0)" ( identifier , (field_expression "sbcset.sbcset" identifier . field_identifier) , (cast_expression "(re_charset_t *)mbcset" ( (type_descriptor "re_charset_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Idx *)token" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)&alloc" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&alloc" & identifier)) , (cast_expression "(reg_syntax_t)class_name" ( (type_descriptor "reg_syntax_t" type_identifier) ) identifier) , (cast_expression "(re_charset_t *)0x0" ( (type_descriptor "re_charset_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (rVar5 == _REG_NOERROR) {\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }\n      else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }" if (parenthesized_expression "(rVar5 == _REG_NOERROR)" ( (binary_expression "rVar5 == _REG_NOERROR" identifier == identifier) )) (compound_statement "{\n        cVar20 = *extra;\n        while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }\n        aVar25.sbcset = sbcset.sbcset;\n        if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }\n        extra = (char *)&dfa->str_tree_storage;\n        trans = (uchar *)&dfa->str_tree_storage_idx;\n        puVar34 = PTR_LAB_000afa20 + 0x411c;\n        token = (re_string_t *)0x0;\n        mbcset = (re_string_t *)0x0;\n        br_token._4_1_ = 3;\n        aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n        br_token.opr.sbcset = sbcset.sbcset;\n        prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);\n        prVar30 = token;\n        if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }\n        if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }\n      }" { (expression_statement "cVar20 = *extra;" (assignment_expression "cVar20 = *extra" identifier = (pointer_expression "*extra" * identifier)) ;) (while_statement "while (uVar26 = (uint)cVar20, uVar26 != 0) {\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }" while (parenthesized_expression "(uVar26 = (uint)cVar20, uVar26 != 0)" ( (comma_expression "uVar26 = (uint)cVar20, uVar26 != 0" (assignment_expression "uVar26 = (uint)cVar20" identifier = (cast_expression "(uint)cVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) , (binary_expression "uVar26 != 0" identifier != number_literal)) )) (compound_statement "{\n          uVar6 = uVar26;\n          if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }\n          extra = extra + 1;\n          cVar20 = *extra;\n          sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);\n        }" { (expression_statement "uVar6 = uVar26;" (assignment_expression "uVar6 = uVar26" identifier = identifier) ;) (if_statement "if ((int)uVar26 < 0) {\n            uVar6 = uVar26 + 0x1f;\n          }" if (parenthesized_expression "((int)uVar26 < 0)" ( (binary_expression "(int)uVar26 < 0" (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uVar6 = uVar26 + 0x1f;\n          }" { (expression_statement "uVar6 = uVar26 + 0x1f;" (assignment_expression "uVar6 = uVar26 + 0x1f" identifier = (binary_expression "uVar26 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "extra = extra + 1;" (assignment_expression "extra = extra + 1" identifier = (binary_expression "extra + 1" identifier + number_literal)) ;) (expression_statement "cVar20 = *extra;" (assignment_expression "cVar20 = *extra" identifier = (pointer_expression "*extra" * identifier)) ;) (expression_statement "sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f);" (assignment_expression "sbcset.sbcset[(int)uVar6 >> 5] = sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f)" (subscript_expression "sbcset.sbcset[(int)uVar6 >> 5]" (field_expression "sbcset.sbcset" identifier . field_identifier) [ (binary_expression "(int)uVar6 >> 5" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) = (binary_expression "sbcset.sbcset[(int)uVar6 >> 5] | 1 << (uVar26 & 0x1f)" (subscript_expression "sbcset.sbcset[(int)uVar6 >> 5]" (field_expression "sbcset.sbcset" identifier . field_identifier) [ (binary_expression "(int)uVar6 >> 5" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) | (binary_expression "1 << (uVar26 & 0x1f)" number_literal << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "aVar25.sbcset = sbcset.sbcset;" (assignment_expression "aVar25.sbcset = sbcset.sbcset" (field_expression "aVar25.sbcset" identifier . field_identifier) = (field_expression "sbcset.sbcset" identifier . field_identifier)) ;) (if_statement "if (puVar34 != (undefined *)0x0) {\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }" if (parenthesized_expression "(puVar34 != (undefined *)0x0)" ( (binary_expression "puVar34 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }" { (do_statement "do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);" do (compound_statement "{\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            *aVar25.sbcset = ~*aVar25.sbcset;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          }" { (expression_statement "ppwVar7 = &(aVar25.mbcset)->range_starts;" (assignment_expression "ppwVar7 = &(aVar25.mbcset)->range_starts" identifier = (pointer_expression "&(aVar25.mbcset)->range_starts" & (field_expression "(aVar25.mbcset)->range_starts" (parenthesized_expression "(aVar25.mbcset)" ( (field_expression "aVar25.mbcset" identifier . field_identifier) )) -> field_identifier))) ;) (expression_statement "*aVar25.sbcset = ~*aVar25.sbcset;" (assignment_expression "*aVar25.sbcset = ~*aVar25.sbcset" (pointer_expression "*aVar25.sbcset" * (field_expression "aVar25.sbcset" identifier . field_identifier)) = (unary_expression "~*aVar25.sbcset" ~ (pointer_expression "*aVar25.sbcset" * (field_expression "aVar25.sbcset" identifier . field_identifier)))) ;) (expression_statement "aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;" (assignment_expression "aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7" identifier = (cast_expression "(anon_union_4_5_a39f51ca_for_opr)ppwVar7" ( (type_descriptor "anon_union_4_5_a39f51ca_for_opr" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7)" ( (binary_expression "(wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7" (cast_expression "(wchar_t **)&(sbcset.mbcset)->nranges" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(sbcset.mbcset)->nranges" & (field_expression "(sbcset.mbcset)->nranges" (parenthesized_expression "(sbcset.mbcset)" ( (field_expression "sbcset.mbcset" identifier . field_identifier) )) -> field_identifier))) != identifier) )) ;) })) (if_statement "if (1 < dfa->mb_cur_max) {\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }" if (parenthesized_expression "(1 < dfa->mb_cur_max)" ( (binary_expression "1 < dfa->mb_cur_max" number_literal < (field_expression "dfa->mb_cur_max" identifier -> field_identifier)) )) (compound_statement "{\n          pbVar23 = dfa->sb_char;\n          aVar25.sbcset = sbcset.sbcset;\n          do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);\n        }" { (expression_statement "pbVar23 = dfa->sb_char;" (assignment_expression "pbVar23 = dfa->sb_char" identifier = (field_expression "dfa->sb_char" identifier -> field_identifier)) ;) (expression_statement "aVar25.sbcset = sbcset.sbcset;" (assignment_expression "aVar25.sbcset = sbcset.sbcset" (field_expression "aVar25.sbcset" identifier . field_identifier) = (field_expression "sbcset.sbcset" identifier . field_identifier)) ;) (do_statement "do {\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          } while ((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7);" do (compound_statement "{\n            ppwVar7 = &(aVar25.mbcset)->range_starts;\n            uVar26 = *pbVar23;\n            pbVar23 = pbVar23 + 1;\n            *aVar25.sbcset = *aVar25.sbcset & uVar26;\n            aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;\n          }" { (expression_statement "ppwVar7 = &(aVar25.mbcset)->range_starts;" (assignment_expression "ppwVar7 = &(aVar25.mbcset)->range_starts" identifier = (pointer_expression "&(aVar25.mbcset)->range_starts" & (field_expression "(aVar25.mbcset)->range_starts" (parenthesized_expression "(aVar25.mbcset)" ( (field_expression "aVar25.mbcset" identifier . field_identifier) )) -> field_identifier))) ;) (expression_statement "uVar26 = *pbVar23;" (assignment_expression "uVar26 = *pbVar23" identifier = (pointer_expression "*pbVar23" * identifier)) ;) (expression_statement "pbVar23 = pbVar23 + 1;" (assignment_expression "pbVar23 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;) (expression_statement "*aVar25.sbcset = *aVar25.sbcset & uVar26;" (assignment_expression "*aVar25.sbcset = *aVar25.sbcset & uVar26" (pointer_expression "*aVar25.sbcset" * (field_expression "aVar25.sbcset" identifier . field_identifier)) = (binary_expression "*aVar25.sbcset & uVar26" (pointer_expression "*aVar25.sbcset" * (field_expression "aVar25.sbcset" identifier . field_identifier)) & identifier)) ;) (expression_statement "aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7;" (assignment_expression "aVar25 = (anon_union_4_5_a39f51ca_for_opr)ppwVar7" identifier = (cast_expression "(anon_union_4_5_a39f51ca_for_opr)ppwVar7" ( (type_descriptor "anon_union_4_5_a39f51ca_for_opr" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "((wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7)" ( (binary_expression "(wchar_t **)&(sbcset.mbcset)->nranges != ppwVar7" (cast_expression "(wchar_t **)&(sbcset.mbcset)->nranges" ( (type_descriptor "wchar_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&(sbcset.mbcset)->nranges" & (field_expression "(sbcset.mbcset)->nranges" (parenthesized_expression "(sbcset.mbcset)" ( (field_expression "sbcset.mbcset" identifier . field_identifier) )) -> field_identifier))) != identifier) )) ;) })) (expression_statement "extra = (char *)&dfa->str_tree_storage;" (assignment_expression "extra = (char *)&dfa->str_tree_storage" identifier = (cast_expression "(char *)&dfa->str_tree_storage" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dfa->str_tree_storage" & (field_expression "dfa->str_tree_storage" identifier -> field_identifier)))) ;) (expression_statement "trans = (uchar *)&dfa->str_tree_storage_idx;" (assignment_expression "trans = (uchar *)&dfa->str_tree_storage_idx" identifier = (cast_expression "(uchar *)&dfa->str_tree_storage_idx" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&dfa->str_tree_storage_idx" & (field_expression "dfa->str_tree_storage_idx" identifier -> field_identifier)))) ;) (expression_statement "puVar34 = PTR_LAB_000afa20 + 0x411c;" (assignment_expression "puVar34 = PTR_LAB_000afa20 + 0x411c" identifier = (binary_expression "PTR_LAB_000afa20 + 0x411c" identifier + number_literal)) ;) (expression_statement "token = (re_string_t *)0x0;" (assignment_expression "token = (re_string_t *)0x0" identifier = (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "mbcset = (re_string_t *)0x0;" (assignment_expression "mbcset = (re_string_t *)0x0" identifier = (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "br_token._4_1_ = 3;" (assignment_expression "br_token._4_1_ = 3" (field_expression "br_token._4_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;" (assignment_expression "aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans" identifier = (cast_expression "(anon_union_4_5_a39f51ca_for_opr)trans" ( (type_descriptor "anon_union_4_5_a39f51ca_for_opr" type_identifier) ) identifier)) ;) (expression_statement "br_token.opr.sbcset = sbcset.sbcset;" (assignment_expression "br_token.opr.sbcset = sbcset.sbcset" (field_expression "br_token.opr.sbcset" (field_expression "br_token.opr" identifier . field_identifier) . field_identifier) = (field_expression "sbcset.sbcset" identifier . field_identifier)) ;) (expression_statement "prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token);" (assignment_expression "prVar8 = (re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token)" identifier = (cast_expression "(re_string_t *)\n                 create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token)" identifier (argument_list "((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                   (re_token_t *)0x0,(re_dfa_t *)&br_token)" ( (cast_expression "(re_dfa_t *)extra" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(bin_tree_t *)trans" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(re_token_t *)0x0" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(re_dfa_t *)&br_token" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&br_token" & identifier)) ))))) ;) (expression_statement "prVar30 = token;" (assignment_expression "prVar30 = token" identifier = identifier) ;) (if_statement "if (prVar8 == (re_string_t *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }" if (parenthesized_expression "(prVar8 == (re_string_t *)0x0)" ( (binary_expression "prVar8 == (re_string_t *)0x0" identifier == (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n          free_charset(unaff_s6.mbcset);\n          token = prVar30;\n          unaff_s5.sbcset = sbcset.sbcset;\n          goto LAB_00078814;\n        }" { (labeled_statement "LAB_000787f0:\n          (*(code *)PTR_free_000afd08)(sbcset.sbcset);" statement_identifier : (expression_statement "(*(code *)PTR_free_000afd08)(sbcset.sbcset);" (call_expression "(*(code *)PTR_free_000afd08)(sbcset.sbcset)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(sbcset.sbcset)" ( (field_expression "sbcset.sbcset" identifier . field_identifier) ))) ;)) (expression_statement "free_charset(unaff_s6.mbcset);" (call_expression "free_charset(unaff_s6.mbcset)" identifier (argument_list "(unaff_s6.mbcset)" ( (field_expression "unaff_s6.mbcset" identifier . field_identifier) ))) ;) (expression_statement "token = prVar30;" (assignment_expression "token = prVar30" identifier = identifier) ;) (expression_statement "unaff_s5.sbcset = sbcset.sbcset;" (assignment_expression "unaff_s5.sbcset = sbcset.sbcset" (field_expression "unaff_s5.sbcset" identifier . field_identifier) = (field_expression "sbcset.sbcset" identifier . field_identifier)) ;) (goto_statement "goto LAB_00078814;" goto statement_identifier ;) })) (if_statement "if (dfa->mb_cur_max < 2) {\n          free_charset(unaff_s6.mbcset);\n        }\n        else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }" if (parenthesized_expression "(dfa->mb_cur_max < 2)" ( (binary_expression "dfa->mb_cur_max < 2" (field_expression "dfa->mb_cur_max" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n          free_charset(unaff_s6.mbcset);\n        }" { (expression_statement "free_charset(unaff_s6.mbcset);" (call_expression "free_charset(unaff_s6.mbcset)" identifier (argument_list "(unaff_s6.mbcset)" ( (field_expression "unaff_s6.mbcset" identifier . field_identifier) ))) ;) }) (else_clause "else {\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }" else (compound_statement "{\n          prVar30 = (re_string_t *)0x0;\n          mbcset = (re_string_t *)0x0;\n          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;\n          br_token._4_1_ = 6;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          br_token.opr.sbcset = unaff_s6.sbcset;\n          token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);\n          if (token == (re_string_t *)0x0) goto LAB_000787f0;\n          t._4_1_ = 10;\n          aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;\n          prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);\n          mbcset = prVar8;\n          prVar8 = prVar30;\n        }" { (expression_statement "prVar30 = (re_string_t *)0x0;" (assignment_expression "prVar30 = (re_string_t *)0x0" identifier = (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "mbcset = (re_string_t *)0x0;" (assignment_expression "mbcset = (re_string_t *)0x0" identifier = (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;" (assignment_expression "dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40" (field_expression "dfa->field_0x58" identifier -> field_identifier) = (binary_expression "dfa->field_0x58 & 0xbf | 0x40" (binary_expression "dfa->field_0x58 & 0xbf" (field_expression "dfa->field_0x58" identifier -> field_identifier) & number_literal) | number_literal)) ;) (expression_statement "br_token._4_1_ = 6;" (assignment_expression "br_token._4_1_ = 6" (field_expression "br_token._4_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;" (assignment_expression "aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans" identifier = (cast_expression "(anon_union_4_5_a39f51ca_for_opr)trans" ( (type_descriptor "anon_union_4_5_a39f51ca_for_opr" type_identifier) ) identifier)) ;) (expression_statement "br_token.opr.sbcset = unaff_s6.sbcset;" (assignment_expression "br_token.opr.sbcset = unaff_s6.sbcset" (field_expression "br_token.opr.sbcset" (field_expression "br_token.opr" identifier . field_identifier) . field_identifier) = (field_expression "unaff_s6.sbcset" identifier . field_identifier)) ;) (expression_statement "token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token);" (assignment_expression "token = (re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token)" identifier = (cast_expression "(re_string_t *)\n                  create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token)" identifier (argument_list "((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)0x0,\n                                    (re_token_t *)0x0,(re_dfa_t *)&br_token)" ( (cast_expression "(re_dfa_t *)extra" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(bin_tree_t *)trans" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(re_token_t *)0x0" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(re_dfa_t *)&br_token" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&br_token" & identifier)) ))))) ;) (if_statement "if (token == (re_string_t *)0x0) goto LAB_000787f0;" if (parenthesized_expression "(token == (re_string_t *)0x0)" ( (binary_expression "token == (re_string_t *)0x0" identifier == (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000787f0;" goto statement_identifier ;)) (expression_statement "t._4_1_ = 10;" (assignment_expression "t._4_1_ = 10" (field_expression "t._4_1_" identifier . field_identifier) = number_literal) ;) (expression_statement "aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans;" (assignment_expression "aVar25 = (anon_union_4_5_a39f51ca_for_opr)trans" identifier = (cast_expression "(anon_union_4_5_a39f51ca_for_opr)trans" ( (type_descriptor "anon_union_4_5_a39f51ca_for_opr" type_identifier) ) identifier)) ;) (expression_statement "prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t);" (assignment_expression "prVar30 = (re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t)" identifier = (cast_expression "(re_string_t *)\n                    create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "create_token_tree((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t)" identifier (argument_list "((re_dfa_t *)extra,(bin_tree_t *)trans,(bin_tree_t *)prVar8,\n                                      (re_token_t *)token,(re_dfa_t *)&t)" ( (cast_expression "(re_dfa_t *)extra" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(bin_tree_t *)trans" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(bin_tree_t *)prVar8" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(re_token_t *)token" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(re_dfa_t *)&t" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&t" & identifier)) ))))) ;) (expression_statement "mbcset = prVar8;" (assignment_expression "mbcset = prVar8" identifier = identifier) ;) (expression_statement "prVar8 = prVar30;" (assignment_expression "prVar8 = prVar30" identifier = identifier) ;) }))) }) (else_clause "else {\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }" else (compound_statement "{\n        prVar8 = (re_string_t *)0x0;\n        (*(code *)PTR_free_000afd08)(sbcset.sbcset);\n        free_charset(unaff_s6.mbcset);\n        *err = rVar5;\n      }" { (expression_statement "prVar8 = (re_string_t *)0x0;" (assignment_expression "prVar8 = (re_string_t *)0x0" identifier = (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR_free_000afd08)(sbcset.sbcset);" (call_expression "(*(code *)PTR_free_000afd08)(sbcset.sbcset)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(sbcset.sbcset)" ( (field_expression "sbcset.sbcset" identifier . field_identifier) ))) ;) (expression_statement "free_charset(unaff_s6.mbcset);" (call_expression "free_charset(unaff_s6.mbcset)" identifier (argument_list "(unaff_s6.mbcset)" ( (field_expression "unaff_s6.mbcset" identifier . field_identifier) ))) ;) (expression_statement "*err = rVar5;" (assignment_expression "*err = rVar5" (pointer_expression "*err" * identifier) = identifier) ;) }))) }))) }))) (if_statement "if (puVar4 == *(undefined4 **)puVar3) {\n    return (bin_tree_t *)prVar8;\n  }" if (parenthesized_expression "(puVar4 == *(undefined4 **)puVar3)" ( (binary_expression "puVar4 == *(undefined4 **)puVar3" identifier == (pointer_expression "*(undefined4 **)puVar3" * (cast_expression "(undefined4 **)puVar3" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return (bin_tree_t *)prVar8;\n  }" { (return_statement "return (bin_tree_t *)prVar8;" return (cast_expression "(bin_tree_t *)prVar8" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (expression_statement "pcVar44 = re_compile_fastmap_iter;" (assignment_expression "pcVar44 = re_compile_fastmap_iter" identifier = identifier) ;) (expression_statement "puVar43 = PTR___stack_chk_fail_000afbd4;" (assignment_expression "puVar43 = PTR___stack_chk_fail_000afbd4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000afbd4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000afbd4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000afbd4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000afbd4" * (cast_expression "(code *)PTR___stack_chk_fail_000afbd4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "idx = puVar43 + 0x3eb90;" (assignment_expression "idx = puVar43 + 0x3eb90" identifier = (binary_expression "puVar43 + 0x3eb90" identifier + number_literal)) ;) (expression_statement "puVar21 = *(undefined4 **)(puVar43 + 0x3739c);" (assignment_expression "puVar21 = *(undefined4 **)(puVar43 + 0x3739c)" identifier = (pointer_expression "*(undefined4 **)(puVar43 + 0x3739c)" * (cast_expression "(undefined4 **)(puVar43 + 0x3739c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x3739c)" ( (binary_expression "puVar43 + 0x3739c" identifier + number_literal) ))))) ;) (expression_statement "puStackY_94 = puVar3;" (assignment_expression "puStackY_94 = puVar3" identifier = identifier) ;) (expression_statement "piVar33 = (int *)*puVar4;" (assignment_expression "piVar33 = (int *)*puVar4" identifier = (cast_expression "(int *)*puVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) (expression_statement "prStackY_9c = (re_string_t *)*puVar21;" (assignment_expression "prStackY_9c = (re_string_t *)*puVar21" identifier = (cast_expression "(re_string_t *)*puVar21" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar21" * identifier))) ;) (expression_statement "prStackY_8c = err;" (assignment_expression "prStackY_8c = err" identifier = identifier) ;) (if_statement "if (piVar33[0x17] == 1) {\n    uVar26 = (uint)(puVar4[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar26 = 0;\n  }" if (parenthesized_expression "(piVar33[0x17] == 1)" ( (binary_expression "piVar33[0x17] == 1" (subscript_expression "piVar33[0x17]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uVar26 = (uint)(puVar4[3] << 9) >> 0x1f;\n  }" { (expression_statement "uVar26 = (uint)(puVar4[3] << 9) >> 0x1f;" (assignment_expression "uVar26 = (uint)(puVar4[3] << 9) >> 0x1f" identifier = (binary_expression "(uint)(puVar4[3] << 9) >> 0x1f" (call_expression "(uint)(puVar4[3] << 9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar4[3] << 9)" ( (binary_expression "puVar4[3] << 9" (subscript_expression "puVar4[3]" identifier [ number_literal ]) << number_literal) ))) >> number_literal)) ;) }) (else_clause "else {\n    uVar26 = 0;\n  }" else (compound_statement "{\n    uVar26 = 0;\n  }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) }))) (expression_statement "puVar27 = (uint *)(aVar25.mbcset)->mbchars;" (assignment_expression "puVar27 = (uint *)(aVar25.mbcset)->mbchars" identifier = (cast_expression "(uint *)(aVar25.mbcset)->mbchars" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(aVar25.mbcset)->mbchars" (parenthesized_expression "(aVar25.mbcset)" ( (field_expression "aVar25.mbcset" identifier . field_identifier) )) -> field_identifier))) ;) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (expression_statement "prVar30 = prStackY_9c;" (assignment_expression "prVar30 = prStackY_9c" identifier = identifier) ;) (expression_statement "prVar28 = mbcset;" (assignment_expression "prVar28 = mbcset" identifier = identifier) ;) (expression_statement "ps = mbcset;" (assignment_expression "ps = mbcset" identifier = identifier) ;) (expression_statement "pstr = token;" (assignment_expression "pstr = token" identifier = identifier) ;) (expression_statement "prStackY_98 = dfa;" (assignment_expression "prStackY_98 = dfa" identifier = identifier) ;) (expression_statement "puStackY_90 = puVar34;" (assignment_expression "puStackY_90 = puVar34" identifier = identifier) ;) (expression_statement "ppbStackY_88 = (bin_tree_storage_t **)extra;" (assignment_expression "ppbStackY_88 = (bin_tree_storage_t **)extra" identifier = (cast_expression "(bin_tree_storage_t **)extra" ( (type_descriptor "bin_tree_storage_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "aStackY_84 = sbcset;" (assignment_expression "aStackY_84 = sbcset" identifier = identifier) ;) (expression_statement "aStackY_80 = unaff_s6;" (assignment_expression "aStackY_80 = unaff_s6" identifier = identifier) ;) (expression_statement "piStackY_7c = (int *)trans;" (assignment_expression "piStackY_7c = (int *)trans" identifier = (cast_expression "(int *)trans" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prStackY_78 = prVar8;" (assignment_expression "prStackY_78 = prVar8" identifier = identifier) ;) (expression_statement "pcStackY_74 = pcVar44;" (assignment_expression "pcStackY_74 = pcVar44" identifier = identifier) ;) (if_statement "if (0 < (int)puVar27) {\n    do {\n      while( true ) {\n        prVar30 = (re_string_t *)mbcset->raw_mbs;\n        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];\n        iVar22 = (int)pbVar37 * 8;\n        pbVar9 = (byte *)(*piVar33 + iVar22);\n        bVar1 = pbVar9[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar9;\n        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;\n        if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }\n        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }\nLAB_00078a08:\n        iVar32 = iVar32 + 1;\n        prVar30 = prStackY_1c8;\n        prVar28 = ps;\n        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar14 = 0x20;\n        prStackY_1c8 = (re_string_t *)0x0;\n        while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar10 = *(int **)pbVar9;\n        if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }\n      iVar32 = iVar32 + 1;\n      ps = prVar28;\n    } while (iVar32 < (int)puVar27);\n  }" if (parenthesized_expression "(0 < (int)puVar27)" ( (binary_expression "0 < (int)puVar27" number_literal < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    do {\n      while( true ) {\n        prVar30 = (re_string_t *)mbcset->raw_mbs;\n        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];\n        iVar22 = (int)pbVar37 * 8;\n        pbVar9 = (byte *)(*piVar33 + iVar22);\n        bVar1 = pbVar9[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar9;\n        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;\n        if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }\n        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }\nLAB_00078a08:\n        iVar32 = iVar32 + 1;\n        prVar30 = prStackY_1c8;\n        prVar28 = ps;\n        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar14 = 0x20;\n        prStackY_1c8 = (re_string_t *)0x0;\n        while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar10 = *(int **)pbVar9;\n        if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }\n      iVar32 = iVar32 + 1;\n      ps = prVar28;\n    } while (iVar32 < (int)puVar27);\n  }" { (do_statement "do {\n      while( true ) {\n        prVar30 = (re_string_t *)mbcset->raw_mbs;\n        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];\n        iVar22 = (int)pbVar37 * 8;\n        pbVar9 = (byte *)(*piVar33 + iVar22);\n        bVar1 = pbVar9[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar9;\n        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;\n        if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }\n        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }\nLAB_00078a08:\n        iVar32 = iVar32 + 1;\n        prVar30 = prStackY_1c8;\n        prVar28 = ps;\n        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar14 = 0x20;\n        prStackY_1c8 = (re_string_t *)0x0;\n        while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar10 = *(int **)pbVar9;\n        if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }\n      iVar32 = iVar32 + 1;\n      ps = prVar28;\n    } while (iVar32 < (int)puVar27);" do (compound_statement "{\n      while( true ) {\n        prVar30 = (re_string_t *)mbcset->raw_mbs;\n        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];\n        iVar22 = (int)pbVar37 * 8;\n        pbVar9 = (byte *)(*piVar33 + iVar22);\n        bVar1 = pbVar9[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar9;\n        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;\n        if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }\n        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }\nLAB_00078a08:\n        iVar32 = iVar32 + 1;\n        prVar30 = prStackY_1c8;\n        prVar28 = ps;\n        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar14 = 0x20;\n        prStackY_1c8 = (re_string_t *)0x0;\n        while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar10 = *(int **)pbVar9;\n        if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }\n      iVar32 = iVar32 + 1;\n      ps = prVar28;\n    }" { (while_statement "while( true ) {\n        prVar30 = (re_string_t *)mbcset->raw_mbs;\n        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];\n        iVar22 = (int)pbVar37 * 8;\n        pbVar9 = (byte *)(*piVar33 + iVar22);\n        bVar1 = pbVar9[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar9;\n        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;\n        if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }\n        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }\nLAB_00078a08:\n        iVar32 = iVar32 + 1;\n        prVar30 = prStackY_1c8;\n        prVar28 = ps;\n        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        prVar30 = (re_string_t *)mbcset->raw_mbs;\n        pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];\n        iVar22 = (int)pbVar37 * 8;\n        pbVar9 = (byte *)(*piVar33 + iVar22);\n        bVar1 = pbVar9[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar9;\n        *(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;\n        if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }\n        if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }\nLAB_00078a08:\n        iVar32 = iVar32 + 1;\n        prVar30 = prStackY_1c8;\n        prVar28 = ps;\n        if ((int)puVar27 <= iVar32) goto LAB_00078a1c;\n      }" { (expression_statement "prVar30 = (re_string_t *)mbcset->raw_mbs;" (assignment_expression "prVar30 = (re_string_t *)mbcset->raw_mbs" identifier = (cast_expression "(re_string_t *)mbcset->raw_mbs" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mbcset->raw_mbs" identifier -> field_identifier))) ;) (expression_statement "pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32];" (assignment_expression "pbVar37 = (bin_tree_t *)(&prVar30->raw_mbs)[iVar32]" identifier = (cast_expression "(bin_tree_t *)(&prVar30->raw_mbs)[iVar32]" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "(&prVar30->raw_mbs)[iVar32]" (parenthesized_expression "(&prVar30->raw_mbs)" ( (pointer_expression "&prVar30->raw_mbs" & (field_expression "prVar30->raw_mbs" identifier -> field_identifier)) )) [ identifier ]))) ;) (expression_statement "iVar22 = (int)pbVar37 * 8;" (assignment_expression "iVar22 = (int)pbVar37 * 8" identifier = (binary_expression "(int)pbVar37 * 8" (cast_expression "(int)pbVar37" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "pbVar9 = (byte *)(*piVar33 + iVar22);" (assignment_expression "pbVar9 = (byte *)(*piVar33 + iVar22)" identifier = (cast_expression "(byte *)(*piVar33 + iVar22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar33 + iVar22)" ( (binary_expression "*piVar33 + iVar22" (pointer_expression "*piVar33" * identifier) + identifier) )))) ;) (expression_statement "bVar1 = pbVar9[4];" (assignment_expression "bVar1 = pbVar9[4]" identifier = (subscript_expression "pbVar9[4]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 != 1) break;" if (parenthesized_expression "(bVar1 != 1)" ( (binary_expression "bVar1 != 1" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (expression_statement "*(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1;" (assignment_expression "*(undefined1 *)((int)&token->raw_mbs + (uint)bVar1) = 1" (pointer_expression "*(undefined1 *)((int)&token->raw_mbs + (uint)bVar1)" * (cast_expression "(undefined1 *)((int)&token->raw_mbs + (uint)bVar1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&token->raw_mbs + (uint)bVar1)" ( (binary_expression "(int)&token->raw_mbs + (uint)bVar1" (cast_expression "(int)&token->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&token->raw_mbs" & (field_expression "token->raw_mbs" identifier -> field_identifier))) + (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) = number_literal) ;) (if_statement "if (uVar26 != 0) {\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n          *(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;\n        }" { (expression_statement "piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();" (assignment_expression "piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))()" identifier = (cast_expression "(int *)(**(code **)(puVar43 + 0x372e0))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar43 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar43 + 0x372e0))" ( (pointer_expression "**(code **)(puVar43 + 0x372e0)" * (pointer_expression "*(code **)(puVar43 + 0x372e0)" * (cast_expression "(code **)(puVar43 + 0x372e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x372e0)" ( (binary_expression "puVar43 + 0x372e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1;" (assignment_expression "*(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)) = 1" (pointer_expression "*(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4))" * (cast_expression "(undefined1 *)((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4))" ( (binary_expression "(int)&token->raw_mbs + *(int *)(*piVar10 + (uint)bVar1 * 4)" (cast_expression "(int)&token->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&token->raw_mbs" & (field_expression "token->raw_mbs" identifier -> field_identifier))) + (pointer_expression "*(int *)(*piVar10 + (uint)bVar1 * 4)" * (cast_expression "(int *)(*piVar10 + (uint)bVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar10 + (uint)bVar1 * 4)" ( (binary_expression "*piVar10 + (uint)bVar1 * 4" (pointer_expression "*piVar10" * identifier) + (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) )))) = number_literal) ;) })) (if_statement "if (((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])) {\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }\n        else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }" if (parenthesized_expression "(((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17]))" ( (binary_expression "((int)(puVar4[3] << 9) < 0) && (1 < piVar33[0x17])" (parenthesized_expression "((int)(puVar4[3] << 9) < 0)" ( (binary_expression "(int)(puVar4[3] << 9) < 0" (cast_expression "(int)(puVar4[3] << 9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar4[3] << 9)" ( (binary_expression "puVar4[3] << 9" (subscript_expression "puVar4[3]" identifier [ number_literal ]) << number_literal) ))) < number_literal) )) && (parenthesized_expression "(1 < piVar33[0x17])" ( (binary_expression "1 < piVar33[0x17]" number_literal < (subscript_expression "piVar33[0x17]" identifier [ number_literal ])) ))) )) (compound_statement "{\n          puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);\n          arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);\n          if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }\n          prStackY_1c8 = arStackY_19c;\n          ps = (re_string_t *)(auStackY_1a8 + 4);\n          prVar30 = (re_string_t *)auStackY_1a8;\n          auStackY_1a8._4_4_ = (uchar *)0x0;\n          pwStackY_1a0 = (wint_t *)0x0;\n          prVar28 = prVar8;\n          pstr = ps;\n          prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);\n          if (prVar12 != prVar8) goto LAB_00078a04;\n          uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);\n          iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);\n          prVar30 = prStackY_1c8;\n          prVar28 = ps;\n          if (iVar22 == -1) goto LAB_00078a04;\n          *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n          puVar27 = (uint *)*aVar25.sbcset;\n        }" { (expression_statement "puVar38 = (undefined1 *)((int)&pbVar37->parent + 1);" (assignment_expression "puVar38 = (undefined1 *)((int)&pbVar37->parent + 1)" identifier = (cast_expression "(undefined1 *)((int)&pbVar37->parent + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pbVar37->parent + 1)" ( (binary_expression "(int)&pbVar37->parent + 1" (cast_expression "(int)&pbVar37->parent" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pbVar37->parent" & (field_expression "pbVar37->parent" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22);" (assignment_expression "arStackY_19c[0].raw_mbs._0_1_ = *(byte *)(*piVar33 + iVar22)" (field_expression "arStackY_19c[0].raw_mbs._0_1_" (field_expression "arStackY_19c[0].raw_mbs" (subscript_expression "arStackY_19c[0]" identifier [ number_literal ]) . field_identifier) . field_identifier) = (pointer_expression "*(byte *)(*piVar33 + iVar22)" * (cast_expression "(byte *)(*piVar33 + iVar22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar33 + iVar22)" ( (binary_expression "*piVar33 + iVar22" (pointer_expression "*piVar33" * identifier) + identifier) ))))) ;) (if_statement "if ((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)) {\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }\n          else {\n            prVar8 = (re_string_t *)0x1;\n          }" if (parenthesized_expression "((puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400))" ( (binary_expression "(puVar38 < (undefined1 *)piVar33[2]) &&\n             (puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)" (parenthesized_expression "(puVar38 < (undefined1 *)piVar33[2])" ( (binary_expression "puVar38 < (undefined1 *)piVar33[2]" identifier < (cast_expression "(undefined1 *)piVar33[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar33[2]" identifier [ number_literal ]))) )) && (parenthesized_expression "(puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)" ( (comma_expression "puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8),\n             (*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400" (assignment_expression "puVar11 = (undefined1 *)(*piVar33 + iVar22 + 8)" identifier = (cast_expression "(undefined1 *)(*piVar33 + iVar22 + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar33 + iVar22 + 8)" ( (binary_expression "*piVar33 + iVar22 + 8" (binary_expression "*piVar33 + iVar22" (pointer_expression "*piVar33" * identifier) + identifier) + number_literal) )))) , (binary_expression "(*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400" (parenthesized_expression "(*(uint *)(puVar11 + 4) & 0xff000400)" ( (binary_expression "*(uint *)(puVar11 + 4) & 0xff000400" (pointer_expression "*(uint *)(puVar11 + 4)" * (cast_expression "(uint *)(puVar11 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n            puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);\n            do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);\n            prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);\n          }" { (expression_statement "puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1);" (assignment_expression "puVar40 = (undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1)" identifier = (cast_expression "(undefined1 *)((int)&arStackY_19c[0].raw_mbs + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&arStackY_19c[0].raw_mbs + 1)" ( (binary_expression "(int)&arStackY_19c[0].raw_mbs + 1" (cast_expression "(int)&arStackY_19c[0].raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&arStackY_19c[0].raw_mbs" & (field_expression "arStackY_19c[0].raw_mbs" (subscript_expression "arStackY_19c[0]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (do_statement "do {\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            } while ((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400);" do (compound_statement "{\n              puVar41 = puVar40 + 1;\n              puVar38 = puVar38 + 1;\n              *puVar40 = *puVar11;\n              if ((undefined1 *)piVar33[2] <= puVar38) break;\n              puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);\n              puVar40 = puVar41;\n            }" { (expression_statement "puVar41 = puVar40 + 1;" (assignment_expression "puVar41 = puVar40 + 1" identifier = (binary_expression "puVar40 + 1" identifier + number_literal)) ;) (expression_statement "puVar38 = puVar38 + 1;" (assignment_expression "puVar38 = puVar38 + 1" identifier = (binary_expression "puVar38 + 1" identifier + number_literal)) ;) (expression_statement "*puVar40 = *puVar11;" (assignment_expression "*puVar40 = *puVar11" (pointer_expression "*puVar40" * identifier) = (pointer_expression "*puVar11" * identifier)) ;) (if_statement "if ((undefined1 *)piVar33[2] <= puVar38) break;" if (parenthesized_expression "((undefined1 *)piVar33[2] <= puVar38)" ( (binary_expression "(undefined1 *)piVar33[2] <= puVar38" (cast_expression "(undefined1 *)piVar33[2]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar33[2]" identifier [ number_literal ])) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8);" (assignment_expression "puVar11 = (undefined1 *)(*piVar33 + (int)puVar38 * 8)" identifier = (cast_expression "(undefined1 *)(*piVar33 + (int)puVar38 * 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar33 + (int)puVar38 * 8)" ( (binary_expression "*piVar33 + (int)puVar38 * 8" (pointer_expression "*piVar33" * identifier) + (binary_expression "(int)puVar38 * 8" (cast_expression "(int)puVar38" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "puVar40 = puVar41;" (assignment_expression "puVar40 = puVar41" identifier = identifier) ;) }) while (parenthesized_expression "((*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400)" ( (binary_expression "(*(uint *)(puVar11 + 4) & 0xff000400) == 0x1000400" (parenthesized_expression "(*(uint *)(puVar11 + 4) & 0xff000400)" ( (binary_expression "*(uint *)(puVar11 + 4) & 0xff000400" (pointer_expression "*(uint *)(puVar11 + 4)" * (cast_expression "(uint *)(puVar11 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) ;) (expression_statement "prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c);" (assignment_expression "prVar8 = (re_string_t *)(puVar41 + -(int)arStackY_19c)" identifier = (cast_expression "(re_string_t *)(puVar41 + -(int)arStackY_19c)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar41 + -(int)arStackY_19c)" ( (binary_expression "puVar41 + -(int)arStackY_19c" identifier + (unary_expression "-(int)arStackY_19c" - (cast_expression "(int)arStackY_19c" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) }) (else_clause "else {\n            prVar8 = (re_string_t *)0x1;\n          }" else (compound_statement "{\n            prVar8 = (re_string_t *)0x1;\n          }" { (expression_statement "prVar8 = (re_string_t *)0x1;" (assignment_expression "prVar8 = (re_string_t *)0x1" identifier = (cast_expression "(re_string_t *)0x1" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "prStackY_1c8 = arStackY_19c;" (assignment_expression "prStackY_1c8 = arStackY_19c" identifier = identifier) ;) (expression_statement "ps = (re_string_t *)(auStackY_1a8 + 4);" (assignment_expression "ps = (re_string_t *)(auStackY_1a8 + 4)" identifier = (cast_expression "(re_string_t *)(auStackY_1a8 + 4)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStackY_1a8 + 4)" ( (binary_expression "auStackY_1a8 + 4" identifier + number_literal) )))) ;) (expression_statement "prVar30 = (re_string_t *)auStackY_1a8;" (assignment_expression "prVar30 = (re_string_t *)auStackY_1a8" identifier = (cast_expression "(re_string_t *)auStackY_1a8" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "auStackY_1a8._4_4_ = (uchar *)0x0;" (assignment_expression "auStackY_1a8._4_4_ = (uchar *)0x0" (field_expression "auStackY_1a8._4_4_" identifier . field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pwStackY_1a0 = (wint_t *)0x0;" (assignment_expression "pwStackY_1a0 = (wint_t *)0x0" identifier = (cast_expression "(wint_t *)0x0" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prVar28 = prVar8;" (assignment_expression "prVar28 = prVar8" identifier = identifier) ;) (expression_statement "pstr = ps;" (assignment_expression "pstr = ps" identifier = identifier) ;) (expression_statement "prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps);" (assignment_expression "prVar12 = (re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps)" identifier = (cast_expression "(re_string_t *)\n                    rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "rpl_mbrtowc((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps)" identifier (argument_list "((wchar_t *)prVar30,(char *)prStackY_1c8,(size_t)prVar8,\n                                (mbstate_t *)ps)" ( (cast_expression "(wchar_t *)prVar30" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)prStackY_1c8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(size_t)prVar8" ( (type_descriptor "size_t" primitive_type) ) identifier) , (cast_expression "(mbstate_t *)ps" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) (if_statement "if (prVar12 != prVar8) goto LAB_00078a04;" if (parenthesized_expression "(prVar12 != prVar8)" ( (binary_expression "prVar12 != prVar8" identifier != identifier) )) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;)) (expression_statement "uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_);" (assignment_expression "uVar13 = (**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_)" identifier = (call_expression "(**(code **)(puVar43 + 0x372d8))(auStackY_1a8._0_4_)" (parenthesized_expression "(**(code **)(puVar43 + 0x372d8))" ( (pointer_expression "**(code **)(puVar43 + 0x372d8)" * (pointer_expression "*(code **)(puVar43 + 0x372d8)" * (cast_expression "(code **)(puVar43 + 0x372d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x372d8)" ( (binary_expression "puVar43 + 0x372d8" identifier + number_literal) ))))) )) (argument_list "(auStackY_1a8._0_4_)" ( (field_expression "auStackY_1a8._0_4_" identifier . field_identifier) )))) ;) (expression_statement "iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13);" (assignment_expression "iVar22 = (**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13)" identifier = (call_expression "(**(code **)(puVar43 + 0x3742c))(prStackY_1c8,uVar13)" (parenthesized_expression "(**(code **)(puVar43 + 0x3742c))" ( (pointer_expression "**(code **)(puVar43 + 0x3742c)" * (pointer_expression "*(code **)(puVar43 + 0x3742c)" * (cast_expression "(code **)(puVar43 + 0x3742c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x3742c)" ( (binary_expression "puVar43 + 0x3742c" identifier + number_literal) ))))) )) (argument_list "(prStackY_1c8,uVar13)" ( identifier , identifier )))) ;) (expression_statement "prVar30 = prStackY_1c8;" (assignment_expression "prVar30 = prStackY_1c8" identifier = identifier) ;) (expression_statement "prVar28 = ps;" (assignment_expression "prVar28 = ps" identifier = identifier) ;) (if_statement "if (iVar22 == -1) goto LAB_00078a04;" if (parenthesized_expression "(iVar22 == -1)" ( (binary_expression "iVar22 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;" (assignment_expression "*(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1" (pointer_expression "*(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_)" * (cast_expression "(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_)" ( (binary_expression "(int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_" (cast_expression "(int)&token->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&token->raw_mbs" & (field_expression "token->raw_mbs" identifier -> field_identifier))) + (cast_expression "(uint)arStackY_19c[0].raw_mbs._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "arStackY_19c[0].raw_mbs._0_1_" (field_expression "arStackY_19c[0].raw_mbs" (subscript_expression "arStackY_19c[0]" identifier [ number_literal ]) . field_identifier) . field_identifier))) )))) = number_literal) ;) (expression_statement "puVar27 = (uint *)*aVar25.sbcset;" (assignment_expression "puVar27 = (uint *)*aVar25.sbcset" identifier = (cast_expression "(uint *)*aVar25.sbcset" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*aVar25.sbcset" * (field_expression "aVar25.sbcset" identifier . field_identifier)))) ;) }) (else_clause "else {\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }" else (compound_statement "{\nLAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;\n          prStackY_1c8 = prVar30;\n          ps = prVar28;\n        }" { (labeled_statement "LAB_00078a04:\n          puVar27 = (uint *)*aVar25.sbcset;" statement_identifier : (expression_statement "puVar27 = (uint *)*aVar25.sbcset;" (assignment_expression "puVar27 = (uint *)*aVar25.sbcset" identifier = (cast_expression "(uint *)*aVar25.sbcset" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*aVar25.sbcset" * (field_expression "aVar25.sbcset" identifier . field_identifier)))) ;)) (expression_statement "prStackY_1c8 = prVar30;" (assignment_expression "prStackY_1c8 = prVar30" identifier = identifier) ;) (expression_statement "ps = prVar28;" (assignment_expression "ps = prVar28" identifier = identifier) ;) }))) (labeled_statement "LAB_00078a08:\n        iVar32 = iVar32 + 1;" statement_identifier : (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;)) (expression_statement "prVar30 = prStackY_1c8;" (assignment_expression "prVar30 = prStackY_1c8" identifier = identifier) ;) (expression_statement "prVar28 = ps;" (assignment_expression "prVar28 = ps" identifier = identifier) ;) (if_statement "if ((int)puVar27 <= iVar32) goto LAB_00078a1c;" if (parenthesized_expression "((int)puVar27 <= iVar32)" ( (binary_expression "(int)puVar27 <= iVar32" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00078a1c;" goto statement_identifier ;)) })) (if_statement "if (bVar1 == 3) {\n        iVar14 = 0x20;\n        prStackY_1c8 = (re_string_t *)0x0;\n        while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }\n        goto LAB_00078a04;\n      }" if (parenthesized_expression "(bVar1 == 3)" ( (binary_expression "bVar1 == 3" identifier == number_literal) )) (compound_statement "{\n        iVar14 = 0x20;\n        prStackY_1c8 = (re_string_t *)0x0;\n        while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }\n        goto LAB_00078a04;\n      }" { (expression_statement "iVar14 = 0x20;" (assignment_expression "iVar14 = 0x20" identifier = number_literal) ;) (expression_statement "prStackY_1c8 = (re_string_t *)0x0;" (assignment_expression "prStackY_1c8 = (re_string_t *)0x0" identifier = (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while( true ) {\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar42 = iVar14 + -0x20;\n          uVar6 = 0;\n          uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);\n          do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);\n          iVar14 = iVar14 + 0x20;\n          prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);\n          if (iVar14 == 0x120) break;\n          pbVar9 = (byte *)(*piVar33 + iVar22);\n        }" { (expression_statement "iVar42 = iVar14 + -0x20;" (assignment_expression "iVar42 = iVar14 + -0x20" identifier = (binary_expression "iVar14 + -0x20" identifier + number_literal)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8);" (assignment_expression "uVar39 = *(uint *)(*(int *)pbVar9 + (int)prStackY_1c8)" identifier = (pointer_expression "*(uint *)(*(int *)pbVar9 + (int)prStackY_1c8)" * (cast_expression "(uint *)(*(int *)pbVar9 + (int)prStackY_1c8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar9 + (int)prStackY_1c8)" ( (binary_expression "*(int *)pbVar9 + (int)prStackY_1c8" (pointer_expression "*(int *)pbVar9" * (cast_expression "(int *)pbVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (cast_expression "(int)prStackY_1c8" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (do_statement "do {\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar14 != iVar42);" do (compound_statement "{\n            if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }\n            iVar42 = iVar42 + 1;\n            uVar6 = uVar6 + 1;\n          }" { (if_statement "if (((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)) {\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }" if (parenthesized_expression "(((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0))" ( (binary_expression "((uVar39 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)" (parenthesized_expression "((uVar39 >> (uVar6 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar39 >> (uVar6 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar39 >> (uVar6 & 0x1f) & 1)" ( (binary_expression "uVar39 >> (uVar6 & 0x1f) & 1" (binary_expression "uVar39 >> (uVar6 & 0x1f)" identifier >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0)" ( (comma_expression "*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1, uVar26 != 0" (assignment_expression "*(undefined1 *)((int)&token->raw_mbs + iVar42) = 1" (pointer_expression "*(undefined1 *)((int)&token->raw_mbs + iVar42)" * (cast_expression "(undefined1 *)((int)&token->raw_mbs + iVar42)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&token->raw_mbs + iVar42)" ( (binary_expression "(int)&token->raw_mbs + iVar42" (cast_expression "(int)&token->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&token->raw_mbs" & (field_expression "token->raw_mbs" identifier -> field_identifier))) + identifier) )))) = number_literal) , (binary_expression "uVar26 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);\n              if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }\n            }" { (expression_statement "prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180);" (assignment_expression "prVar28 = (re_string_t *)(uint)(iVar42 + 0x80U < 0x180)" identifier = (cast_expression "(re_string_t *)(uint)(iVar42 + 0x80U < 0x180)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar42 + 0x80U < 0x180)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar42 + 0x80U < 0x180)" ( (binary_expression "iVar42 + 0x80U < 0x180" (binary_expression "iVar42 + 0x80U" identifier + number_literal) < number_literal) ))))) ;) (if_statement "if (prVar28 != (re_string_t *)0x0) {\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }" if (parenthesized_expression "(prVar28 != (re_string_t *)0x0)" ( (binary_expression "prVar28 != (re_string_t *)0x0" identifier != (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar28 = (re_string_t *)(iVar42 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;\n              }" { (expression_statement "piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))();" (assignment_expression "piVar10 = (int *)(**(code **)(puVar43 + 0x372e0))()" identifier = (cast_expression "(int *)(**(code **)(puVar43 + 0x372e0))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar43 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar43 + 0x372e0))" ( (pointer_expression "**(code **)(puVar43 + 0x372e0)" * (pointer_expression "*(code **)(puVar43 + 0x372e0)" * (cast_expression "(code **)(puVar43 + 0x372e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x372e0)" ( (binary_expression "puVar43 + 0x372e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "prVar28 = (re_string_t *)(iVar42 * 4);" (assignment_expression "prVar28 = (re_string_t *)(iVar42 * 4)" identifier = (cast_expression "(re_string_t *)(iVar42 * 4)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar42 * 4)" ( (binary_expression "iVar42 * 4" identifier * number_literal) )))) ;) (expression_statement "*(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1;" (assignment_expression "*(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))\n                     = 1" (pointer_expression "*(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))" * (cast_expression "(undefined1 *)((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10))" ( (binary_expression "(int)&token->raw_mbs + *(int *)((int)&prVar28->raw_mbs + *piVar10)" (cast_expression "(int)&token->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&token->raw_mbs" & (field_expression "token->raw_mbs" identifier -> field_identifier))) + (pointer_expression "*(int *)((int)&prVar28->raw_mbs + *piVar10)" * (cast_expression "(int *)((int)&prVar28->raw_mbs + *piVar10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar28->raw_mbs + *piVar10)" ( (binary_expression "(int)&prVar28->raw_mbs + *piVar10" (cast_expression "(int)&prVar28->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar28->raw_mbs" & (field_expression "prVar28->raw_mbs" identifier -> field_identifier))) + (pointer_expression "*piVar10" * identifier)) ))))) )))) = number_literal) ;) })) })) (expression_statement "iVar42 = iVar42 + 1;" (assignment_expression "iVar42 = iVar42 + 1" identifier = (binary_expression "iVar42 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar14 != iVar42)" ( (binary_expression "iVar14 != iVar42" identifier != identifier) )) ;) (expression_statement "iVar14 = iVar14 + 0x20;" (assignment_expression "iVar14 = iVar14 + 0x20" identifier = (binary_expression "iVar14 + 0x20" identifier + number_literal)) ;) (expression_statement "prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4);" (assignment_expression "prStackY_1c8 = (re_string_t *)((int)prStackY_1c8 + 4)" identifier = (cast_expression "(re_string_t *)((int)prStackY_1c8 + 4)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)prStackY_1c8 + 4)" ( (binary_expression "(int)prStackY_1c8 + 4" (cast_expression "(int)prStackY_1c8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar14 == 0x120) break;" if (parenthesized_expression "(iVar14 == 0x120)" ( (binary_expression "iVar14 == 0x120" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar9 = (byte *)(*piVar33 + iVar22);" (assignment_expression "pbVar9 = (byte *)(*piVar33 + iVar22)" identifier = (cast_expression "(byte *)(*piVar33 + iVar22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar33 + iVar22)" ( (binary_expression "*piVar33 + iVar22" (pointer_expression "*piVar33" * identifier) + identifier) )))) ;) })) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;) })) (if_statement "if (bVar1 == 6) {\n        piVar10 = *(int **)pbVar9;\n        if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }" if (parenthesized_expression "(bVar1 == 6)" ( (binary_expression "bVar1 == 6" identifier == number_literal) )) (compound_statement "{\n        piVar10 = *(int **)pbVar9;\n        if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }\n      }" { (expression_statement "piVar10 = *(int **)pbVar9;" (assignment_expression "piVar10 = *(int **)pbVar9" identifier = (pointer_expression "*(int **)pbVar9" * (cast_expression "(int **)pbVar9" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))) {\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }" if (parenthesized_expression "((1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0))))" ( (binary_expression "(1 < piVar33[0x17]) &&\n           (((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))" (parenthesized_expression "(1 < piVar33[0x17])" ( (binary_expression "1 < piVar33[0x17]" number_literal < (subscript_expression "piVar33[0x17]" identifier [ number_literal ])) )) && (parenthesized_expression "(((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)))" ( (parenthesized_expression "((piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0))" ( (binary_expression "(piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')) || (piVar10[8] != 0)" (parenthesized_expression "(piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0'))" ( (binary_expression "piVar10[9] != 0 || (*(char *)(piVar10 + 4) < '\0')" (binary_expression "piVar10[9] != 0" (subscript_expression "piVar10[9]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(*(char *)(piVar10 + 4) < '\0')" ( (binary_expression "*(char *)(piVar10 + 4) < '\0'" (pointer_expression "*(char *)(piVar10 + 4)" * (cast_expression "(char *)(piVar10 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 4)" ( (binary_expression "piVar10 + 4" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(piVar10[8] != 0)" ( (binary_expression "piVar10[8] != 0" (subscript_expression "piVar10[8]" identifier [ number_literal ]) != number_literal) ))) )) ))) )) (compound_statement "{\n          auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;\n          do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');\n          puVar27 = (uint *)*aVar25.sbcset;\n          goto LAB_00078a08;\n        }" { (expression_statement "auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff;" (assignment_expression "auStackY_1a8._0_4_ = auStackY_1a8._0_4_ & 0xffffff" (field_expression "auStackY_1a8._0_4_" identifier . field_identifier) = (binary_expression "auStackY_1a8._0_4_ & 0xffffff" (field_expression "auStackY_1a8._0_4_" identifier . field_identifier) & number_literal)) ;) (do_statement "do {\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          } while (cVar20 != '\0');" do (compound_statement "{\n            ps = (re_string_t *)0x1;\n            prStackY_1c8 = (re_string_t *)0x0;\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            pstr = (re_string_t *)(auStackY_1a8 + 4);\n            sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));\n            if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }\n            cVar20 = auStackY_1a8[0] + 1;\n            auStackY_1a8[0] = cVar20;\n          }" { (expression_statement "ps = (re_string_t *)0x1;" (assignment_expression "ps = (re_string_t *)0x1" identifier = (cast_expression "(re_string_t *)0x1" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prStackY_1c8 = (re_string_t *)0x0;" (assignment_expression "prStackY_1c8 = (re_string_t *)0x0" identifier = (cast_expression "(re_string_t *)0x0" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "auStackY_1a8._4_4_ = (uchar *)0x0;" (assignment_expression "auStackY_1a8._4_4_ = (uchar *)0x0" (field_expression "auStackY_1a8._4_4_" identifier . field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pwStackY_1a0 = (wint_t *)0x0;" (assignment_expression "pwStackY_1a0 = (wint_t *)0x0" identifier = (cast_expression "(wint_t *)0x0" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pstr = (re_string_t *)(auStackY_1a8 + 4);" (assignment_expression "pstr = (re_string_t *)(auStackY_1a8 + 4)" identifier = (cast_expression "(re_string_t *)(auStackY_1a8 + 4)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStackY_1a8 + 4)" ( (binary_expression "auStackY_1a8 + 4" identifier + number_literal) )))) ;) (expression_statement "sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4));" (assignment_expression "sVar16 = rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4))" identifier = (call_expression "rpl_mbrtowc((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4))" identifier (argument_list "((wchar_t *)0x0,auStackY_1a8,1,(mbstate_t *)(auStackY_1a8 + 4))" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , number_literal , (cast_expression "(mbstate_t *)(auStackY_1a8 + 4)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStackY_1a8 + 4)" ( (binary_expression "auStackY_1a8 + 4" identifier + number_literal) ))) )))) ;) (if_statement "if (sVar16 == 0xfffffffe) {\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }" if (parenthesized_expression "(sVar16 == 0xfffffffe)" ( (binary_expression "sVar16 == 0xfffffffe" identifier == number_literal) )) (compound_statement "{\n              *(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;\n            }" { (expression_statement "*(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1;" (assignment_expression "*(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0]) = 1" (pointer_expression "*(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0])" * (cast_expression "(undefined1 *)((int)&token->raw_mbs + (uint)auStackY_1a8[0])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&token->raw_mbs + (uint)auStackY_1a8[0])" ( (binary_expression "(int)&token->raw_mbs + (uint)auStackY_1a8[0]" (cast_expression "(int)&token->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&token->raw_mbs" & (field_expression "token->raw_mbs" identifier -> field_identifier))) + (cast_expression "(uint)auStackY_1a8[0]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "auStackY_1a8[0]" identifier [ number_literal ]))) )))) = number_literal) ;) })) (expression_statement "cVar20 = auStackY_1a8[0] + 1;" (assignment_expression "cVar20 = auStackY_1a8[0] + 1" identifier = (binary_expression "auStackY_1a8[0] + 1" (subscript_expression "auStackY_1a8[0]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "auStackY_1a8[0] = cVar20;" (assignment_expression "auStackY_1a8[0] = cVar20" (subscript_expression "auStackY_1a8[0]" identifier [ number_literal ]) = identifier) ;) }) while (parenthesized_expression "(cVar20 != '\0')" ( (binary_expression "cVar20 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "puVar27 = (uint *)*aVar25.sbcset;" (assignment_expression "puVar27 = (uint *)*aVar25.sbcset" identifier = (cast_expression "(uint *)*aVar25.sbcset" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*aVar25.sbcset" * (field_expression "aVar25.sbcset" identifier . field_identifier)))) ;) (goto_statement "goto LAB_00078a08;" goto statement_identifier ;) })) (if_statement "if (0 < piVar10[5]) {\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }" if (parenthesized_expression "(0 < piVar10[5])" ( (binary_expression "0 < piVar10[5]" number_literal < (subscript_expression "piVar10[5]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar22 = 0;\n          do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);\n          goto LAB_00078a04;\n        }" { (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          } while (iVar22 < piVar10[5]);" do (compound_statement "{\n            auStackY_1a8._4_4_ = (uchar *)0x0;\n            pwStackY_1a0 = (wint_t *)0x0;\n            prVar30 = arStackY_19c;\n            prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n            iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));\n            if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }\n            if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }\n            iVar22 = iVar22 + 1;\n          }" { (expression_statement "auStackY_1a8._4_4_ = (uchar *)0x0;" (assignment_expression "auStackY_1a8._4_4_ = (uchar *)0x0" (field_expression "auStackY_1a8._4_4_" identifier . field_identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pwStackY_1a0 = (wint_t *)0x0;" (assignment_expression "pwStackY_1a0 = (wint_t *)0x0" identifier = (cast_expression "(wint_t *)0x0" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prVar30 = arStackY_19c;" (assignment_expression "prVar30 = arStackY_19c" identifier = identifier) ;) (expression_statement "prVar28 = (re_string_t *)(auStackY_1a8 + 4);" (assignment_expression "prVar28 = (re_string_t *)(auStackY_1a8 + 4)" identifier = (cast_expression "(re_string_t *)(auStackY_1a8 + 4)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStackY_1a8 + 4)" ( (binary_expression "auStackY_1a8 + 4" identifier + number_literal) )))) ;) (expression_statement "iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4));" (assignment_expression "iVar14 = (**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4))" identifier = (call_expression "(**(code **)(puVar43 + 0x3742c))\n                               (arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4))" (parenthesized_expression "(**(code **)(puVar43 + 0x3742c))" ( (pointer_expression "**(code **)(puVar43 + 0x3742c)" * (pointer_expression "*(code **)(puVar43 + 0x3742c)" * (cast_expression "(code **)(puVar43 + 0x3742c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x3742c)" ( (binary_expression "puVar43 + 0x3742c" identifier + number_literal) ))))) )) (argument_list "(arStackY_19c,*(undefined4 *)(*piVar10 + iVar22 * 4))" ( identifier , (pointer_expression "*(undefined4 *)(*piVar10 + iVar22 * 4)" * (cast_expression "(undefined4 *)(*piVar10 + iVar22 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar10 + iVar22 * 4)" ( (binary_expression "*piVar10 + iVar22 * 4" (pointer_expression "*piVar10" * identifier) + (binary_expression "iVar22 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar14 != -1) {\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }" if (parenthesized_expression "(iVar14 != -1)" ( (binary_expression "iVar14 != -1" identifier != number_literal) )) (compound_statement "{\n              uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;\n              *(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;\n              if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }\n            }" { (expression_statement "uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_;" (assignment_expression "uVar6 = (uint)arStackY_19c[0].raw_mbs._0_1_" identifier = (cast_expression "(uint)arStackY_19c[0].raw_mbs._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "arStackY_19c[0].raw_mbs._0_1_" (field_expression "arStackY_19c[0].raw_mbs" (subscript_expression "arStackY_19c[0]" identifier [ number_literal ]) . field_identifier) . field_identifier))) ;) (expression_statement "*(undefined1 *)((int)&token->raw_mbs + uVar6) = 1;" (assignment_expression "*(undefined1 *)((int)&token->raw_mbs + uVar6) = 1" (pointer_expression "*(undefined1 *)((int)&token->raw_mbs + uVar6)" * (cast_expression "(undefined1 *)((int)&token->raw_mbs + uVar6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&token->raw_mbs + uVar6)" ( (binary_expression "(int)&token->raw_mbs + uVar6" (cast_expression "(int)&token->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&token->raw_mbs" & (field_expression "token->raw_mbs" identifier -> field_identifier))) + identifier) )))) = number_literal) ;) (if_statement "if (uVar26 != 0) {\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }" if (parenthesized_expression "(uVar26 != 0)" ( (binary_expression "uVar26 != 0" identifier != number_literal) )) (compound_statement "{\n                piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();\n                prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);\n                *(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;\n              }" { (expression_statement "piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))();" (assignment_expression "piVar15 = (int *)(**(code **)(puVar43 + 0x372e0))()" identifier = (cast_expression "(int *)(**(code **)(puVar43 + 0x372e0))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar43 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar43 + 0x372e0))" ( (pointer_expression "**(code **)(puVar43 + 0x372e0)" * (pointer_expression "*(code **)(puVar43 + 0x372e0)" * (cast_expression "(code **)(puVar43 + 0x372e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x372e0)" ( (binary_expression "puVar43 + 0x372e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4);" (assignment_expression "prVar30 = (re_string_t *)(*piVar15 + uVar6 * 4)" identifier = (cast_expression "(re_string_t *)(*piVar15 + uVar6 * 4)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar15 + uVar6 * 4)" ( (binary_expression "*piVar15 + uVar6 * 4" (pointer_expression "*piVar15" * identifier) + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "*(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1;" (assignment_expression "*(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs) = 1" (pointer_expression "*(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs)" * (cast_expression "(undefined1 *)((int)&token->raw_mbs + (int)prVar30->raw_mbs)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&token->raw_mbs + (int)prVar30->raw_mbs)" ( (binary_expression "(int)&token->raw_mbs + (int)prVar30->raw_mbs" (cast_expression "(int)&token->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&token->raw_mbs" & (field_expression "token->raw_mbs" identifier -> field_identifier))) + (cast_expression "(int)prVar30->raw_mbs" ( (type_descriptor "int" primitive_type) ) (field_expression "prVar30->raw_mbs" identifier -> field_identifier))) )))) = number_literal) ;) })) })) (if_statement "if (((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }" if (parenthesized_expression "(((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17]))" ( (binary_expression "((puVar4[3] & 0x400000) != 0) && (1 < piVar33[0x17])" (parenthesized_expression "((puVar4[3] & 0x400000) != 0)" ( (binary_expression "(puVar4[3] & 0x400000) != 0" (parenthesized_expression "(puVar4[3] & 0x400000)" ( (binary_expression "puVar4[3] & 0x400000" (subscript_expression "puVar4[3]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(1 < piVar33[0x17])" ( (binary_expression "1 < piVar33[0x17]" number_literal < (subscript_expression "piVar33[0x17]" identifier [ number_literal ])) ))) )) (compound_statement "{\n              uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));\n              prVar30 = arStackY_19c;\n              prVar28 = (re_string_t *)(auStackY_1a8 + 4);\n              iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);\n              if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }\n            }" { (expression_statement "uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4));" (assignment_expression "uVar13 = (**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4))" identifier = (call_expression "(**(code **)(puVar43 + 0x372d8))(*(undefined4 *)(*piVar10 + iVar22 * 4))" (parenthesized_expression "(**(code **)(puVar43 + 0x372d8))" ( (pointer_expression "**(code **)(puVar43 + 0x372d8)" * (pointer_expression "*(code **)(puVar43 + 0x372d8)" * (cast_expression "(code **)(puVar43 + 0x372d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x372d8)" ( (binary_expression "puVar43 + 0x372d8" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(*piVar10 + iVar22 * 4))" ( (pointer_expression "*(undefined4 *)(*piVar10 + iVar22 * 4)" * (cast_expression "(undefined4 *)(*piVar10 + iVar22 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar10 + iVar22 * 4)" ( (binary_expression "*piVar10 + iVar22 * 4" (pointer_expression "*piVar10" * identifier) + (binary_expression "iVar22 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "prVar30 = arStackY_19c;" (assignment_expression "prVar30 = arStackY_19c" identifier = identifier) ;) (expression_statement "prVar28 = (re_string_t *)(auStackY_1a8 + 4);" (assignment_expression "prVar28 = (re_string_t *)(auStackY_1a8 + 4)" identifier = (cast_expression "(re_string_t *)(auStackY_1a8 + 4)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStackY_1a8 + 4)" ( (binary_expression "auStackY_1a8 + 4" identifier + number_literal) )))) ;) (expression_statement "iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13);" (assignment_expression "iVar14 = (**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13)" identifier = (call_expression "(**(code **)(puVar43 + 0x3742c))(arStackY_19c,uVar13)" (parenthesized_expression "(**(code **)(puVar43 + 0x3742c))" ( (pointer_expression "**(code **)(puVar43 + 0x3742c)" * (pointer_expression "*(code **)(puVar43 + 0x3742c)" * (cast_expression "(code **)(puVar43 + 0x3742c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x3742c)" ( (binary_expression "puVar43 + 0x3742c" identifier + number_literal) ))))) )) (argument_list "(arStackY_19c,uVar13)" ( identifier , identifier )))) ;) (if_statement "if (iVar14 != -1) {\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }" if (parenthesized_expression "(iVar14 != -1)" ( (binary_expression "iVar14 != -1" identifier != number_literal) )) (compound_statement "{\n                *(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;\n              }" { (expression_statement "*(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1;" (assignment_expression "*(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_) = 1" (pointer_expression "*(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_)" * (cast_expression "(undefined1 *)((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_)" ( (binary_expression "(int)&token->raw_mbs + (uint)arStackY_19c[0].raw_mbs._0_1_" (cast_expression "(int)&token->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&token->raw_mbs" & (field_expression "token->raw_mbs" identifier -> field_identifier))) + (cast_expression "(uint)arStackY_19c[0].raw_mbs._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "arStackY_19c[0].raw_mbs._0_1_" (field_expression "arStackY_19c[0].raw_mbs" (subscript_expression "arStackY_19c[0]" identifier [ number_literal ]) . field_identifier) . field_identifier))) )))) = number_literal) ;) })) })) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 < piVar10[5])" ( (binary_expression "iVar22 < piVar10[5]" identifier < (subscript_expression "piVar10[5]" identifier [ number_literal ])) )) ;) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;) })) }) (else_clause "else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }" else (compound_statement "{\n        if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }\n      }" { (if_statement "if ((bVar1 & 0xfd) == 5) {\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }" if (parenthesized_expression "((bVar1 & 0xfd) == 5)" ( (binary_expression "(bVar1 & 0xfd) == 5" (parenthesized_expression "(bVar1 & 0xfd)" ( (binary_expression "bVar1 & 0xfd" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }\n          goto LAB_00078e4c;\n        }" { (if_statement "if (prStackY_9c == (re_string_t *)*puVar21) {\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }" if (parenthesized_expression "(prStackY_9c == (re_string_t *)*puVar21)" ( (binary_expression "prStackY_9c == (re_string_t *)*puVar21" identifier == (cast_expression "(re_string_t *)*puVar21" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar21" * identifier))) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n            pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);\n            return pbVar37;\n          }" { comment comment (expression_statement "pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100);" (assignment_expression "pbVar37 = (bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100)" identifier = (cast_expression "(bin_tree_t *)(**(code **)(puVar43 + 0x374f4))(token,1,0x100)" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar43 + 0x374f4))(token,1,0x100)" (parenthesized_expression "(**(code **)(puVar43 + 0x374f4))" ( (pointer_expression "**(code **)(puVar43 + 0x374f4)" * (pointer_expression "*(code **)(puVar43 + 0x374f4)" * (cast_expression "(code **)(puVar43 + 0x374f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x374f4)" ( (binary_expression "puVar43 + 0x374f4" identifier + number_literal) ))))) )) (argument_list "(token,1,0x100)" ( identifier , number_literal , number_literal ))))) ;) (return_statement "return pbVar37;" return identifier ;) })) (goto_statement "goto LAB_00078e4c;" goto statement_identifier ;) })) (if_statement "if (bVar1 == 2) {\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }" if (parenthesized_expression "(bVar1 == 2)" ( (binary_expression "bVar1 == 2" identifier == number_literal) )) (compound_statement "{\n          ps = (re_string_t *)0x100;\n          puVar27 = (uint *)0x1;\n          (**(code **)(puVar43 + 0x374f4))();\n          *(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;\n          prVar30 = token;\n          break;\n        }" { (expression_statement "ps = (re_string_t *)0x100;" (assignment_expression "ps = (re_string_t *)0x100" identifier = (cast_expression "(re_string_t *)0x100" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar27 = (uint *)0x1;" (assignment_expression "puVar27 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(**(code **)(puVar43 + 0x374f4))();" (call_expression "(**(code **)(puVar43 + 0x374f4))()" (parenthesized_expression "(**(code **)(puVar43 + 0x374f4))" ( (pointer_expression "**(code **)(puVar43 + 0x374f4)" * (pointer_expression "*(code **)(puVar43 + 0x374f4)" * (cast_expression "(code **)(puVar43 + 0x374f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x374f4)" ( (binary_expression "puVar43 + 0x374f4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80;" (assignment_expression "*(byte *)(puVar4 + 7) = *(byte *)(puVar4 + 7) & 0x7f | 0x80" (pointer_expression "*(byte *)(puVar4 + 7)" * (cast_expression "(byte *)(puVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 7)" ( (binary_expression "puVar4 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar4 + 7) & 0x7f | 0x80" (binary_expression "*(byte *)(puVar4 + 7) & 0x7f" (pointer_expression "*(byte *)(puVar4 + 7)" * (cast_expression "(byte *)(puVar4 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 7)" ( (binary_expression "puVar4 + 7" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "prVar30 = token;" (assignment_expression "prVar30 = token" identifier = identifier) ;) (break_statement "break;" break ;) })) }))) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) (expression_statement "ps = prVar28;" (assignment_expression "ps = prVar28" identifier = identifier) ;) }) while (parenthesized_expression "(iVar32 < (int)puVar27)" ( (binary_expression "iVar32 < (int)puVar27" identifier < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "LAB_00078a1c:\n  prVar28 = ps;" statement_identifier : (expression_statement "prVar28 = ps;" (assignment_expression "prVar28 = ps" identifier = identifier) ;)) (if_statement "if (prStackY_9c == (re_string_t *)*puVar21) {\n    return (bin_tree_t *)*puVar21;\n  }" if (parenthesized_expression "(prStackY_9c == (re_string_t *)*puVar21)" ( (binary_expression "prStackY_9c == (re_string_t *)*puVar21" identifier == (cast_expression "(re_string_t *)*puVar21" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar21" * identifier))) )) (compound_statement "{\n    return (bin_tree_t *)*puVar21;\n  }" { (return_statement "return (bin_tree_t *)*puVar21;" return (cast_expression "(bin_tree_t *)*puVar21" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar21" * identifier)) ;) })) (labeled_statement "LAB_00078e4c:\n  pcVar44 = *(code **)(puVar43 + 0x37334);" statement_identifier : (expression_statement "pcVar44 = *(code **)(puVar43 + 0x37334);" (assignment_expression "pcVar44 = *(code **)(puVar43 + 0x37334)" identifier = (pointer_expression "*(code **)(puVar43 + 0x37334)" * (cast_expression "(code **)(puVar43 + 0x37334)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar43 + 0x37334)" ( (binary_expression "puVar43 + 0x37334" identifier + number_literal) ))))) ;)) (expression_statement "(*pcVar44)();" (call_expression "(*pcVar44)()" (parenthesized_expression "(*pcVar44)" ( (pointer_expression "*pcVar44" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "ppbVar31 = (bin_tree_t **)(&prVar30->raw_mbs + (int)prVar28 * 2);" (assignment_expression "ppbVar31 = (bin_tree_t **)(&prVar30->raw_mbs + (int)prVar28 * 2)" identifier = (cast_expression "(bin_tree_t **)(&prVar30->raw_mbs + (int)prVar28 * 2)" ( (type_descriptor "bin_tree_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(&prVar30->raw_mbs + (int)prVar28 * 2)" ( (binary_expression "&prVar30->raw_mbs + (int)prVar28 * 2" (pointer_expression "&prVar30->raw_mbs" & (field_expression "prVar30->raw_mbs" identifier -> field_identifier)) + (binary_expression "(int)prVar28 * 2" (cast_expression "(int)prVar28" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "uVar26 = (uint)*(byte *)(ppbVar31 + 1);" (assignment_expression "uVar26 = (uint)*(byte *)(ppbVar31 + 1)" identifier = (binary_expression "(uint)*(byte *)(ppbVar31 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(ppbVar31 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ppbVar31 + 1)" ( (binary_expression "ppbVar31 + 1" identifier + number_literal) ))))) ;) (if_statement "if (uVar26 == 7) {\n    pbVar9 = pstr->mbs + (int)idx;\n    bVar1 = *pbVar9;\n    if (bVar1 < 0xc2) {\n      return (bin_tree_t *)0x0;\n    }\n    if (pstr->len <= (int)(puVar43 + 0x3eb91)) {\n      return (bin_tree_t *)0x0;\n    }\n    bVar2 = pbVar9[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (bin_tree_t *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);\n      if ((int)(idx + (int)pbVar37) <= pstr->len) {\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }\n    }\n  }\n  else if (pstr->mb_cur_max != 1) {\n    pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx);\n    if (uVar26 == 5) {\n      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }\n    }\n    else if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }\n  }" if (parenthesized_expression "(uVar26 == 7)" ( (binary_expression "uVar26 == 7" identifier == number_literal) )) (compound_statement "{\n    pbVar9 = pstr->mbs + (int)idx;\n    bVar1 = *pbVar9;\n    if (bVar1 < 0xc2) {\n      return (bin_tree_t *)0x0;\n    }\n    if (pstr->len <= (int)(puVar43 + 0x3eb91)) {\n      return (bin_tree_t *)0x0;\n    }\n    bVar2 = pbVar9[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (bin_tree_t *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);\n      if ((int)(idx + (int)pbVar37) <= pstr->len) {\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }\n    }\n  }" { (expression_statement "pbVar9 = pstr->mbs + (int)idx;" (assignment_expression "pbVar9 = pstr->mbs + (int)idx" identifier = (binary_expression "pstr->mbs + (int)idx" (field_expression "pstr->mbs" identifier -> field_identifier) + (cast_expression "(int)idx" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (if_statement "if (bVar1 < 0xc2) {\n      return (bin_tree_t *)0x0;\n    }" if (parenthesized_expression "(bVar1 < 0xc2)" ( (binary_expression "bVar1 < 0xc2" identifier < number_literal) )) (compound_statement "{\n      return (bin_tree_t *)0x0;\n    }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (pstr->len <= (int)(puVar43 + 0x3eb91)) {\n      return (bin_tree_t *)0x0;\n    }" if (parenthesized_expression "(pstr->len <= (int)(puVar43 + 0x3eb91))" ( (binary_expression "pstr->len <= (int)(puVar43 + 0x3eb91)" (field_expression "pstr->len" identifier -> field_identifier) <= (cast_expression "(int)(puVar43 + 0x3eb91)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar43 + 0x3eb91)" ( (binary_expression "puVar43 + 0x3eb91" identifier + number_literal) )))) )) (compound_statement "{\n      return (bin_tree_t *)0x0;\n    }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar2 = pbVar9[1];" (assignment_expression "bVar2 = pbVar9[1]" identifier = (subscript_expression "pbVar9[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (bin_tree_t *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);\n      if ((int)(idx + (int)pbVar37) <= pstr->len) {\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xe0)" ( (binary_expression "bVar1 < 0xe0" identifier < number_literal) )) (compound_statement "{\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (bin_tree_t *)0x2;\n      }\n    }" { (if_statement "if ((bVar2 ^ 0x80) < 0x40) {\n        return (bin_tree_t *)0x2;\n      }" if (parenthesized_expression "((bVar2 ^ 0x80) < 0x40)" ( (binary_expression "(bVar2 ^ 0x80) < 0x40" (parenthesized_expression "(bVar2 ^ 0x80)" ( (binary_expression "bVar2 ^ 0x80" identifier ^ number_literal) )) < number_literal) )) (compound_statement "{\n        return (bin_tree_t *)0x2;\n      }" { (return_statement "return (bin_tree_t *)0x2;" return (cast_expression "(bin_tree_t *)0x2" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);\n      if ((int)(idx + (int)pbVar37) <= pstr->len) {\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }\n    }" else (compound_statement "{\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);\n      if ((int)(idx + (int)pbVar37) <= pstr->len) {\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }\n    }" { (if_statement "if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xf0)" ( (binary_expression "bVar1 < 0xf0" identifier < number_literal) )) (compound_statement "{\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x3;\n      }" { (if_statement "if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (bin_tree_t *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xe0) && (bVar2 < 0xa0))" ( (binary_expression "(bVar1 == 0xe0) && (bVar2 < 0xa0)" (parenthesized_expression "(bVar1 == 0xe0)" ( (binary_expression "bVar1 == 0xe0" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0xa0)" ( (binary_expression "bVar2 < 0xa0" identifier < number_literal) ))) )) (compound_statement "{\n          return (bin_tree_t *)0x0;\n        }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pbVar37 = (bin_tree_t *)0x3;" (assignment_expression "pbVar37 = (bin_tree_t *)0x3" identifier = (cast_expression "(bin_tree_t *)0x3" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }" else (if_statement "if (bVar1 < 0xf8) {\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xf8)" ( (binary_expression "bVar1 < 0xf8" identifier < number_literal) )) (compound_statement "{\n        pbVar37 = (bin_tree_t *)0x4;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }\n      }" { (expression_statement "pbVar37 = (bin_tree_t *)0x4;" (assignment_expression "pbVar37 = (bin_tree_t *)0x4" identifier = (cast_expression "(bin_tree_t *)0x4" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (bin_tree_t *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xf0) && (bVar2 < 0x90))" ( (binary_expression "(bVar1 == 0xf0) && (bVar2 < 0x90)" (parenthesized_expression "(bVar1 == 0xf0)" ( (binary_expression "bVar1 == 0xf0" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x90)" ( (binary_expression "bVar2 < 0x90" identifier < number_literal) ))) )) (compound_statement "{\n          return (bin_tree_t *)0x0;\n        }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }" else (if_statement "if (bVar1 < 0xfc) {\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xfc)" ( (binary_expression "bVar1 < 0xfc" identifier < number_literal) )) (compound_statement "{\n        pbVar37 = (bin_tree_t *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }\n      }" { (expression_statement "pbVar37 = (bin_tree_t *)0x5;" (assignment_expression "pbVar37 = (bin_tree_t *)0x5" identifier = (cast_expression "(bin_tree_t *)0x5" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (bin_tree_t *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xf8) && (bVar2 < 0x88))" ( (binary_expression "(bVar1 == 0xf8) && (bVar2 < 0x88)" (parenthesized_expression "(bVar1 == 0xf8)" ( (binary_expression "bVar1 == 0xf8" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x88)" ( (binary_expression "bVar2 < 0x88" identifier < number_literal) ))) )) (compound_statement "{\n          return (bin_tree_t *)0x0;\n        }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }" else (compound_statement "{\n        if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }\n        pbVar37 = (bin_tree_t *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }\n      }" { (if_statement "if (0xfd < bVar1) {\n          return (bin_tree_t *)0x0;\n        }" if (parenthesized_expression "(0xfd < bVar1)" ( (binary_expression "0xfd < bVar1" number_literal < identifier) )) (compound_statement "{\n          return (bin_tree_t *)0x0;\n        }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pbVar37 = (bin_tree_t *)0x6;" (assignment_expression "pbVar37 = (bin_tree_t *)0x6" identifier = (cast_expression "(bin_tree_t *)0x6" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (bin_tree_t *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xfc) && (bVar2 < 0x84))" ( (binary_expression "(bVar1 == 0xfc) && (bVar2 < 0x84)" (parenthesized_expression "(bVar1 == 0xfc)" ( (binary_expression "bVar1 == 0xfc" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x84)" ( (binary_expression "bVar2 < 0x84" identifier < number_literal) ))) )) (compound_statement "{\n          return (bin_tree_t *)0x0;\n        }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))))))) (expression_statement "pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91);" (assignment_expression "pbVar18 = pstr->mbs + (int)(puVar43 + 0x3eb91)" identifier = (binary_expression "pstr->mbs + (int)(puVar43 + 0x3eb91)" (field_expression "pstr->mbs" identifier -> field_identifier) + (cast_expression "(int)(puVar43 + 0x3eb91)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar43 + 0x3eb91)" ( (binary_expression "puVar43 + 0x3eb91" identifier + number_literal) ))))) ;) (if_statement "if ((int)(idx + (int)pbVar37) <= pstr->len) {\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }" if (parenthesized_expression "((int)(idx + (int)pbVar37) <= pstr->len)" ( (binary_expression "(int)(idx + (int)pbVar37) <= pstr->len" (cast_expression "(int)(idx + (int)pbVar37)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(idx + (int)pbVar37)" ( (binary_expression "idx + (int)pbVar37" identifier + (cast_expression "(int)pbVar37" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (field_expression "pstr->len" identifier -> field_identifier)) )) (compound_statement "{\n        do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);\n        return pbVar37;\n      }" { (do_statement "do {\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        } while (pbVar9 + (int)pbVar37 != pbVar18);" do (compound_statement "{\n          bVar1 = *pbVar18;\n          pbVar18 = pbVar18 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }\n        }" { (expression_statement "bVar1 = *pbVar18;" (assignment_expression "bVar1 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (if_statement "if (0x3f < (bVar1 ^ 0x80)) {\n            return (bin_tree_t *)0x0;\n          }" if (parenthesized_expression "(0x3f < (bVar1 ^ 0x80))" ( (binary_expression "0x3f < (bVar1 ^ 0x80)" number_literal < (parenthesized_expression "(bVar1 ^ 0x80)" ( (binary_expression "bVar1 ^ 0x80" identifier ^ number_literal) ))) )) (compound_statement "{\n            return (bin_tree_t *)0x0;\n          }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) while (parenthesized_expression "(pbVar9 + (int)pbVar37 != pbVar18)" ( (binary_expression "pbVar9 + (int)pbVar37 != pbVar18" (binary_expression "pbVar9 + (int)pbVar37" identifier + (cast_expression "(int)pbVar37" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) (return_statement "return pbVar37;" return identifier ;) })) }))) }) (else_clause "else if (pstr->mb_cur_max != 1) {\n    pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx);\n    if (uVar26 == 5) {\n      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }\n    }\n    else if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }\n  }" else (if_statement "if (pstr->mb_cur_max != 1) {\n    pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx);\n    if (uVar26 == 5) {\n      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }\n    }\n    else if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }\n  }" if (parenthesized_expression "(pstr->mb_cur_max != 1)" ( (binary_expression "pstr->mb_cur_max != 1" (field_expression "pstr->mb_cur_max" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx);\n    if (uVar26 == 5) {\n      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }\n    }\n    else if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }\n  }" { (expression_statement "pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx);" (assignment_expression "pbVar37 = (bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx)" identifier = (cast_expression "(bin_tree_t *)re_string_char_size_at(pstr,(Idx)idx)" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "re_string_char_size_at(pstr,(Idx)idx)" identifier (argument_list "(pstr,(Idx)idx)" ( identifier , (cast_expression "(Idx)idx" ( (type_descriptor "Idx" type_identifier) ) identifier) ))))) ;) (if_statement "if (uVar26 == 5) {\n      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }\n    }\n    else if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }" if (parenthesized_expression "(uVar26 == 5)" ( (binary_expression "uVar26 == 5" identifier == number_literal) )) (compound_statement "{\n      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }\n    }" { (if_statement "if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))) {\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }" if (parenthesized_expression "((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n'))))" ( (binary_expression "(1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))" (parenthesized_expression "(1 < (int)pbVar37)" ( (binary_expression "1 < (int)pbVar37" number_literal < (cast_expression "(int)pbVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')))" ( (parenthesized_expression "((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n'))" ( (binary_expression "(*puVar27 & 0x40) != 0 || (pstr->mbs[(int)idx] != '\n')" (binary_expression "(*puVar27 & 0x40) != 0" (parenthesized_expression "(*puVar27 & 0x40)" ( (binary_expression "*puVar27 & 0x40" (pointer_expression "*puVar27" * identifier) & number_literal) )) != number_literal) || (parenthesized_expression "(pstr->mbs[(int)idx] != '\n')" ( (binary_expression "pstr->mbs[(int)idx] != '\n'" (subscript_expression "pstr->mbs[(int)idx]" (field_expression "pstr->mbs" identifier -> field_identifier) [ (cast_expression "(int)idx" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\n'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n        if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }\n        if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }\n      }" { (if_statement "if ((*puVar27 & 0x80) == 0) {\n          return pbVar37;\n        }" if (parenthesized_expression "((*puVar27 & 0x80) == 0)" ( (binary_expression "(*puVar27 & 0x80) == 0" (parenthesized_expression "(*puVar27 & 0x80)" ( (binary_expression "*puVar27 & 0x80" (pointer_expression "*puVar27" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          return pbVar37;\n        }" { (return_statement "return pbVar37;" return identifier ;) })) (if_statement "if (pstr->mbs[(int)idx] != '\0') {\n          return pbVar37;\n        }" if (parenthesized_expression "(pstr->mbs[(int)idx] != '\0')" ( (binary_expression "pstr->mbs[(int)idx] != '\0'" (subscript_expression "pstr->mbs[(int)idx]" (field_expression "pstr->mbs" identifier -> field_identifier) [ (cast_expression "(int)idx" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return pbVar37;\n        }" { (return_statement "return pbVar37;" return identifier ;) })) })) }) (else_clause "else if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }" else (if_statement "if ((1 < (int)pbVar37) && (uVar26 == 6)) {\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }" if (parenthesized_expression "((1 < (int)pbVar37) && (uVar26 == 6))" ( (binary_expression "(1 < (int)pbVar37) && (uVar26 == 6)" (parenthesized_expression "(1 < (int)pbVar37)" ( (binary_expression "1 < (int)pbVar37" number_literal < (cast_expression "(int)pbVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar26 == 6)" ( (binary_expression "uVar26 == 6" identifier == number_literal) ))) )) (compound_statement "{\n      pbVar36 = *ppbVar31;\n      pbVar29 = pbVar36[1].parent;\n      iVar32 = (pbVar36->token).opr.idx;\n      if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }\n      pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];\n      if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }\nLAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }\n      return pbVar37;\n    }" { (expression_statement "pbVar36 = *ppbVar31;" (assignment_expression "pbVar36 = *ppbVar31" identifier = (pointer_expression "*ppbVar31" * identifier)) ;) (expression_statement "pbVar29 = pbVar36[1].parent;" (assignment_expression "pbVar29 = pbVar36[1].parent" identifier = (field_expression "pbVar36[1].parent" (subscript_expression "pbVar36[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar32 = (pbVar36->token).opr.idx;" (assignment_expression "iVar32 = (pbVar36->token).opr.idx" identifier = (field_expression "(pbVar36->token).opr.idx" (field_expression "(pbVar36->token).opr" (parenthesized_expression "(pbVar36->token)" ( (field_expression "pbVar36->token" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)) {\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }" if (parenthesized_expression "((pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0))" ( (binary_expression "(pbVar29 == (bin_tree_t *)0x0) && (iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)" (parenthesized_expression "(pbVar29 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar29 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0)" ( (binary_expression "iVar32 == 0 && pbVar36[1].left == (bin_tree_t *)0x0" (binary_expression "iVar32 == 0" identifier == number_literal) && (binary_expression "pbVar36[1].left == (bin_tree_t *)0x0" (field_expression "pbVar36[1].left" (subscript_expression "pbVar36[1]" identifier [ number_literal ]) . field_identifier) == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }\n        return pbVar37;\n      }" { (labeled_statement "LAB_00079104:\n        if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }" statement_identifier : (if_statement "if (-1 < *(char *)&pbVar36->next) {\n          return (bin_tree_t *)0x0;\n        }" if (parenthesized_expression "(-1 < *(char *)&pbVar36->next)" ( (binary_expression "-1 < *(char *)&pbVar36->next" number_literal < (pointer_expression "*(char *)&pbVar36->next" * (cast_expression "(char *)&pbVar36->next" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pbVar36->next" & (field_expression "pbVar36->next" identifier -> field_identifier))))) )) (compound_statement "{\n          return (bin_tree_t *)0x0;\n        }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return pbVar37;" return identifier ;) })) (expression_statement "pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx];" (assignment_expression "pbVar35 = (bin_tree_t *)pstr->wcs[(int)idx]" identifier = (cast_expression "(bin_tree_t *)pstr->wcs[(int)idx]" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pstr->wcs[(int)idx]" (field_expression "pstr->wcs" identifier -> field_identifier) [ (cast_expression "(int)idx" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;) (if_statement "if (iVar32 < 1) {\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }\n      else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }" if (parenthesized_expression "(iVar32 < 1)" ( (binary_expression "iVar32 < 1" identifier < number_literal) )) (compound_statement "{\nLAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }\n        pbVar29 = pbVar36->first;\n        iVar32 = 0;\n        while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }\n      }" { (labeled_statement "LAB_00078fc4:\n        if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }" statement_identifier : (if_statement "if ((int)pbVar36[1].left < 1) {\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }" if (parenthesized_expression "((int)pbVar36[1].left < 1)" ( (binary_expression "(int)pbVar36[1].left < 1" (cast_expression "(int)pbVar36[1].left" ( (type_descriptor "int" primitive_type) ) (field_expression "pbVar36[1].left" (subscript_expression "pbVar36[1]" identifier [ number_literal ]) . field_identifier)) < number_literal) )) (compound_statement "{\nLAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }\n          goto LAB_00079104;\n        }" { (labeled_statement "LAB_000790c0:\n          if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }" statement_identifier : (if_statement "if (0 < (int)pbVar29) {\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }" if (parenthesized_expression "(0 < (int)pbVar29)" ( (binary_expression "0 < (int)pbVar29" number_literal < (cast_expression "(int)pbVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            pbVar24 = pbVar36->left;\n            pbVar17 = (bin_tree_t *)0x0;\n            do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);\n          }" { (expression_statement "pbVar24 = pbVar36->left;" (assignment_expression "pbVar24 = pbVar36->left" identifier = (field_expression "pbVar36->left" identifier -> field_identifier)) ;) (expression_statement "pbVar17 = (bin_tree_t *)0x0;" (assignment_expression "pbVar17 = (bin_tree_t *)0x0" identifier = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            } while (pbVar19 != pbVar29);" do (compound_statement "{\n              ppbVar31 = &pbVar24->parent;\n              pbVar24 = (bin_tree_t *)&pbVar24->left;\n              pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);\n              if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;\n              pbVar17 = pbVar19;\n            }" { (expression_statement "ppbVar31 = &pbVar24->parent;" (assignment_expression "ppbVar31 = &pbVar24->parent" identifier = (pointer_expression "&pbVar24->parent" & (field_expression "pbVar24->parent" identifier -> field_identifier))) ;) (expression_statement "pbVar24 = (bin_tree_t *)&pbVar24->left;" (assignment_expression "pbVar24 = (bin_tree_t *)&pbVar24->left" identifier = (cast_expression "(bin_tree_t *)&pbVar24->left" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pbVar24->left" & (field_expression "pbVar24->left" identifier -> field_identifier)))) ;) (expression_statement "pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1);" (assignment_expression "pbVar19 = (bin_tree_t *)((int)&pbVar17->parent + 1)" identifier = (cast_expression "(bin_tree_t *)((int)&pbVar17->parent + 1)" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pbVar17->parent + 1)" ( (binary_expression "(int)&pbVar17->parent + 1" (cast_expression "(int)&pbVar17->parent" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pbVar17->parent" & (field_expression "pbVar17->parent" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;" if (parenthesized_expression "(((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17]))" ( (binary_expression "((int)*ppbVar31 <= (int)pbVar35) &&\n                 ((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])" (parenthesized_expression "((int)*ppbVar31 <= (int)pbVar35)" ( (binary_expression "(int)*ppbVar31 <= (int)pbVar35" (cast_expression "(int)*ppbVar31" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppbVar31" * identifier)) <= (cast_expression "(int)pbVar35" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17])" ( (binary_expression "(int)pbVar35 <= (int)(&pbVar36->right->parent)[(int)pbVar17]" (cast_expression "(int)pbVar35" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)(&pbVar36->right->parent)[(int)pbVar17]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "(&pbVar36->right->parent)[(int)pbVar17]" (parenthesized_expression "(&pbVar36->right->parent)" ( (pointer_expression "&pbVar36->right->parent" & (field_expression "pbVar36->right->parent" (field_expression "pbVar36->right" identifier -> field_identifier) -> field_identifier)) )) [ (cast_expression "(int)pbVar17" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ))) )) (goto_statement "goto LAB_00079010;" goto statement_identifier ;)) (expression_statement "pbVar17 = pbVar19;" (assignment_expression "pbVar17 = pbVar19" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar19 != pbVar29)" ( (binary_expression "pbVar19 != pbVar29" identifier != identifier) )) ;) }))) (goto_statement "goto LAB_00079104;" goto statement_identifier ;) }))) (expression_statement "pbVar29 = pbVar36->first;" (assignment_expression "pbVar29 = pbVar36->first" identifier = (field_expression "pbVar36->first" identifier -> field_identifier)) ;) (expression_statement "iVar32 = 0;" (assignment_expression "iVar32 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);\n          if (iVar22 != 0) break;\n          if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }\n          pbVar29 = pbVar36->first;\n          iVar32 = iVar32 + 1;\n        }" { (expression_statement "iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32]);" (assignment_expression "iVar22 = (**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32])" identifier = (call_expression "(**(code **)(pcVar44 + 0x36d08))(pbVar35,(&pbVar29->parent)[iVar32])" (parenthesized_expression "(**(code **)(pcVar44 + 0x36d08))" ( (pointer_expression "**(code **)(pcVar44 + 0x36d08)" * (pointer_expression "*(code **)(pcVar44 + 0x36d08)" * (cast_expression "(code **)(pcVar44 + 0x36d08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar44 + 0x36d08)" ( (binary_expression "pcVar44 + 0x36d08" identifier + number_literal) ))))) )) (argument_list "(pbVar35,(&pbVar29->parent)[iVar32])" ( identifier , (subscript_expression "(&pbVar29->parent)[iVar32]" (parenthesized_expression "(&pbVar29->parent)" ( (pointer_expression "&pbVar29->parent" & (field_expression "pbVar29->parent" identifier -> field_identifier)) )) [ identifier ]) )))) ;) (if_statement "if (iVar22 != 0) break;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if ((int)pbVar36[1].left <= iVar32 + 1) {\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }" if (parenthesized_expression "((int)pbVar36[1].left <= iVar32 + 1)" ( (binary_expression "(int)pbVar36[1].left <= iVar32 + 1" (cast_expression "(int)pbVar36[1].left" ( (type_descriptor "int" primitive_type) ) (field_expression "pbVar36[1].left" (subscript_expression "pbVar36[1]" identifier [ number_literal ]) . field_identifier)) <= (binary_expression "iVar32 + 1" identifier + number_literal)) )) (compound_statement "{\n            pbVar29 = pbVar36[1].parent;\n            goto LAB_000790c0;\n          }" { (expression_statement "pbVar29 = pbVar36[1].parent;" (assignment_expression "pbVar29 = pbVar36[1].parent" identifier = (field_expression "pbVar36[1].parent" (subscript_expression "pbVar36[1]" identifier [ number_literal ]) . field_identifier)) ;) (goto_statement "goto LAB_000790c0;" goto statement_identifier ;) })) (expression_statement "pbVar29 = pbVar36->first;" (assignment_expression "pbVar29 = pbVar36->first" identifier = (field_expression "pbVar36->first" identifier -> field_identifier)) ;) (expression_statement "iVar32 = iVar32 + 1;" (assignment_expression "iVar32 = iVar32 + 1" identifier = (binary_expression "iVar32 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }" else (compound_statement "{\n        pbVar17 = pbVar36->parent;\n        if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }\n      }" { (expression_statement "pbVar17 = pbVar36->parent;" (assignment_expression "pbVar17 = pbVar36->parent" identifier = (field_expression "pbVar36->parent" identifier -> field_identifier)) ;) (if_statement "if (pbVar17->parent != pbVar35) {\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }" if (parenthesized_expression "(pbVar17->parent != pbVar35)" ( (binary_expression "pbVar17->parent != pbVar35" (field_expression "pbVar17->parent" identifier -> field_identifier) != identifier) )) (compound_statement "{\n          iVar22 = 0;\n          do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);\n        }" { (expression_statement "iVar22 = 0;" (assignment_expression "iVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          } while (pbVar35 != *(bin_tree_t **)pbVar17);" do (compound_statement "{\n            pbVar17 = (bin_tree_t *)&pbVar17->left;\n            iVar22 = iVar22 + 1;\n            if (iVar22 == iVar32) goto LAB_00078fc4;\n          }" { (expression_statement "pbVar17 = (bin_tree_t *)&pbVar17->left;" (assignment_expression "pbVar17 = (bin_tree_t *)&pbVar17->left" identifier = (cast_expression "(bin_tree_t *)&pbVar17->left" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pbVar17->left" & (field_expression "pbVar17->left" identifier -> field_identifier)))) ;) (expression_statement "iVar22 = iVar22 + 1;" (assignment_expression "iVar22 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) (if_statement "if (iVar22 == iVar32) goto LAB_00078fc4;" if (parenthesized_expression "(iVar22 == iVar32)" ( (binary_expression "iVar22 == iVar32" identifier == identifier) )) (goto_statement "goto LAB_00078fc4;" goto statement_identifier ;)) }) while (parenthesized_expression "(pbVar35 != *(bin_tree_t **)pbVar17)" ( (binary_expression "pbVar35 != *(bin_tree_t **)pbVar17" identifier != (pointer_expression "*(bin_tree_t **)pbVar17" * (cast_expression "(bin_tree_t **)pbVar17" ( (type_descriptor "bin_tree_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) ;) })) }))) (labeled_statement "LAB_00079010:\n      if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }" statement_identifier : (if_statement "if (*(char *)&pbVar36->next < '\0') {\n        return (bin_tree_t *)0x0;\n      }" if (parenthesized_expression "(*(char *)&pbVar36->next < '\0')" ( (binary_expression "*(char *)&pbVar36->next < '\0'" (pointer_expression "*(char *)&pbVar36->next" * (cast_expression "(char *)&pbVar36->next" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pbVar36->next" & (field_expression "pbVar36->next" identifier -> field_identifier)))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return (bin_tree_t *)0x0;\n      }" { (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return pbVar37;" return identifier ;) })))) })))) (return_statement "return (bin_tree_t *)0x0;" return (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "uint * FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  byte *pbVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  char cVar13;\n  byte *pbVar12;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  undefined4 *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint *puVar23;\n  uint *puVar24;\n  uint *puVar25;\n  uint *puVar26;\n  uint *puVar27;\n  int *piVar28;\n  undefined *puVar29;\n  int iVar30;\n  uint uVar31;\n  uint *unaff_s5;\n  uint *unaff_s6;\n  byte *pbVar32;\n  undefined *puVar33;\n  undefined *puVar34;\n  code *pcVar35;\n  uint *puStack_1c8;\n  uint auStack_1a8 [3];\n  undefined4 uStack_19c;\n  uint *puStack_9c;\n  int iStack_98;\n  undefined *puStack_94;\n  undefined *puStack_90;\n  int *piStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  uint *puStack_78;\n  code *pcStack_74;\n  uint **local_60;\n  uint *local_5c;\n  undefined4 local_58;\n  uint *local_40;\n  uint *local_3c;\n  undefined1 local_38;\n  uint *puStack_34;\n  undefined1 local_30;\n  undefined4 *local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  puVar19 = (uint *)&DAT_00000001;\n  local_40 = (uint *)0x0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar29 = (undefined *)(uint)param_5;\n  puVar17 = param_3;\n  puVar25 = param_4;\n  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }\n  pcVar35 = FUN_000788a0;\n  puVar18 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puVar34 = puVar33 + 0x3eb90;\n  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);\n  puStack_94 = puVar3;\n  piVar28 = (int *)*puVar18;\n  puStack_9c = (uint *)*puVar14;\n  piStack_8c = param_6;\n  if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }\n  puVar21 = (uint *)*puVar19;\n  iVar5 = 0;\n  puVar26 = puStack_9c;\n  puVar23 = puVar17;\n  puVar24 = puVar17;\n  puVar27 = puVar25;\n  iStack_98 = param_1;\n  puStack_90 = puVar29;\n  puStack_88 = param_4;\n  puStack_84 = puVar4;\n  puStack_80 = unaff_s6;\n  puStack_7c = param_2;\n  puStack_78 = puVar7;\n  pcStack_74 = pcVar35;\n  if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }\nLAB_00078a1c:\n  puVar23 = puVar24;\n  if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }\nLAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);\n  (*pcVar35)();\n  puVar26 = puVar26 + (int)puVar23 * 2;\n  uVar20 = (uint)*(byte *)(puVar26 + 1);\n  if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }\n  return (uint *)0x0;\n}\n\n" (function_definition "uint * FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  byte *pbVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  char cVar13;\n  byte *pbVar12;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  undefined4 *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint *puVar23;\n  uint *puVar24;\n  uint *puVar25;\n  uint *puVar26;\n  uint *puVar27;\n  int *piVar28;\n  undefined *puVar29;\n  int iVar30;\n  uint uVar31;\n  uint *unaff_s5;\n  uint *unaff_s6;\n  byte *pbVar32;\n  undefined *puVar33;\n  undefined *puVar34;\n  code *pcVar35;\n  uint *puStack_1c8;\n  uint auStack_1a8 [3];\n  undefined4 uStack_19c;\n  uint *puStack_9c;\n  int iStack_98;\n  undefined *puStack_94;\n  undefined *puStack_90;\n  int *piStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  uint *puStack_78;\n  code *pcStack_74;\n  uint **local_60;\n  uint *local_5c;\n  undefined4 local_58;\n  uint *local_40;\n  uint *local_3c;\n  undefined1 local_38;\n  uint *puStack_34;\n  undefined1 local_30;\n  undefined4 *local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  puVar19 = (uint *)&DAT_00000001;\n  local_40 = (uint *)0x0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar29 = (undefined *)(uint)param_5;\n  puVar17 = param_3;\n  puVar25 = param_4;\n  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }\n  pcVar35 = FUN_000788a0;\n  puVar18 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puVar34 = puVar33 + 0x3eb90;\n  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);\n  puStack_94 = puVar3;\n  piVar28 = (int *)*puVar18;\n  puStack_9c = (uint *)*puVar14;\n  piStack_8c = param_6;\n  if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }\n  puVar21 = (uint *)*puVar19;\n  iVar5 = 0;\n  puVar26 = puStack_9c;\n  puVar23 = puVar17;\n  puVar24 = puVar17;\n  puVar27 = puVar25;\n  iStack_98 = param_1;\n  puStack_90 = puVar29;\n  puStack_88 = param_4;\n  puStack_84 = puVar4;\n  puStack_80 = unaff_s6;\n  puStack_7c = param_2;\n  puStack_78 = puVar7;\n  pcStack_74 = pcVar35;\n  if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }\nLAB_00078a1c:\n  puVar23 = puVar24;\n  if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }\nLAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);\n  (*pcVar35)();\n  puVar26 = puVar26 + (int)puVar23 * 2;\n  uVar20 = (uint)*(byte *)(puVar26 + 1);\n  if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }\n  return (uint *)0x0;\n}" type_identifier (pointer_declarator "* FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)" * (function_declarator "FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)" identifier (parameter_list "(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "byte param_5" type_identifier identifier) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  byte *pbVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  char cVar13;\n  byte *pbVar12;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  undefined4 *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint *puVar23;\n  uint *puVar24;\n  uint *puVar25;\n  uint *puVar26;\n  uint *puVar27;\n  int *piVar28;\n  undefined *puVar29;\n  int iVar30;\n  uint uVar31;\n  uint *unaff_s5;\n  uint *unaff_s6;\n  byte *pbVar32;\n  undefined *puVar33;\n  undefined *puVar34;\n  code *pcVar35;\n  uint *puStack_1c8;\n  uint auStack_1a8 [3];\n  undefined4 uStack_19c;\n  uint *puStack_9c;\n  int iStack_98;\n  undefined *puStack_94;\n  undefined *puStack_90;\n  int *piStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  uint *puStack_78;\n  code *pcStack_74;\n  uint **local_60;\n  uint *local_5c;\n  undefined4 local_58;\n  uint *local_40;\n  uint *local_3c;\n  undefined1 local_38;\n  uint *puStack_34;\n  undefined1 local_30;\n  undefined4 *local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  puVar19 = (uint *)&DAT_00000001;\n  local_40 = (uint *)0x0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar29 = (undefined *)(uint)param_5;\n  puVar17 = param_3;\n  puVar25 = param_4;\n  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }\n  pcVar35 = FUN_000788a0;\n  puVar18 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puVar34 = puVar33 + 0x3eb90;\n  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);\n  puStack_94 = puVar3;\n  piVar28 = (int *)*puVar18;\n  puStack_9c = (uint *)*puVar14;\n  piStack_8c = param_6;\n  if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }\n  puVar21 = (uint *)*puVar19;\n  iVar5 = 0;\n  puVar26 = puStack_9c;\n  puVar23 = puVar17;\n  puVar24 = puVar17;\n  puVar27 = puVar25;\n  iStack_98 = param_1;\n  puStack_90 = puVar29;\n  puStack_88 = param_4;\n  puStack_84 = puVar4;\n  puStack_80 = unaff_s6;\n  puStack_7c = param_2;\n  puStack_78 = puVar7;\n  pcStack_74 = pcVar35;\n  if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }\nLAB_00078a1c:\n  puVar23 = puVar24;\n  if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }\nLAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);\n  (*pcVar35)();\n  puVar26 = puVar26 + (int)puVar23 * 2;\n  uVar20 = (uint)*(byte *)(puVar26 + 1);\n  if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }\n  return (uint *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "char cVar13;" primitive_type identifier ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "uint *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "uint *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "uint *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "byte *pbVar32;" type_identifier (pointer_declarator "*pbVar32" * identifier) ;) (declaration "undefined *puVar33;" type_identifier (pointer_declarator "*puVar33" * identifier) ;) (declaration "undefined *puVar34;" type_identifier (pointer_declarator "*puVar34" * identifier) ;) (declaration "code *pcVar35;" type_identifier (pointer_declarator "*pcVar35" * identifier) ;) (declaration "uint *puStack_1c8;" type_identifier (pointer_declarator "*puStack_1c8" * identifier) ;) (declaration "uint auStack_1a8 [3];" type_identifier (array_declarator "auStack_1a8 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_19c;" type_identifier identifier ;) (declaration "uint *puStack_9c;" type_identifier (pointer_declarator "*puStack_9c" * identifier) ;) (declaration "int iStack_98;" primitive_type identifier ;) (declaration "undefined *puStack_94;" type_identifier (pointer_declarator "*puStack_94" * identifier) ;) (declaration "undefined *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "int *piStack_8c;" primitive_type (pointer_declarator "*piStack_8c" * identifier) ;) (declaration "uint *puStack_88;" type_identifier (pointer_declarator "*puStack_88" * identifier) ;) (declaration "uint *puStack_84;" type_identifier (pointer_declarator "*puStack_84" * identifier) ;) (declaration "uint *puStack_80;" type_identifier (pointer_declarator "*puStack_80" * identifier) ;) (declaration "uint *puStack_7c;" type_identifier (pointer_declarator "*puStack_7c" * identifier) ;) (declaration "uint *puStack_78;" type_identifier (pointer_declarator "*puStack_78" * identifier) ;) (declaration "code *pcStack_74;" type_identifier (pointer_declarator "*pcStack_74" * identifier) ;) (declaration "uint **local_60;" type_identifier (pointer_declarator "**local_60" * (pointer_declarator "*local_60" * identifier)) ;) (declaration "uint *local_5c;" type_identifier (pointer_declarator "*local_5c" * identifier) ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "uint *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "uint *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "undefined1 local_38;" type_identifier identifier ;) (declaration "uint *puStack_34;" type_identifier (pointer_declarator "*puStack_34" * identifier) ;) (declaration "undefined1 local_30;" type_identifier identifier ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar3 = PTR___stack_chk_guard_000afc3c;" (assignment_expression "puVar3 = PTR___stack_chk_guard_000afc3c" identifier = identifier) ;) (expression_statement "puVar19 = (uint *)&DAT_00000001;" (assignment_expression "puVar19 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "local_40 = (uint *)0x0;" (assignment_expression "local_40 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;" (assignment_expression "local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_000afc3c" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_000afc3c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar29 = (undefined *)(uint)param_5;" (assignment_expression "puVar29 = (undefined *)(uint)param_5" identifier = (cast_expression "(undefined *)(uint)param_5" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "puVar17 = param_3;" (assignment_expression "puVar17 = param_3" identifier = identifier) ;) (expression_statement "puVar25 = param_4;" (assignment_expression "puVar25 = param_4" identifier = identifier) ;) (expression_statement "puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);" (assignment_expression "puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20)" identifier = (cast_expression "(uint *)(*(code *)PTR_calloc_000afdb8)(0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_calloc_000afdb8)(0x20)" (parenthesized_expression "(*(code *)PTR_calloc_000afdb8)" ( (pointer_expression "*(code *)PTR_calloc_000afdb8" * (cast_expression "(code *)PTR_calloc_000afdb8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x20)" ( number_literal ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }" { (labeled_statement "LAB_00078814:\n    puVar4 = unaff_s5;" statement_identifier : (expression_statement "puVar4 = unaff_s5;" (assignment_expression "puVar4 = unaff_s5" identifier = identifier) ;)) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*param_6 = 0xc;" (assignment_expression "*param_6 = 0xc" (pointer_expression "*param_6" * identifier) = number_literal) ;) }) (else_clause "else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }" else (compound_statement "{\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }" { (expression_statement "puVar19 = (uint *)&DAT_00000001;" (assignment_expression "puVar19 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);" (assignment_expression "unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28)" identifier = (cast_expression "(uint *)(*(code *)PTR_calloc_000afdb8)(0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_calloc_000afdb8)(0x28)" (parenthesized_expression "(*(code *)PTR_calloc_000afdb8)" ( (pointer_expression "*(code *)PTR_calloc_000afdb8" * (cast_expression "(code *)PTR_calloc_000afdb8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x28)" ( number_literal ))))) ;) (if_statement "if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }" if (parenthesized_expression "(unaff_s6 == (uint *)0x0)" ( (binary_expression "unaff_s6 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }" { (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR_free_000afd08)(puVar4);" (call_expression "(*(code *)PTR_free_000afd08)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "*param_6 = 0xc;" (assignment_expression "*param_6 = 0xc" (pointer_expression "*param_6" * identifier) = number_literal) ;) }) (else_clause "else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }" else (compound_statement "{\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }" { (expression_statement "local_60 = &local_40;" (assignment_expression "local_60 = &local_40" identifier = (pointer_expression "&local_40" & identifier)) ;) (expression_statement "puVar25 = unaff_s6 + 9;" (assignment_expression "puVar25 = unaff_s6 + 9" identifier = (binary_expression "unaff_s6 + 9" identifier + number_literal)) ;) (expression_statement "puVar17 = unaff_s6 + 3;" (assignment_expression "puVar17 = unaff_s6 + 3" identifier = (binary_expression "unaff_s6 + 3" identifier + number_literal)) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "*(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);" (assignment_expression "*(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7)" (pointer_expression "*(byte *)(unaff_s6 + 4)" * (cast_expression "(byte *)(unaff_s6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s6 + 4)" ( (binary_expression "unaff_s6 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7)" (binary_expression "*(byte *)(unaff_s6 + 4) & 0x7f" (pointer_expression "*(byte *)(unaff_s6 + 4)" * (cast_expression "(byte *)(unaff_s6 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s6 + 4)" ( (binary_expression "unaff_s6 + 4" identifier + number_literal) )))) & number_literal) | (call_expression "(byte)(((uint)puVar29 & 1) << 7)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uint)puVar29 & 1) << 7)" ( (binary_expression "((uint)puVar29 & 1) << 7" (parenthesized_expression "((uint)puVar29 & 1)" ( (binary_expression "(uint)puVar29 & 1" (cast_expression "(uint)puVar29" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal) ))))) ;) (expression_statement "puVar19 = puVar4;" (assignment_expression "puVar19 = puVar4" identifier = identifier) ;) (expression_statement "local_5c = param_3;" (assignment_expression "local_5c = param_3" identifier = identifier) ;) (expression_statement "iVar5 = FUN_00077b04(param_2);" (assignment_expression "iVar5 = FUN_00077b04(param_2)" identifier = (call_expression "FUN_00077b04(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }" { (expression_statement "cVar13 = *(char *)param_4;" (assignment_expression "cVar13 = *(char *)param_4" identifier = (pointer_expression "*(char *)param_4" * (cast_expression "(char *)param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (while_statement "while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }" while (parenthesized_expression "(uVar20 = (uint)cVar13, uVar20 != 0)" ( (comma_expression "uVar20 = (uint)cVar13, uVar20 != 0" (assignment_expression "uVar20 = (uint)cVar13" identifier = (cast_expression "(uint)cVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) , (binary_expression "uVar20 != 0" identifier != number_literal)) )) (compound_statement "{\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }" { (expression_statement "uVar6 = uVar20;" (assignment_expression "uVar6 = uVar20" identifier = identifier) ;) (if_statement "if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }" if (parenthesized_expression "((int)uVar20 < 0)" ( (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n            uVar6 = uVar20 + 0x1f;\n          }" { (expression_statement "uVar6 = uVar20 + 0x1f;" (assignment_expression "uVar6 = uVar20 + 0x1f" identifier = (binary_expression "uVar20 + 0x1f" identifier + number_literal)) ;) })) (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) )))) ;) (expression_statement "cVar13 = *(char *)param_4;" (assignment_expression "cVar13 = *(char *)param_4" identifier = (pointer_expression "*(char *)param_4" * (cast_expression "(char *)param_4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);" (assignment_expression "puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f)" (subscript_expression "puVar4[(int)uVar6 >> 5]" identifier [ (binary_expression "(int)uVar6 >> 5" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) = (binary_expression "puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f)" (subscript_expression "puVar4[(int)uVar6 >> 5]" identifier [ (binary_expression "(int)uVar6 >> 5" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) | (binary_expression "1 << (uVar20 & 0x1f)" number_literal << (parenthesized_expression "(uVar20 & 0x1f)" ( (binary_expression "uVar20 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "puVar19 = puVar4;" (assignment_expression "puVar19 = puVar4" identifier = identifier) ;) (if_statement "if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }" if (parenthesized_expression "(puVar29 != (undefined *)0x0)" ( (binary_expression "puVar29 != (undefined *)0x0" identifier != (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }" { (do_statement "do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);" do (compound_statement "{\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          }" { (expression_statement "puVar17 = puVar19 + 1;" (assignment_expression "puVar17 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = ~*puVar19;" (assignment_expression "*puVar19 = ~*puVar19" (pointer_expression "*puVar19" * identifier) = (unary_expression "~*puVar19" ~ (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar19 = puVar17;" (assignment_expression "puVar19 = puVar17" identifier = identifier) ;) }) while (parenthesized_expression "(puVar4 + 8 != puVar17)" ( (binary_expression "puVar4 + 8 != puVar17" (binary_expression "puVar4 + 8" identifier + number_literal) != identifier) )) ;) })) (if_statement "if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }" if (parenthesized_expression "(1 < *(int *)(param_1 + 0x5c))" ( (binary_expression "1 < *(int *)(param_1 + 0x5c)" number_literal < (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) )) (compound_statement "{\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }" { (expression_statement "puVar17 = *(uint **)(param_1 + 0x3c);" (assignment_expression "puVar17 = *(uint **)(param_1 + 0x3c)" identifier = (pointer_expression "*(uint **)(param_1 + 0x3c)" * (cast_expression "(uint **)(param_1 + 0x3c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "puVar19 = puVar4;" (assignment_expression "puVar19 = puVar4" identifier = identifier) ;) (do_statement "do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);" do (compound_statement "{\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          }" { (expression_statement "puVar25 = puVar19 + 1;" (assignment_expression "puVar25 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar20 = *puVar17;" (assignment_expression "uVar20 = *puVar17" identifier = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = *puVar19 & uVar20;" (assignment_expression "*puVar19 = *puVar19 & uVar20" (pointer_expression "*puVar19" * identifier) = (binary_expression "*puVar19 & uVar20" (pointer_expression "*puVar19" * identifier) & identifier)) ;) (expression_statement "puVar19 = puVar25;" (assignment_expression "puVar19 = puVar25" identifier = identifier) ;) }) while (parenthesized_expression "(puVar4 + 8 != puVar25)" ( (binary_expression "puVar4 + 8 != puVar25" (binary_expression "puVar4 + 8" identifier + number_literal) != identifier) )) ;) })) (expression_statement "param_4 = (uint *)(param_1 + 0x38);" (assignment_expression "param_4 = (uint *)(param_1 + 0x38)" identifier = (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (expression_statement "param_2 = (uint *)(param_1 + 0x40);" (assignment_expression "param_2 = (uint *)(param_1 + 0x40)" identifier = (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) ;) (expression_statement "puVar29 = PTR_FUN_000afa20 + 0x411c;" (assignment_expression "puVar29 = PTR_FUN_000afa20 + 0x411c" identifier = (binary_expression "PTR_FUN_000afa20 + 0x411c" identifier + number_literal)) ;) (expression_statement "puVar25 = (uint *)0x0;" (assignment_expression "puVar25 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = (uint *)0x0;" (assignment_expression "puVar17 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_38 = 3;" (assignment_expression "local_38 = 3" identifier = number_literal) ;) (expression_statement "puVar19 = param_2;" (assignment_expression "puVar19 = param_2" identifier = identifier) ;) (expression_statement "local_60 = &local_3c;" (assignment_expression "local_60 = &local_3c" identifier = (pointer_expression "&local_3c" & identifier)) ;) (expression_statement "local_3c = puVar4;" (assignment_expression "local_3c = puVar4" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)FUN_0007411c(param_4);" (assignment_expression "puVar7 = (uint *)FUN_0007411c(param_4)" identifier = (cast_expression "(uint *)FUN_0007411c(param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007411c(param_4)" identifier (argument_list "(param_4)" ( identifier ))))) ;) (expression_statement "puVar26 = puVar25;" (assignment_expression "puVar26 = puVar25" identifier = identifier) ;) (if_statement "if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }" if (parenthesized_expression "(puVar7 == (uint *)0x0)" ( (binary_expression "puVar7 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }" { (labeled_statement "LAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);" statement_identifier : (expression_statement "(*(code *)PTR_free_000afd08)(puVar4);" (call_expression "(*(code *)PTR_free_000afd08)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;)) (expression_statement "FUN_000724e4(unaff_s6);" (call_expression "FUN_000724e4(unaff_s6)" identifier (argument_list "(unaff_s6)" ( identifier ))) ;) (expression_statement "puVar25 = puVar26;" (assignment_expression "puVar25 = puVar26" identifier = identifier) ;) (expression_statement "unaff_s5 = puVar4;" (assignment_expression "unaff_s5 = puVar4" identifier = identifier) ;) (goto_statement "goto LAB_00078814;" goto statement_identifier ;) })) (if_statement "if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x5c) < 2)" ( (binary_expression "*(int *)(param_1 + 0x5c) < 2" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n          FUN_000724e4(unaff_s6);\n        }" { (expression_statement "FUN_000724e4(unaff_s6);" (call_expression "FUN_000724e4(unaff_s6)" identifier (argument_list "(unaff_s6)" ( identifier ))) ;) }) (else_clause "else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }" else (compound_statement "{\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }" { (expression_statement "puVar26 = (uint *)0x0;" (assignment_expression "puVar26 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar17 = (uint *)0x0;" (assignment_expression "puVar17 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;" (assignment_expression "*(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40" (pointer_expression "*(byte *)(param_1 + 0x58)" * (cast_expression "(byte *)(param_1 + 0x58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = (binary_expression "*(byte *)(param_1 + 0x58) & 0xbf | 0x40" (binary_expression "*(byte *)(param_1 + 0x58) & 0xbf" (pointer_expression "*(byte *)(param_1 + 0x58)" * (cast_expression "(byte *)(param_1 + 0x58)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "local_38 = 6;" (assignment_expression "local_38 = 6" identifier = number_literal) ;) (expression_statement "puVar19 = param_2;" (assignment_expression "puVar19 = param_2" identifier = identifier) ;) (expression_statement "local_60 = &local_3c;" (assignment_expression "local_60 = &local_3c" identifier = (pointer_expression "&local_3c" & identifier)) ;) (expression_statement "local_3c = unaff_s6;" (assignment_expression "local_3c = unaff_s6" identifier = identifier) ;) (expression_statement "puVar25 = (uint *)FUN_0007411c(param_4);" (assignment_expression "puVar25 = (uint *)FUN_0007411c(param_4)" identifier = (cast_expression "(uint *)FUN_0007411c(param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007411c(param_4)" identifier (argument_list "(param_4)" ( identifier ))))) ;) (if_statement "if (puVar25 == (uint *)0x0) goto LAB_000787f0;" if (parenthesized_expression "(puVar25 == (uint *)0x0)" ( (binary_expression "puVar25 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000787f0;" goto statement_identifier ;)) (expression_statement "local_60 = &puStack_34;" (assignment_expression "local_60 = &puStack_34" identifier = (pointer_expression "&puStack_34" & identifier)) ;) (expression_statement "local_30 = 10;" (assignment_expression "local_30 = 10" identifier = number_literal) ;) (expression_statement "puVar19 = param_2;" (assignment_expression "puVar19 = param_2" identifier = identifier) ;) (expression_statement "puVar26 = (uint *)FUN_0007411c(param_4);" (assignment_expression "puVar26 = (uint *)FUN_0007411c(param_4)" identifier = (cast_expression "(uint *)FUN_0007411c(param_4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007411c(param_4)" identifier (argument_list "(param_4)" ( identifier ))))) ;) (expression_statement "puVar17 = puVar7;" (assignment_expression "puVar17 = puVar7" identifier = identifier) ;) (expression_statement "puVar7 = puVar26;" (assignment_expression "puVar7 = puVar26" identifier = identifier) ;) }))) }) (else_clause "else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }" else (compound_statement "{\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }" { (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR_free_000afd08)(puVar4);" (call_expression "(*(code *)PTR_free_000afd08)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" ( (pointer_expression "*(code *)PTR_free_000afd08" * (cast_expression "(code *)PTR_free_000afd08" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;) (expression_statement "FUN_000724e4(unaff_s6);" (call_expression "FUN_000724e4(unaff_s6)" identifier (argument_list "(unaff_s6)" ( identifier ))) ;) (expression_statement "*param_6 = iVar5;" (assignment_expression "*param_6 = iVar5" (pointer_expression "*param_6" * identifier) = identifier) ;) }))) }))) }))) (if_statement "if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }" if (parenthesized_expression "(local_2c == *(undefined4 **)puVar3)" ( (binary_expression "local_2c == *(undefined4 **)puVar3" identifier == (pointer_expression "*(undefined4 **)puVar3" * (cast_expression "(undefined4 **)puVar3" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar7;\n  }" { (return_statement "return puVar7;" return identifier ;) })) (expression_statement "pcVar35 = FUN_000788a0;" (assignment_expression "pcVar35 = FUN_000788a0" identifier = identifier) ;) (expression_statement "puVar18 = local_2c;" (assignment_expression "puVar18 = local_2c" identifier = identifier) ;) (expression_statement "puVar33 = PTR___stack_chk_fail_000afbd4;" (assignment_expression "puVar33 = PTR___stack_chk_fail_000afbd4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000afbd4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000afbd4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000afbd4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000afbd4" * (cast_expression "(code *)PTR___stack_chk_fail_000afbd4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar34 = puVar33 + 0x3eb90;" (assignment_expression "puVar34 = puVar33 + 0x3eb90" identifier = (binary_expression "puVar33 + 0x3eb90" identifier + number_literal)) ;) (expression_statement "puVar14 = *(undefined4 **)(puVar33 + 0x3739c);" (assignment_expression "puVar14 = *(undefined4 **)(puVar33 + 0x3739c)" identifier = (pointer_expression "*(undefined4 **)(puVar33 + 0x3739c)" * (cast_expression "(undefined4 **)(puVar33 + 0x3739c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x3739c)" ( (binary_expression "puVar33 + 0x3739c" identifier + number_literal) ))))) ;) (expression_statement "puStack_94 = puVar3;" (assignment_expression "puStack_94 = puVar3" identifier = identifier) ;) (expression_statement "piVar28 = (int *)*puVar18;" (assignment_expression "piVar28 = (int *)*puVar18" identifier = (cast_expression "(int *)*puVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (expression_statement "puStack_9c = (uint *)*puVar14;" (assignment_expression "puStack_9c = (uint *)*puVar14" identifier = (cast_expression "(uint *)*puVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (expression_statement "piStack_8c = param_6;" (assignment_expression "piStack_8c = param_6" identifier = identifier) ;) (if_statement "if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }" if (parenthesized_expression "(piVar28[0x17] == 1)" ( (binary_expression "piVar28[0x17] == 1" (subscript_expression "piVar28[0x17]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }" { (expression_statement "uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;" (assignment_expression "uVar20 = (uint)(puVar18[3] << 9) >> 0x1f" identifier = (binary_expression "(uint)(puVar18[3] << 9) >> 0x1f" (call_expression "(uint)(puVar18[3] << 9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar18[3] << 9)" ( (binary_expression "puVar18[3] << 9" (subscript_expression "puVar18[3]" identifier [ number_literal ]) << number_literal) ))) >> number_literal)) ;) }) (else_clause "else {\n    uVar20 = 0;\n  }" else (compound_statement "{\n    uVar20 = 0;\n  }" { (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" identifier = number_literal) ;) }))) (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "puVar26 = puStack_9c;" (assignment_expression "puVar26 = puStack_9c" identifier = identifier) ;) (expression_statement "puVar23 = puVar17;" (assignment_expression "puVar23 = puVar17" identifier = identifier) ;) (expression_statement "puVar24 = puVar17;" (assignment_expression "puVar24 = puVar17" identifier = identifier) ;) (expression_statement "puVar27 = puVar25;" (assignment_expression "puVar27 = puVar25" identifier = identifier) ;) (expression_statement "iStack_98 = param_1;" (assignment_expression "iStack_98 = param_1" identifier = identifier) ;) (expression_statement "puStack_90 = puVar29;" (assignment_expression "puStack_90 = puVar29" identifier = identifier) ;) (expression_statement "puStack_88 = param_4;" (assignment_expression "puStack_88 = param_4" identifier = identifier) ;) (expression_statement "puStack_84 = puVar4;" (assignment_expression "puStack_84 = puVar4" identifier = identifier) ;) (expression_statement "puStack_80 = unaff_s6;" (assignment_expression "puStack_80 = unaff_s6" identifier = identifier) ;) (expression_statement "puStack_7c = param_2;" (assignment_expression "puStack_7c = param_2" identifier = identifier) ;) (expression_statement "puStack_78 = puVar7;" (assignment_expression "puStack_78 = puVar7" identifier = identifier) ;) (expression_statement "pcStack_74 = pcVar35;" (assignment_expression "pcStack_74 = pcVar35" identifier = identifier) ;) (if_statement "if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }" if (parenthesized_expression "(0 < (int)puVar21)" ( (binary_expression "0 < (int)puVar21" number_literal < (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }" { (do_statement "do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);" do (compound_statement "{\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    }" { (while_statement "while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }" { (expression_statement "puVar26 = (uint *)*puVar17;" (assignment_expression "puVar26 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "uVar6 = puVar26[iVar5];" (assignment_expression "uVar6 = puVar26[iVar5]" identifier = (subscript_expression "puVar26[iVar5]" identifier [ identifier ])) ;) (expression_statement "iVar15 = uVar6 * 8;" (assignment_expression "iVar15 = uVar6 * 8" identifier = (binary_expression "uVar6 * 8" identifier * number_literal)) ;) (expression_statement "pbVar8 = (byte *)(*piVar28 + iVar15);" (assignment_expression "pbVar8 = (byte *)(*piVar28 + iVar15)" identifier = (cast_expression "(byte *)(*piVar28 + iVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + iVar15)" ( (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" * identifier) + identifier) )))) ;) (expression_statement "bVar1 = pbVar8[4];" (assignment_expression "bVar1 = pbVar8[4]" identifier = (subscript_expression "pbVar8[4]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 != 1) break;" if (parenthesized_expression "(bVar1 != 1)" ( (binary_expression "bVar1 != 1" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "*(char *)((int)puVar25 + (uint)bVar1) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)bVar1) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)bVar1)" * (cast_expression "(char *)((int)puVar25 + (uint)bVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (uint)bVar1)" ( (binary_expression "(int)puVar25 + (uint)bVar1" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }" { (expression_statement "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();" (assignment_expression "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))()" identifier = (cast_expression "(int *)(**(code **)(puVar33 + 0x372e0))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar33 + 0x372e0))" ( (pointer_expression "**(code **)(puVar33 + 0x372e0)" * (pointer_expression "*(code **)(puVar33 + 0x372e0)" * (cast_expression "(code **)(puVar33 + 0x372e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372e0)" ( (binary_expression "puVar33 + 0x372e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "*(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4))" * (cast_expression "(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4))" ( (binary_expression "(int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*piVar9 + (uint)bVar1 * 4)" * (cast_expression "(int *)(*piVar9 + (uint)bVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + (uint)bVar1 * 4)" ( (binary_expression "*piVar9 + (uint)bVar1 * 4" (pointer_expression "*piVar9" * identifier) + (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (if_statement "if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }" if (parenthesized_expression "(((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17]))" ( (binary_expression "((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])" (parenthesized_expression "((int)(puVar18[3] << 9) < 0)" ( (binary_expression "(int)(puVar18[3] << 9) < 0" (cast_expression "(int)(puVar18[3] << 9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar18[3] << 9)" ( (binary_expression "puVar18[3] << 9" (subscript_expression "puVar18[3]" identifier [ number_literal ]) << number_literal) ))) < number_literal) )) && (parenthesized_expression "(1 < piVar28[0x17])" ( (binary_expression "1 < piVar28[0x17]" number_literal < (subscript_expression "piVar28[0x17]" identifier [ number_literal ])) ))) )) (compound_statement "{\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }" { (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);" (assignment_expression "uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15)" (field_expression "uStack_19c._0_1_" identifier . field_identifier) = (pointer_expression "*(byte *)(*piVar28 + iVar15)" * (cast_expression "(byte *)(*piVar28 + iVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + iVar15)" ( (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" * identifier) + identifier) ))))) ;) (if_statement "if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }" if (parenthesized_expression "((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400))" ( (binary_expression "(uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)" (parenthesized_expression "(uVar6 < (uint)piVar28[2])" ( (binary_expression "uVar6 < (uint)piVar28[2]" identifier < (cast_expression "(uint)piVar28[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar28[2]" identifier [ number_literal ]))) )) && (parenthesized_expression "(pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)" ( (comma_expression "pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400" (assignment_expression "pbVar8 = (byte *)(*piVar28 + iVar15 + 8)" identifier = (cast_expression "(byte *)(*piVar28 + iVar15 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + iVar15 + 8)" ( (binary_expression "*piVar28 + iVar15 + 8" (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" * identifier) + identifier) + number_literal) )))) , (binary_expression "(*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400" (parenthesized_expression "(*(uint *)(pbVar8 + 4) & 0xff000400)" ( (binary_expression "*(uint *)(pbVar8 + 4) & 0xff000400" (pointer_expression "*(uint *)(pbVar8 + 4)" * (cast_expression "(uint *)(pbVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 4)" ( (binary_expression "pbVar8 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }" { (expression_statement "pbVar12 = (byte *)((int)&uStack_19c + 1);" (assignment_expression "pbVar12 = (byte *)((int)&uStack_19c + 1)" identifier = (cast_expression "(byte *)((int)&uStack_19c + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&uStack_19c + 1)" ( (binary_expression "(int)&uStack_19c + 1" (cast_expression "(int)&uStack_19c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_19c" & identifier)) + number_literal) )))) ;) (do_statement "do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);" do (compound_statement "{\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            }" { (expression_statement "pbVar32 = pbVar12 + 1;" (assignment_expression "pbVar32 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar12 = *pbVar8;" (assignment_expression "*pbVar12 = *pbVar8" (pointer_expression "*pbVar12" * identifier) = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if ((uint)piVar28[2] <= uVar6) break;" if (parenthesized_expression "((uint)piVar28[2] <= uVar6)" ( (binary_expression "(uint)piVar28[2] <= uVar6" (cast_expression "(uint)piVar28[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar28[2]" identifier [ number_literal ])) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar8 = (byte *)(*piVar28 + uVar6 * 8);" (assignment_expression "pbVar8 = (byte *)(*piVar28 + uVar6 * 8)" identifier = (cast_expression "(byte *)(*piVar28 + uVar6 * 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + uVar6 * 8)" ( (binary_expression "*piVar28 + uVar6 * 8" (pointer_expression "*piVar28" * identifier) + (binary_expression "uVar6 * 8" identifier * number_literal)) )))) ;) (expression_statement "pbVar12 = pbVar32;" (assignment_expression "pbVar12 = pbVar32" identifier = identifier) ;) }) while (parenthesized_expression "((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)" ( (binary_expression "(*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400" (parenthesized_expression "(*(uint *)(pbVar8 + 4) & 0xff000400)" ( (binary_expression "*(uint *)(pbVar8 + 4) & 0xff000400" (pointer_expression "*(uint *)(pbVar8 + 4)" * (cast_expression "(uint *)(pbVar8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar8 + 4)" ( (binary_expression "pbVar8 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal) )) ;) (expression_statement "puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);" (assignment_expression "puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c)" identifier = (cast_expression "(uint *)(pbVar32 + -(int)&uStack_19c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar32 + -(int)&uStack_19c)" ( (binary_expression "pbVar32 + -(int)&uStack_19c" identifier + (unary_expression "-(int)&uStack_19c" - (cast_expression "(int)&uStack_19c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_19c" & identifier)))) )))) ;) }) (else_clause "else {\n            puVar4 = (uint *)&DAT_00000001;\n          }" else (compound_statement "{\n            puVar4 = (uint *)&DAT_00000001;\n          }" { (expression_statement "puVar4 = (uint *)&DAT_00000001;" (assignment_expression "puVar4 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) }))) (expression_statement "puStack_1c8 = &uStack_19c;" (assignment_expression "puStack_1c8 = &uStack_19c" identifier = (pointer_expression "&uStack_19c" & identifier)) ;) (expression_statement "puVar24 = auStack_1a8 + 1;" (assignment_expression "puVar24 = auStack_1a8 + 1" identifier = (binary_expression "auStack_1a8 + 1" identifier + number_literal)) ;) (expression_statement "puVar26 = auStack_1a8;" (assignment_expression "puVar26 = auStack_1a8" identifier = identifier) ;) (expression_statement "auStack_1a8[1] = 0;" (assignment_expression "auStack_1a8[1] = 0" (subscript_expression "auStack_1a8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_1a8[2] = 0;" (assignment_expression "auStack_1a8[2] = 0" (subscript_expression "auStack_1a8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar23 = puVar4;" (assignment_expression "puVar23 = puVar4" identifier = identifier) ;) (expression_statement "puVar27 = puVar24;" (assignment_expression "puVar27 = puVar24" identifier = identifier) ;) (expression_statement "puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);" (assignment_expression "puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8)" identifier = (cast_expression "(uint *)rpl_mbrtowc(puVar26,puStack_1c8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "rpl_mbrtowc(puVar26,puStack_1c8)" identifier (argument_list "(puVar26,puStack_1c8)" ( identifier , identifier ))))) ;) (if_statement "if (puVar7 != puVar4) goto LAB_00078a04;" if (parenthesized_expression "(puVar7 != puVar4)" ( (binary_expression "puVar7 != puVar4" identifier != identifier) )) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;)) (expression_statement "uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);" (assignment_expression "uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0])" identifier = (call_expression "(**(code **)(puVar33 + 0x372d8))(auStack_1a8[0])" (parenthesized_expression "(**(code **)(puVar33 + 0x372d8))" ( (pointer_expression "**(code **)(puVar33 + 0x372d8)" * (pointer_expression "*(code **)(puVar33 + 0x372d8)" * (cast_expression "(code **)(puVar33 + 0x372d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372d8)" ( (binary_expression "puVar33 + 0x372d8" identifier + number_literal) ))))) )) (argument_list "(auStack_1a8[0])" ( (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) )))) ;) (expression_statement "iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);" (assignment_expression "iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10)" identifier = (call_expression "(**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10)" (parenthesized_expression "(**(code **)(puVar33 + 0x3742c))" ( (pointer_expression "**(code **)(puVar33 + 0x3742c)" * (pointer_expression "*(code **)(puVar33 + 0x3742c)" * (cast_expression "(code **)(puVar33 + 0x3742c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x3742c)" ( (binary_expression "puVar33 + 0x3742c" identifier + number_literal) ))))) )) (argument_list "(puStack_1c8,uVar10)" ( identifier , identifier )))) ;) (expression_statement "puVar26 = puStack_1c8;" (assignment_expression "puVar26 = puStack_1c8" identifier = identifier) ;) (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" identifier = identifier) ;) (if_statement "if (iVar15 == -1) goto LAB_00078a04;" if (parenthesized_expression "(iVar15 == -1)" ( (binary_expression "iVar15 == -1" identifier == number_literal) )) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;)) (expression_statement "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" * (cast_expression "(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (uint)uStack_19c._0_1_)" ( (binary_expression "(int)puVar25 + (uint)uStack_19c._0_1_" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(uint)uStack_19c._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "uStack_19c._0_1_" identifier . field_identifier))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) }) (else_clause "else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }" else (compound_statement "{\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }" { (labeled_statement "LAB_00078a04:\n          puVar21 = (uint *)*puVar19;" statement_identifier : (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;)) (expression_statement "puStack_1c8 = puVar26;" (assignment_expression "puStack_1c8 = puVar26" identifier = identifier) ;) (expression_statement "puVar24 = puVar23;" (assignment_expression "puVar24 = puVar23" identifier = identifier) ;) }))) (labeled_statement "LAB_00078a08:\n        iVar5 = iVar5 + 1;" statement_identifier : (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;)) (expression_statement "puVar26 = puStack_1c8;" (assignment_expression "puVar26 = puStack_1c8" identifier = identifier) ;) (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" identifier = identifier) ;) (if_statement "if ((int)puVar21 <= iVar5) goto LAB_00078a1c;" if (parenthesized_expression "((int)puVar21 <= iVar5)" ( (binary_expression "(int)puVar21 <= iVar5" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00078a1c;" goto statement_identifier ;)) })) (if_statement "if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }" if (parenthesized_expression "(bVar1 == 3)" ( (binary_expression "bVar1 == 3" identifier == number_literal) )) (compound_statement "{\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }" { (expression_statement "iVar30 = 0x20;" (assignment_expression "iVar30 = 0x20" identifier = number_literal) ;) (expression_statement "puStack_1c8 = (uint *)0x0;" (assignment_expression "puStack_1c8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }" { (expression_statement "iVar16 = iVar30 + -0x20;" (assignment_expression "iVar16 = iVar30 + -0x20" identifier = (binary_expression "iVar30 + -0x20" identifier + number_literal)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);" (assignment_expression "uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8)" identifier = (pointer_expression "*(uint *)(*(int *)pbVar8 + (int)puStack_1c8)" * (cast_expression "(uint *)(*(int *)pbVar8 + (int)puStack_1c8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)pbVar8 + (int)puStack_1c8)" ( (binary_expression "*(int *)pbVar8 + (int)puStack_1c8" (pointer_expression "*(int *)pbVar8" * (cast_expression "(int *)pbVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (cast_expression "(int)puStack_1c8" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (do_statement "do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);" do (compound_statement "{\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          }" { (if_statement "if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }" if (parenthesized_expression "(((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0))" ( (binary_expression "((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)" (parenthesized_expression "((uVar31 >> (uVar6 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar31 >> (uVar6 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar31 >> (uVar6 & 0x1f) & 1)" ( (binary_expression "uVar31 >> (uVar6 & 0x1f) & 1" (binary_expression "uVar31 >> (uVar6 & 0x1f)" identifier >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)" ( (comma_expression "*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0" (assignment_expression "*(char *)((int)puVar25 + iVar16) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + iVar16)" * (cast_expression "(char *)((int)puVar25 + iVar16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar16)" ( (binary_expression "(int)puVar25 + iVar16" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (char_literal "'\x01'" ' escape_sequence ')) , (binary_expression "uVar20 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }" { (expression_statement "puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);" (assignment_expression "puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180)" identifier = (cast_expression "(uint *)(uint)(iVar16 + 0x80U < 0x180)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar16 + 0x80U < 0x180)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar16 + 0x80U < 0x180)" ( (binary_expression "iVar16 + 0x80U < 0x180" (binary_expression "iVar16 + 0x80U" identifier + number_literal) < number_literal) ))))) ;) (if_statement "if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }" if (parenthesized_expression "(puVar23 != (uint *)0x0)" ( (binary_expression "puVar23 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }" { (expression_statement "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();" (assignment_expression "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))()" identifier = (cast_expression "(int *)(**(code **)(puVar33 + 0x372e0))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar33 + 0x372e0))" ( (pointer_expression "**(code **)(puVar33 + 0x372e0)" * (pointer_expression "*(code **)(puVar33 + 0x372e0)" * (cast_expression "(code **)(puVar33 + 0x372e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372e0)" ( (binary_expression "puVar33 + 0x372e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar23 = (uint *)(iVar16 * 4);" (assignment_expression "puVar23 = (uint *)(iVar16 * 4)" identifier = (cast_expression "(uint *)(iVar16 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 * 4)" ( (binary_expression "iVar16 * 4" identifier * number_literal) )))) ;) (expression_statement "*(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23))" * (cast_expression "(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + *(int *)(*piVar9 + (int)puVar23))" ( (binary_expression "(int)puVar25 + *(int *)(*piVar9 + (int)puVar23)" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(*piVar9 + (int)puVar23)" * (cast_expression "(int *)(*piVar9 + (int)puVar23)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + (int)puVar23)" ( (binary_expression "*piVar9 + (int)puVar23" (pointer_expression "*piVar9" * identifier) + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar30 != iVar16)" ( (binary_expression "iVar30 != iVar16" identifier != identifier) )) ;) (expression_statement "iVar30 = iVar30 + 0x20;" (assignment_expression "iVar30 = iVar30 + 0x20" identifier = (binary_expression "iVar30 + 0x20" identifier + number_literal)) ;) (expression_statement "puStack_1c8 = (uint *)((int)puStack_1c8 + 4);" (assignment_expression "puStack_1c8 = (uint *)((int)puStack_1c8 + 4)" identifier = (cast_expression "(uint *)((int)puStack_1c8 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puStack_1c8 + 4)" ( (binary_expression "(int)puStack_1c8 + 4" (cast_expression "(int)puStack_1c8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (iVar30 == 0x120) break;" if (parenthesized_expression "(iVar30 == 0x120)" ( (binary_expression "iVar30 == 0x120" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar8 = (byte *)(*piVar28 + iVar15);" (assignment_expression "pbVar8 = (byte *)(*piVar28 + iVar15)" identifier = (cast_expression "(byte *)(*piVar28 + iVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar28 + iVar15)" ( (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" * identifier) + identifier) )))) ;) })) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;) })) (if_statement "if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }" if (parenthesized_expression "(bVar1 == 6)" ( (binary_expression "bVar1 == 6" identifier == number_literal) )) (compound_statement "{\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }" { (expression_statement "piVar9 = *(int **)pbVar8;" (assignment_expression "piVar9 = *(int **)pbVar8" identifier = (pointer_expression "*(int **)pbVar8" * (cast_expression "(int **)pbVar8" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }" if (parenthesized_expression "((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0))))" ( (binary_expression "(1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))" (parenthesized_expression "(1 < piVar28[0x17])" ( (binary_expression "1 < piVar28[0x17]" number_literal < (subscript_expression "piVar28[0x17]" identifier [ number_literal ])) )) && (parenthesized_expression "(((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))" ( (parenthesized_expression "((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0))" ( (binary_expression "(piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)" (parenthesized_expression "(piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0'))" ( (binary_expression "piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')" (binary_expression "piVar9[9] != 0" (subscript_expression "piVar9[9]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(*(char *)(piVar9 + 4) < '\0')" ( (binary_expression "*(char *)(piVar9 + 4) < '\0'" (pointer_expression "*(char *)(piVar9 + 4)" * (cast_expression "(char *)(piVar9 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar9 + 4)" ( (binary_expression "piVar9 + 4" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(piVar9[8] != 0)" ( (binary_expression "piVar9[8] != 0" (subscript_expression "piVar9[8]" identifier [ number_literal ]) != number_literal) ))) )) ))) )) (compound_statement "{\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }" { (expression_statement "auStack_1a8[0] = auStack_1a8[0] & 0xffffff;" (assignment_expression "auStack_1a8[0] = auStack_1a8[0] & 0xffffff" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) = (binary_expression "auStack_1a8[0] & 0xffffff" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) & number_literal)) ;) (do_statement "do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');" do (compound_statement "{\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          }" { (expression_statement "puVar24 = (uint *)&DAT_00000001;" (assignment_expression "puVar24 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "puStack_1c8 = (uint *)0x0;" (assignment_expression "puStack_1c8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "auStack_1a8[1] = 0;" (assignment_expression "auStack_1a8[1] = 0" (subscript_expression "auStack_1a8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_1a8[2] = 0;" (assignment_expression "auStack_1a8[2] = 0" (subscript_expression "auStack_1a8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar27 = auStack_1a8 + 1;" (assignment_expression "puVar27 = auStack_1a8 + 1" identifier = (binary_expression "auStack_1a8 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = rpl_mbrtowc(0,auStack_1a8);" (assignment_expression "iVar15 = rpl_mbrtowc(0,auStack_1a8)" identifier = (call_expression "rpl_mbrtowc(0,auStack_1a8)" identifier (argument_list "(0,auStack_1a8)" ( number_literal , identifier )))) ;) (if_statement "if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }" if (parenthesized_expression "(iVar15 == -2)" ( (binary_expression "iVar15 == -2" identifier == number_literal) )) (compound_statement "{\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }" { (expression_statement "*(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_)" * (cast_expression "(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (uint)auStack_1a8[0]._0_1_)" ( (binary_expression "(int)puVar25 + (uint)auStack_1a8[0]._0_1_" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(uint)auStack_1a8[0]._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "auStack_1a8[0]._0_1_" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) . field_identifier))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (expression_statement "cVar13 = auStack_1a8[0]._0_1_ + 1;" (assignment_expression "cVar13 = auStack_1a8[0]._0_1_ + 1" identifier = (binary_expression "auStack_1a8[0]._0_1_ + 1" (field_expression "auStack_1a8[0]._0_1_" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) . field_identifier) + number_literal)) ;) (expression_statement "auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);" (assignment_expression "auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_)" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) = (call_expression "CONCAT13(cVar13,auStack_1a8[0]._1_3_)" identifier (argument_list "(cVar13,auStack_1a8[0]._1_3_)" ( identifier , (field_expression "auStack_1a8[0]._1_3_" (subscript_expression "auStack_1a8[0]" identifier [ number_literal ]) . field_identifier) )))) ;) }) while (parenthesized_expression "(cVar13 != '\0')" ( (binary_expression "cVar13 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (goto_statement "goto LAB_00078a08;" goto statement_identifier ;) })) (if_statement "if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }" if (parenthesized_expression "(0 < piVar9[5])" ( (binary_expression "0 < piVar9[5]" number_literal < (subscript_expression "piVar9[5]" identifier [ number_literal ])) )) (compound_statement "{\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);" do (compound_statement "{\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          }" { (expression_statement "auStack_1a8[1] = 0;" (assignment_expression "auStack_1a8[1] = 0" (subscript_expression "auStack_1a8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "auStack_1a8[2] = 0;" (assignment_expression "auStack_1a8[2] = 0" (subscript_expression "auStack_1a8[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar26 = &uStack_19c;" (assignment_expression "puVar26 = &uStack_19c" identifier = (pointer_expression "&uStack_19c" & identifier)) ;) (expression_statement "puVar23 = auStack_1a8 + 1;" (assignment_expression "puVar23 = auStack_1a8 + 1" identifier = (binary_expression "auStack_1a8 + 1" identifier + number_literal)) ;) (expression_statement "iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));" (assignment_expression "iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4))" identifier = (call_expression "(**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4))" (parenthesized_expression "(**(code **)(puVar33 + 0x3742c))" ( (pointer_expression "**(code **)(puVar33 + 0x3742c)" * (pointer_expression "*(code **)(puVar33 + 0x3742c)" * (cast_expression "(code **)(puVar33 + 0x3742c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x3742c)" ( (binary_expression "puVar33 + 0x3742c" identifier + number_literal) ))))) )) (argument_list "(&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4))" ( (pointer_expression "&uStack_19c" & identifier) , (pointer_expression "*(undefined4 *)(*piVar9 + iVar15 * 4)" * (cast_expression "(undefined4 *)(*piVar9 + iVar15 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + iVar15 * 4)" ( (binary_expression "*piVar9 + iVar15 * 4" (pointer_expression "*piVar9" * identifier) + (binary_expression "iVar15 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }" if (parenthesized_expression "(iVar30 != -1)" ( (binary_expression "iVar30 != -1" identifier != number_literal) )) (compound_statement "{\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }" { (expression_statement "uVar6 = (uint)uStack_19c._0_1_;" (assignment_expression "uVar6 = (uint)uStack_19c._0_1_" identifier = (cast_expression "(uint)uStack_19c._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "uStack_19c._0_1_" identifier . field_identifier))) ;) (expression_statement "*(char *)((int)puVar25 + uVar6) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + uVar6) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + uVar6)" * (cast_expression "(char *)((int)puVar25 + uVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + uVar6)" ( (binary_expression "(int)puVar25 + uVar6" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }" if (parenthesized_expression "(uVar20 != 0)" ( (binary_expression "uVar20 != 0" identifier != number_literal) )) (compound_statement "{\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }" { (expression_statement "piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();" (assignment_expression "piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))()" identifier = (cast_expression "(int *)(**(code **)(puVar33 + 0x372e0))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar33 + 0x372e0))" ( (pointer_expression "**(code **)(puVar33 + 0x372e0)" * (pointer_expression "*(code **)(puVar33 + 0x372e0)" * (cast_expression "(code **)(puVar33 + 0x372e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372e0)" ( (binary_expression "puVar33 + 0x372e0" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar26 = (uint *)(*piVar11 + uVar6 * 4);" (assignment_expression "puVar26 = (uint *)(*piVar11 + uVar6 * 4)" identifier = (cast_expression "(uint *)(*piVar11 + uVar6 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar11 + uVar6 * 4)" ( (binary_expression "*piVar11 + uVar6 * 4" (pointer_expression "*piVar11" * identifier) + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "*(char *)((int)puVar25 + *puVar26) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + *puVar26) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + *puVar26)" * (cast_expression "(char *)((int)puVar25 + *puVar26)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + *puVar26)" ( (binary_expression "(int)puVar25 + *puVar26" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*puVar26" * identifier)) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) (if_statement "if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }" if (parenthesized_expression "(((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17]))" ( (binary_expression "((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])" (parenthesized_expression "((puVar18[3] & 0x400000) != 0)" ( (binary_expression "(puVar18[3] & 0x400000) != 0" (parenthesized_expression "(puVar18[3] & 0x400000)" ( (binary_expression "puVar18[3] & 0x400000" (subscript_expression "puVar18[3]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(1 < piVar28[0x17])" ( (binary_expression "1 < piVar28[0x17]" number_literal < (subscript_expression "piVar28[0x17]" identifier [ number_literal ])) ))) )) (compound_statement "{\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }" { (expression_statement "uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));" (assignment_expression "uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4))" identifier = (call_expression "(**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4))" (parenthesized_expression "(**(code **)(puVar33 + 0x372d8))" ( (pointer_expression "**(code **)(puVar33 + 0x372d8)" * (pointer_expression "*(code **)(puVar33 + 0x372d8)" * (cast_expression "(code **)(puVar33 + 0x372d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x372d8)" ( (binary_expression "puVar33 + 0x372d8" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(*piVar9 + iVar15 * 4))" ( (pointer_expression "*(undefined4 *)(*piVar9 + iVar15 * 4)" * (cast_expression "(undefined4 *)(*piVar9 + iVar15 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + iVar15 * 4)" ( (binary_expression "*piVar9 + iVar15 * 4" (pointer_expression "*piVar9" * identifier) + (binary_expression "iVar15 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "puVar26 = &uStack_19c;" (assignment_expression "puVar26 = &uStack_19c" identifier = (pointer_expression "&uStack_19c" & identifier)) ;) (expression_statement "puVar23 = auStack_1a8 + 1;" (assignment_expression "puVar23 = auStack_1a8 + 1" identifier = (binary_expression "auStack_1a8 + 1" identifier + number_literal)) ;) (expression_statement "iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);" (assignment_expression "iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10)" identifier = (call_expression "(**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10)" (parenthesized_expression "(**(code **)(puVar33 + 0x3742c))" ( (pointer_expression "**(code **)(puVar33 + 0x3742c)" * (pointer_expression "*(code **)(puVar33 + 0x3742c)" * (cast_expression "(code **)(puVar33 + 0x3742c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x3742c)" ( (binary_expression "puVar33 + 0x3742c" identifier + number_literal) ))))) )) (argument_list "(&uStack_19c,uVar10)" ( (pointer_expression "&uStack_19c" & identifier) , identifier )))) ;) (if_statement "if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }" if (parenthesized_expression "(iVar30 != -1)" ( (binary_expression "iVar30 != -1" identifier != number_literal) )) (compound_statement "{\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }" { (expression_statement "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" * (cast_expression "(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (uint)uStack_19c._0_1_)" ( (binary_expression "(int)puVar25 + (uint)uStack_19c._0_1_" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(uint)uStack_19c._0_1_" ( (type_descriptor "uint" type_identifier) ) (field_expression "uStack_19c._0_1_" identifier . field_identifier))) )))) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) })) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar15 < piVar9[5])" ( (binary_expression "iVar15 < piVar9[5]" identifier < (subscript_expression "piVar9[5]" identifier [ number_literal ])) )) ;) (goto_statement "goto LAB_00078a04;" goto statement_identifier ;) })) }) (else_clause "else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }" else (compound_statement "{\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }" { (if_statement "if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }" if (parenthesized_expression "((bVar1 & 0xfd) == 5)" ( (binary_expression "(bVar1 & 0xfd) == 5" (parenthesized_expression "(bVar1 & 0xfd)" ( (binary_expression "bVar1 & 0xfd" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }" { (if_statement "if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }" if (parenthesized_expression "(puStack_9c == (uint *)*puVar14)" ( (binary_expression "puStack_9c == (uint *)*puVar14" identifier == (cast_expression "(uint *)*puVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) )) (compound_statement "{\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }" { (expression_statement "puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);" (assignment_expression "puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100)" identifier = (cast_expression "(uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100)" (parenthesized_expression "(**(code **)(puVar33 + 0x374f4))" ( (pointer_expression "**(code **)(puVar33 + 0x374f4)" * (pointer_expression "*(code **)(puVar33 + 0x374f4)" * (cast_expression "(code **)(puVar33 + 0x374f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x374f4)" ( (binary_expression "puVar33 + 0x374f4" identifier + number_literal) ))))) )) (argument_list "(puVar25,1,0x100)" ( identifier , number_literal , number_literal ))))) ;) (return_statement "return puVar19;" return identifier ;) })) (goto_statement "goto LAB_00078e4c;" goto statement_identifier ;) })) (if_statement "if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }" if (parenthesized_expression "(bVar1 == 2)" ( (binary_expression "bVar1 == 2" identifier == number_literal) )) (compound_statement "{\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }" { (expression_statement "puVar24 = (uint *)0x100;" (assignment_expression "puVar24 = (uint *)0x100" identifier = (cast_expression "(uint *)0x100" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar21 = (uint *)&DAT_00000001;" (assignment_expression "puVar21 = (uint *)&DAT_00000001" identifier = (cast_expression "(uint *)&DAT_00000001" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "(**(code **)(puVar33 + 0x374f4))();" (call_expression "(**(code **)(puVar33 + 0x374f4))()" (parenthesized_expression "(**(code **)(puVar33 + 0x374f4))" ( (pointer_expression "**(code **)(puVar33 + 0x374f4)" * (pointer_expression "*(code **)(puVar33 + 0x374f4)" * (cast_expression "(code **)(puVar33 + 0x374f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x374f4)" ( (binary_expression "puVar33 + 0x374f4" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;" (assignment_expression "*(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80" (pointer_expression "*(byte *)(puVar18 + 7)" * (cast_expression "(byte *)(puVar18 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 7)" ( (binary_expression "puVar18 + 7" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar18 + 7) & 0x7f | 0x80" (binary_expression "*(byte *)(puVar18 + 7) & 0x7f" (pointer_expression "*(byte *)(puVar18 + 7)" * (cast_expression "(byte *)(puVar18 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar18 + 7)" ( (binary_expression "puVar18 + 7" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "puVar26 = puVar25;" (assignment_expression "puVar26 = puVar25" identifier = identifier) ;) (break_statement "break;" break ;) })) }))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar24 = puVar23;" (assignment_expression "puVar24 = puVar23" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 < (int)puVar21)" ( (binary_expression "iVar5 < (int)puVar21" identifier < (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })) (labeled_statement "LAB_00078a1c:\n  puVar23 = puVar24;" statement_identifier : (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" identifier = identifier) ;)) (if_statement "if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }" if (parenthesized_expression "(puStack_9c == (uint *)*puVar14)" ( (binary_expression "puStack_9c == (uint *)*puVar14" identifier == (cast_expression "(uint *)*puVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) )) (compound_statement "{\n    return (uint *)*puVar14;\n  }" { (return_statement "return (uint *)*puVar14;" return (cast_expression "(uint *)*puVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier)) ;) })) (labeled_statement "LAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);" statement_identifier : (expression_statement "pcVar35 = *(code **)(puVar33 + 0x37334);" (assignment_expression "pcVar35 = *(code **)(puVar33 + 0x37334)" identifier = (pointer_expression "*(code **)(puVar33 + 0x37334)" * (cast_expression "(code **)(puVar33 + 0x37334)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x37334)" ( (binary_expression "puVar33 + 0x37334" identifier + number_literal) ))))) ;)) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar26 = puVar26 + (int)puVar23 * 2;" (assignment_expression "puVar26 = puVar26 + (int)puVar23 * 2" identifier = (binary_expression "puVar26 + (int)puVar23 * 2" identifier + (binary_expression "(int)puVar23 * 2" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "uVar20 = (uint)*(byte *)(puVar26 + 1);" (assignment_expression "uVar20 = (uint)*(byte *)(puVar26 + 1)" identifier = (binary_expression "(uint)*(byte *)(puVar26 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar26 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 1)" ( (binary_expression "puVar26 + 1" identifier + number_literal) ))))) ;) (if_statement "if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" if (parenthesized_expression "(uVar20 == 7)" ( (binary_expression "uVar20 == 7" identifier == number_literal) )) (compound_statement "{\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }" { (expression_statement "pbVar8 = puVar34 + puVar27[1];" (assignment_expression "pbVar8 = puVar34 + puVar27[1]" identifier = (binary_expression "puVar34 + puVar27[1]" identifier + (subscript_expression "puVar27[1]" identifier [ number_literal ]))) ;) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (if_statement "if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "(bVar1 < 0xc2)" ( (binary_expression "bVar1 < 0xc2" identifier < number_literal) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91))" ( (binary_expression "(int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)" (cast_expression "(int)puVar27[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar27[0xc]" identifier [ number_literal ])) <= (cast_expression "(int)(puVar33 + 0x3eb91)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar33 + 0x3eb91)" ( (binary_expression "puVar33 + 0x3eb91" identifier + number_literal) )))) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "bVar2 = pbVar8[1];" (assignment_expression "bVar2 = pbVar8[1]" identifier = (subscript_expression "pbVar8[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }" if (parenthesized_expression "(bVar1 < 0xe0)" ( (binary_expression "bVar1 < 0xe0" identifier < number_literal) )) (compound_statement "{\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }" { (if_statement "if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }" if (parenthesized_expression "((bVar2 ^ 0x80) < 0x40)" ( (binary_expression "(bVar2 ^ 0x80) < 0x40" (parenthesized_expression "(bVar2 ^ 0x80)" ( (binary_expression "bVar2 ^ 0x80" identifier ^ number_literal) )) < number_literal) )) (compound_statement "{\n        return (uint *)0x2;\n      }" { (return_statement "return (uint *)0x2;" return (cast_expression "(uint *)0x2" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }" else (compound_statement "{\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }" { (if_statement "if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xf0)" ( (binary_expression "bVar1 < 0xf0" identifier < number_literal) )) (compound_statement "{\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }" { (if_statement "if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xe0) && (bVar2 < 0xa0))" ( (binary_expression "(bVar1 == 0xe0) && (bVar2 < 0xa0)" (parenthesized_expression "(bVar1 == 0xe0)" ( (binary_expression "bVar1 == 0xe0" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0xa0)" ( (binary_expression "bVar2 < 0xa0" identifier < number_literal) ))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar19 = (uint *)0x3;" (assignment_expression "puVar19 = (uint *)0x3" identifier = (cast_expression "(uint *)0x3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" else (if_statement "if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xf8)" ( (binary_expression "bVar1 < 0xf8" identifier < number_literal) )) (compound_statement "{\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }" { (expression_statement "puVar19 = (uint *)&DAT_00000004;" (assignment_expression "puVar19 = (uint *)&DAT_00000004" identifier = (cast_expression "(uint *)&DAT_00000004" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000004" & identifier))) ;) (if_statement "if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xf0) && (bVar2 < 0x90))" ( (binary_expression "(bVar1 == 0xf0) && (bVar2 < 0x90)" (parenthesized_expression "(bVar1 == 0xf0)" ( (binary_expression "bVar1 == 0xf0" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x90)" ( (binary_expression "bVar2 < 0x90" identifier < number_literal) ))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" else (if_statement "if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" if (parenthesized_expression "(bVar1 < 0xfc)" ( (binary_expression "bVar1 < 0xfc" identifier < number_literal) )) (compound_statement "{\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }" { (expression_statement "puVar19 = (uint *)0x5;" (assignment_expression "puVar19 = (uint *)0x5" identifier = (cast_expression "(uint *)0x5" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xf8) && (bVar2 < 0x88))" ( (binary_expression "(bVar1 == 0xf8) && (bVar2 < 0x88)" (parenthesized_expression "(bVar1 == 0xf8)" ( (binary_expression "bVar1 == 0xf8" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x88)" ( (binary_expression "bVar2 < 0x88" identifier < number_literal) ))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" else (compound_statement "{\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" { (if_statement "if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(0xfd < bVar1)" ( (binary_expression "0xfd < bVar1" number_literal < identifier) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar19 = (uint *)0x6;" (assignment_expression "puVar19 = (uint *)0x6" identifier = (cast_expression "(uint *)0x6" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "((bVar1 == 0xfc) && (bVar2 < 0x84))" ( (binary_expression "(bVar1 == 0xfc) && (bVar2 < 0x84)" (parenthesized_expression "(bVar1 == 0xfc)" ( (binary_expression "bVar1 == 0xfc" identifier == number_literal) )) && (parenthesized_expression "(bVar2 < 0x84)" ( (binary_expression "bVar2 < 0x84" identifier < number_literal) ))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }))))))) (expression_statement "pbVar12 = puVar33 + 0x3eb91 + puVar27[1];" (assignment_expression "pbVar12 = puVar33 + 0x3eb91 + puVar27[1]" identifier = (binary_expression "puVar33 + 0x3eb91 + puVar27[1]" (binary_expression "puVar33 + 0x3eb91" identifier + number_literal) + (subscript_expression "puVar27[1]" identifier [ number_literal ]))) ;) (if_statement "if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }" if (parenthesized_expression "((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc])" ( (binary_expression "(int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]" (cast_expression "(int)(puVar34 + (int)puVar19)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar34 + (int)puVar19)" ( (binary_expression "puVar34 + (int)puVar19" identifier + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ))) <= (cast_expression "(int)puVar27[0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar27[0xc]" identifier [ number_literal ]))) )) (compound_statement "{\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }" { (do_statement "do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);" do (compound_statement "{\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        }" { (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" identifier = (pointer_expression "*pbVar12" * identifier)) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) (if_statement "if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }" if (parenthesized_expression "(0x3f < (bVar1 ^ 0x80))" ( (binary_expression "0x3f < (bVar1 ^ 0x80)" number_literal < (parenthesized_expression "(bVar1 ^ 0x80)" ( (binary_expression "bVar1 ^ 0x80" identifier ^ number_literal) ))) )) (compound_statement "{\n            return (uint *)0x0;\n          }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) while (parenthesized_expression "(pbVar8 + (int)puVar19 != pbVar12)" ( (binary_expression "pbVar8 + (int)puVar19 != pbVar12" (binary_expression "pbVar8 + (int)puVar19" identifier + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) (return_statement "return puVar19;" return identifier ;) })) }))) }) (else_clause "else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" else (if_statement "if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" if (parenthesized_expression "(puVar27[0x14] != 1)" ( (binary_expression "puVar27[0x14] != 1" (subscript_expression "puVar27[0x14]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" { (expression_statement "puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);" (assignment_expression "puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34)" identifier = (cast_expression "(uint *)FUN_00072ef0(puVar27,puVar34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00072ef0(puVar27,puVar34)" identifier (argument_list "(puVar27,puVar34)" ( identifier , identifier ))))) ;) (if_statement "if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" if (parenthesized_expression "(uVar20 == 5)" ( (binary_expression "uVar20 == 5" identifier == number_literal) )) (compound_statement "{\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }" { (if_statement "if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }" if (parenthesized_expression "((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n'))))" ( (binary_expression "(1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))" (parenthesized_expression "(1 < (int)puVar19)" ( (binary_expression "1 < (int)puVar19" number_literal < (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))" ( (parenthesized_expression "((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n'))" ( (binary_expression "(*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')" (binary_expression "(*puVar21 & 0x40) != 0" (parenthesized_expression "(*puVar21 & 0x40)" ( (binary_expression "*puVar21 & 0x40" (pointer_expression "*puVar21" * identifier) & number_literal) )) != number_literal) || (parenthesized_expression "(puVar34[puVar27[1]] != '\n')" ( (binary_expression "puVar34[puVar27[1]] != '\n'" (subscript_expression "puVar34[puVar27[1]]" identifier [ (subscript_expression "puVar27[1]" identifier [ number_literal ]) ]) != (char_literal "'\n'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }" { (if_statement "if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }" if (parenthesized_expression "((*puVar21 & 0x80) == 0)" ( (binary_expression "(*puVar21 & 0x80) == 0" (parenthesized_expression "(*puVar21 & 0x80)" ( (binary_expression "*puVar21 & 0x80" (pointer_expression "*puVar21" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          return puVar19;\n        }" { (return_statement "return puVar19;" return identifier ;) })) (if_statement "if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }" if (parenthesized_expression "(puVar34[puVar27[1]] != '\0')" ( (binary_expression "puVar34[puVar27[1]] != '\0'" (subscript_expression "puVar34[puVar27[1]]" identifier [ (subscript_expression "puVar27[1]" identifier [ number_literal ]) ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return puVar19;\n        }" { (return_statement "return puVar19;" return identifier ;) })) })) }) (else_clause "else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" else (if_statement "if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" if (parenthesized_expression "((1 < (int)puVar19) && (uVar20 == 6))" ( (binary_expression "(1 < (int)puVar19) && (uVar20 == 6)" (parenthesized_expression "(1 < (int)puVar19)" ( (binary_expression "1 < (int)puVar19" number_literal < (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(uVar20 == 6)" ( (binary_expression "uVar20 == 6" identifier == number_literal) ))) )) (compound_statement "{\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" { (expression_statement "piVar28 = (int *)*puVar26;" (assignment_expression "piVar28 = (int *)*puVar26" identifier = (cast_expression "(int *)*puVar26" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar26" * identifier))) ;) (expression_statement "iVar15 = piVar28[8];" (assignment_expression "iVar15 = piVar28[8]" identifier = (subscript_expression "piVar28[8]" identifier [ number_literal ])) ;) (expression_statement "iVar5 = piVar28[5];" (assignment_expression "iVar5 = piVar28[5]" identifier = (subscript_expression "piVar28[5]" identifier [ number_literal ])) ;) (if_statement "if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }" if (parenthesized_expression "((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0))" ( (binary_expression "(iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)" (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar5 == 0 && piVar28[9] == 0)" ( (binary_expression "iVar5 == 0 && piVar28[9] == 0" (binary_expression "iVar5 == 0" identifier == number_literal) && (binary_expression "piVar28[9] == 0" (subscript_expression "piVar28[9]" identifier [ number_literal ]) == number_literal)) ))) )) (compound_statement "{\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }" { (labeled_statement "LAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }" statement_identifier : (if_statement "if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(-1 < *(char *)(piVar28 + 4))" ( (binary_expression "-1 < *(char *)(piVar28 + 4)" number_literal < (pointer_expression "*(char *)(piVar28 + 4)" * (cast_expression "(char *)(piVar28 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28 + 4)" ( (binary_expression "piVar28 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return puVar19;" return identifier ;) })) (expression_statement "iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);" (assignment_expression "iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4)" identifier = (pointer_expression "*(int *)(puVar27[2] + (int)puVar34 * 4)" * (cast_expression "(int *)(puVar27[2] + (int)puVar34 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27[2] + (int)puVar34 * 4)" ( (binary_expression "puVar27[2] + (int)puVar34 * 4" (subscript_expression "puVar27[2]" identifier [ number_literal ]) + (binary_expression "(int)puVar34 * 4" (cast_expression "(int)puVar34" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) ;) (if_statement "if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }" if (parenthesized_expression "(iVar5 < 1)" ( (binary_expression "iVar5 < 1" identifier < number_literal) )) (compound_statement "{\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }" { (labeled_statement "LAB_00078fc4:\n        iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) (if_statement "if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }" if (parenthesized_expression "(piVar28[9] < 1)" ( (binary_expression "piVar28[9] < 1" (subscript_expression "piVar28[9]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }" { (labeled_statement "LAB_000790c0:\n          iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) (if_statement "if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }" if (parenthesized_expression "(0 < iVar15)" ( (binary_expression "0 < iVar15" number_literal < identifier) )) (compound_statement "{\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }" { (expression_statement "piVar9 = (int *)piVar28[1];" (assignment_expression "piVar9 = (int *)piVar28[1]" identifier = (cast_expression "(int *)piVar28[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar28[1]" identifier [ number_literal ]))) ;) (do_statement "do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);" do (compound_statement "{\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            }" { (expression_statement "iVar16 = *piVar9;" (assignment_expression "iVar16 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar22 = iVar5 * 4;" (assignment_expression "iVar22 = iVar5 * 4" identifier = (binary_expression "iVar5 * 4" identifier * number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;" if (parenthesized_expression "((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))" ( (binary_expression "(iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22))" (parenthesized_expression "(iVar16 <= iVar30)" ( (binary_expression "iVar16 <= iVar30" identifier <= identifier) )) && (parenthesized_expression "(iVar30 <= *(int *)(piVar28[2] + iVar22))" ( (binary_expression "iVar30 <= *(int *)(piVar28[2] + iVar22)" identifier <= (pointer_expression "*(int *)(piVar28[2] + iVar22)" * (cast_expression "(int *)(piVar28[2] + iVar22)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28[2] + iVar22)" ( (binary_expression "piVar28[2] + iVar22" (subscript_expression "piVar28[2]" identifier [ number_literal ]) + identifier) ))))) ))) )) (goto_statement "goto LAB_00079010;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar5 != iVar15)" ( (binary_expression "iVar5 != iVar15" identifier != identifier) )) ;) })) (goto_statement "goto LAB_00079104;" goto statement_identifier ;) })) (expression_statement "iVar15 = piVar28[3];" (assignment_expression "iVar15 = piVar28[3]" identifier = (subscript_expression "piVar28[3]" identifier [ number_literal ])) ;) (while_statement "while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }" { (expression_statement "iVar16 = iVar5 * 4;" (assignment_expression "iVar16 = iVar5 * 4" identifier = (binary_expression "iVar5 * 4" identifier * number_literal)) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));" (assignment_expression "iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16))" identifier = (call_expression "(**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16))" (parenthesized_expression "(**(code **)(pcVar35 + 0x36d08))" ( (pointer_expression "**(code **)(pcVar35 + 0x36d08)" * (pointer_expression "*(code **)(pcVar35 + 0x36d08)" * (cast_expression "(code **)(pcVar35 + 0x36d08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x36d08)" ( (binary_expression "pcVar35 + 0x36d08" identifier + number_literal) ))))) )) (argument_list "(iVar30,*(undefined4 *)(iVar15 + iVar16))" ( identifier , (pointer_expression "*(undefined4 *)(iVar15 + iVar16)" * (cast_expression "(undefined4 *)(iVar15 + iVar16)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + iVar16)" ( (binary_expression "iVar15 + iVar16" identifier + identifier) )))) )))) ;) (if_statement "if (iVar15 != 0) break;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }" if (parenthesized_expression "(piVar28[9] <= iVar5)" ( (binary_expression "piVar28[9] <= iVar5" (subscript_expression "piVar28[9]" identifier [ number_literal ]) <= identifier) )) (compound_statement "{\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }" { (expression_statement "iVar15 = piVar28[8];" (assignment_expression "iVar15 = piVar28[8]" identifier = (subscript_expression "piVar28[8]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_000790c0;" goto statement_identifier ;) })) (expression_statement "iVar15 = piVar28[3];" (assignment_expression "iVar15 = piVar28[3]" identifier = (subscript_expression "piVar28[3]" identifier [ number_literal ])) ;) })) }) (else_clause "else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }" else (compound_statement "{\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }" { (expression_statement "piVar9 = (int *)*piVar28;" (assignment_expression "piVar9 = (int *)*piVar28" identifier = (cast_expression "(int *)*piVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar28" * identifier))) ;) (if_statement "if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }" if (parenthesized_expression "(*piVar9 != iVar30)" ( (binary_expression "*piVar9 != iVar30" (pointer_expression "*piVar9" * identifier) != identifier) )) (compound_statement "{\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);" do (compound_statement "{\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          }" { (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (if_statement "if (iVar16 == iVar5) goto LAB_00078fc4;" if (parenthesized_expression "(iVar16 == iVar5)" ( (binary_expression "iVar16 == iVar5" identifier == identifier) )) (goto_statement "goto LAB_00078fc4;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar30 != *piVar9)" ( (binary_expression "iVar30 != *piVar9" identifier != (pointer_expression "*piVar9" * identifier)) )) ;) })) }))) (labeled_statement "LAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }" statement_identifier : (if_statement "if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(*(char *)(piVar28 + 4) < '\0')" ( (binary_expression "*(char *)(piVar28 + 4) < '\0'" (pointer_expression "*(char *)(piVar28 + 4)" * (cast_expression "(char *)(piVar28 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar28 + 4)" ( (binary_expression "piVar28 + 4" identifier + number_literal) )))) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (return_statement "return puVar19;" return identifier ;) })))) })))) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (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 *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ]) | (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & 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 { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (unary_expression ~ (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) })) (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 = (binary_expression IDENT + LIT)) ;) (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 *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( 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 { (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 (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (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 *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( 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 = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) ))) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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 = 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) )))) = (char_literal ' escape_sequence ')) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) ))) < LIT) )) && (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + IDENT) + LIT) )))) , (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (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) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)))) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , 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 ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT . field_identifier))) )))) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = (char_literal ' escape_sequence ')) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + LIT) < LIT) ))))) ;) (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 *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) )))) = (char_literal ' escape_sequence ')) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) )))) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) || (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) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier))) )))) = (char_literal ' escape_sequence ')) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT . field_identifier))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * IDENT)) )))) = (char_literal ' escape_sequence ')) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (field_expression IDENT . field_identifier))) )))) = (char_literal ' escape_sequence ')) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , LIT ))))) ;) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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 *)) ) (pointer_expression & IDENT))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) 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 *)) ) (pointer_expression * IDENT))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (compound_statement { (return_statement return (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 < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) < LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (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))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < LIT) ))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }))))))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression IDENT ^ LIT) ))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) != IDENT) )) ;) (return_statement return IDENT ;) })) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (subscript_expression IDENT [ LIT ]) ]) != (char_literal ' escape_sequence ')) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (subscript_expression IDENT [ LIT ]) ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return IDENT ;) })) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (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 = (subscript_expression IDENT [ LIT ])) ;) (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 (binary_expression IDENT == LIT) && (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (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 (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) ))))) ))) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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 == IDENT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) ;) })) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) }))) (return_statement return IDENT ;) })))) })))) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })))
(function_definition "uint * FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)\n\n{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  byte *pbVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  char cVar13;\n  byte *pbVar12;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  undefined4 *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint *puVar23;\n  uint *puVar24;\n  uint *puVar25;\n  uint *puVar26;\n  uint *puVar27;\n  int *piVar28;\n  undefined *puVar29;\n  int iVar30;\n  uint uVar31;\n  uint *unaff_s5;\n  uint *unaff_s6;\n  byte *pbVar32;\n  undefined *puVar33;\n  undefined *puVar34;\n  code *pcVar35;\n  uint *puStack_1c8;\n  uint auStack_1a8 [3];\n  undefined4 uStack_19c;\n  uint *puStack_9c;\n  int iStack_98;\n  undefined *puStack_94;\n  undefined *puStack_90;\n  int *piStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  uint *puStack_78;\n  code *pcStack_74;\n  uint **local_60;\n  uint *local_5c;\n  undefined4 local_58;\n  uint *local_40;\n  uint *local_3c;\n  undefined1 local_38;\n  uint *puStack_34;\n  undefined1 local_30;\n  undefined4 *local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  puVar19 = (uint *)&DAT_00000001;\n  local_40 = (uint *)0x0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar29 = (undefined *)(uint)param_5;\n  puVar17 = param_3;\n  puVar25 = param_4;\n  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }\n  pcVar35 = FUN_000788a0;\n  puVar18 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puVar34 = puVar33 + 0x3eb90;\n  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);\n  puStack_94 = puVar3;\n  piVar28 = (int *)*puVar18;\n  puStack_9c = (uint *)*puVar14;\n  piStack_8c = param_6;\n  if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }\n  puVar21 = (uint *)*puVar19;\n  iVar5 = 0;\n  puVar26 = puStack_9c;\n  puVar23 = puVar17;\n  puVar24 = puVar17;\n  puVar27 = puVar25;\n  iStack_98 = param_1;\n  puStack_90 = puVar29;\n  puStack_88 = param_4;\n  puStack_84 = puVar4;\n  puStack_80 = unaff_s6;\n  puStack_7c = param_2;\n  puStack_78 = puVar7;\n  pcStack_74 = pcVar35;\n  if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }\nLAB_00078a1c:\n  puVar23 = puVar24;\n  if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }\nLAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);\n  (*pcVar35)();\n  puVar26 = puVar26 + (int)puVar23 * 2;\n  uVar20 = (uint)*(byte *)(puVar26 + 1);\n  if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }\n  return (uint *)0x0;\n}" (type_identifier "uint") (pointer_declarator "* FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)" (* "*") (function_declarator "FUN_0007854c(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)" (identifier "FUN_0007854c") (parameter_list "(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint *param_4" (type_identifier "uint") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "byte param_5" (type_identifier "byte") (identifier "param_5")) (, ",") (parameter_declaration "int *param_6" (primitive_type "int") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  byte bVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  byte *pbVar8;\n  int *piVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  char cVar13;\n  byte *pbVar12;\n  undefined4 *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  undefined4 *puVar18;\n  uint *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  uint *puVar23;\n  uint *puVar24;\n  uint *puVar25;\n  uint *puVar26;\n  uint *puVar27;\n  int *piVar28;\n  undefined *puVar29;\n  int iVar30;\n  uint uVar31;\n  uint *unaff_s5;\n  uint *unaff_s6;\n  byte *pbVar32;\n  undefined *puVar33;\n  undefined *puVar34;\n  code *pcVar35;\n  uint *puStack_1c8;\n  uint auStack_1a8 [3];\n  undefined4 uStack_19c;\n  uint *puStack_9c;\n  int iStack_98;\n  undefined *puStack_94;\n  undefined *puStack_90;\n  int *piStack_8c;\n  uint *puStack_88;\n  uint *puStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  uint *puStack_78;\n  code *pcStack_74;\n  uint **local_60;\n  uint *local_5c;\n  undefined4 local_58;\n  uint *local_40;\n  uint *local_3c;\n  undefined1 local_38;\n  uint *puStack_34;\n  undefined1 local_30;\n  undefined4 *local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_000afc3c;\n  puVar19 = (uint *)&DAT_00000001;\n  local_40 = (uint *)0x0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;\n  puVar29 = (undefined *)(uint)param_5;\n  puVar17 = param_3;\n  puVar25 = param_4;\n  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);\n  if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }\n  if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }\n  pcVar35 = FUN_000788a0;\n  puVar18 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000afbd4;\n  (*(code *)PTR___stack_chk_fail_000afbd4)();\n  puVar34 = puVar33 + 0x3eb90;\n  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);\n  puStack_94 = puVar3;\n  piVar28 = (int *)*puVar18;\n  puStack_9c = (uint *)*puVar14;\n  piStack_8c = param_6;\n  if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }\n  puVar21 = (uint *)*puVar19;\n  iVar5 = 0;\n  puVar26 = puStack_9c;\n  puVar23 = puVar17;\n  puVar24 = puVar17;\n  puVar27 = puVar25;\n  iStack_98 = param_1;\n  puStack_90 = puVar29;\n  puStack_88 = param_4;\n  puStack_84 = puVar4;\n  puStack_80 = unaff_s6;\n  puStack_7c = param_2;\n  puStack_78 = puVar7;\n  pcStack_74 = pcVar35;\n  if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }\nLAB_00078a1c:\n  puVar23 = puVar24;\n  if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }\nLAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);\n  (*pcVar35)();\n  puVar26 = puVar26 + (int)puVar23 * 2;\n  uVar20 = (uint)*(byte *)(puVar26 + 1);\n  if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }\n  return (uint *)0x0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "char cVar13;" (primitive_type "char") (identifier "cVar13") (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "undefined4 *puVar14;" (type_identifier "undefined4") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "uint *puVar17;" (type_identifier "uint") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "undefined4 *puVar18;" (type_identifier "undefined4") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "uint *puVar19;" (type_identifier "uint") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "uint *puVar21;" (type_identifier "uint") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "uint *puVar23;" (type_identifier "uint") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "uint *puVar24;" (type_identifier "uint") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "uint *puVar25;" (type_identifier "uint") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "uint *puVar26;" (type_identifier "uint") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "uint *puVar27;" (type_identifier "uint") (pointer_declarator "*puVar27" (* "*") (identifier "puVar27")) (; ";")) (declaration "int *piVar28;" (primitive_type "int") (pointer_declarator "*piVar28" (* "*") (identifier "piVar28")) (; ";")) (declaration "undefined *puVar29;" (type_identifier "undefined") (pointer_declarator "*puVar29" (* "*") (identifier "puVar29")) (; ";")) (declaration "int iVar30;" (primitive_type "int") (identifier "iVar30") (; ";")) (declaration "uint uVar31;" (type_identifier "uint") (identifier "uVar31") (; ";")) (declaration "uint *unaff_s5;" (type_identifier "uint") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "uint *unaff_s6;" (type_identifier "uint") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "byte *pbVar32;" (type_identifier "byte") (pointer_declarator "*pbVar32" (* "*") (identifier "pbVar32")) (; ";")) (declaration "undefined *puVar33;" (type_identifier "undefined") (pointer_declarator "*puVar33" (* "*") (identifier "puVar33")) (; ";")) (declaration "undefined *puVar34;" (type_identifier "undefined") (pointer_declarator "*puVar34" (* "*") (identifier "puVar34")) (; ";")) (declaration "code *pcVar35;" (type_identifier "code") (pointer_declarator "*pcVar35" (* "*") (identifier "pcVar35")) (; ";")) (declaration "uint *puStack_1c8;" (type_identifier "uint") (pointer_declarator "*puStack_1c8" (* "*") (identifier "puStack_1c8")) (; ";")) (declaration "uint auStack_1a8 [3];" (type_identifier "uint") (array_declarator "auStack_1a8 [3]" (identifier "auStack_1a8") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 uStack_19c;" (type_identifier "undefined4") (identifier "uStack_19c") (; ";")) (declaration "uint *puStack_9c;" (type_identifier "uint") (pointer_declarator "*puStack_9c" (* "*") (identifier "puStack_9c")) (; ";")) (declaration "int iStack_98;" (primitive_type "int") (identifier "iStack_98") (; ";")) (declaration "undefined *puStack_94;" (type_identifier "undefined") (pointer_declarator "*puStack_94" (* "*") (identifier "puStack_94")) (; ";")) (declaration "undefined *puStack_90;" (type_identifier "undefined") (pointer_declarator "*puStack_90" (* "*") (identifier "puStack_90")) (; ";")) (declaration "int *piStack_8c;" (primitive_type "int") (pointer_declarator "*piStack_8c" (* "*") (identifier "piStack_8c")) (; ";")) (declaration "uint *puStack_88;" (type_identifier "uint") (pointer_declarator "*puStack_88" (* "*") (identifier "puStack_88")) (; ";")) (declaration "uint *puStack_84;" (type_identifier "uint") (pointer_declarator "*puStack_84" (* "*") (identifier "puStack_84")) (; ";")) (declaration "uint *puStack_80;" (type_identifier "uint") (pointer_declarator "*puStack_80" (* "*") (identifier "puStack_80")) (; ";")) (declaration "uint *puStack_7c;" (type_identifier "uint") (pointer_declarator "*puStack_7c" (* "*") (identifier "puStack_7c")) (; ";")) (declaration "uint *puStack_78;" (type_identifier "uint") (pointer_declarator "*puStack_78" (* "*") (identifier "puStack_78")) (; ";")) (declaration "code *pcStack_74;" (type_identifier "code") (pointer_declarator "*pcStack_74" (* "*") (identifier "pcStack_74")) (; ";")) (declaration "uint **local_60;" (type_identifier "uint") (pointer_declarator "**local_60" (* "*") (pointer_declarator "*local_60" (* "*") (identifier "local_60"))) (; ";")) (declaration "uint *local_5c;" (type_identifier "uint") (pointer_declarator "*local_5c" (* "*") (identifier "local_5c")) (; ";")) (declaration "undefined4 local_58;" (type_identifier "undefined4") (identifier "local_58") (; ";")) (declaration "uint *local_40;" (type_identifier "uint") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "uint *local_3c;" (type_identifier "uint") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "undefined1 local_38;" (type_identifier "undefined1") (identifier "local_38") (; ";")) (declaration "uint *puStack_34;" (type_identifier "uint") (pointer_declarator "*puStack_34" (* "*") (identifier "puStack_34")) (; ";")) (declaration "undefined1 local_30;" (type_identifier "undefined1") (identifier "local_30") (; ";")) (declaration "undefined4 *local_2c;" (type_identifier "undefined4") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_000afc3c;" (assignment_expression "puVar3 = PTR___stack_chk_guard_000afc3c" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_000afc3c")) (; ";")) (expression_statement "puVar19 = (uint *)&DAT_00000001;" (assignment_expression "puVar19 = (uint *)&DAT_00000001" (identifier "puVar19") (= "=") (cast_expression "(uint *)&DAT_00000001" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000001" (& "&") (identifier "DAT_00000001")))) (; ";")) (expression_statement "local_40 = (uint *)0x0;" (assignment_expression "local_40 = (uint *)0x0" (identifier "local_40") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;" (assignment_expression "local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c" (identifier "local_2c") (= "=") (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_000afc3c" (* "*") (cast_expression "(undefined4 **)PTR___stack_chk_guard_000afc3c" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_000afc3c")))) (; ";")) (expression_statement "puVar29 = (undefined *)(uint)param_5;" (assignment_expression "puVar29 = (undefined *)(uint)param_5" (identifier "puVar29") (= "=") (cast_expression "(undefined *)(uint)param_5" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5")))) (; ";")) (expression_statement "puVar17 = param_3;" (assignment_expression "puVar17 = param_3" (identifier "puVar17") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar25 = param_4;" (assignment_expression "puVar25 = param_4" (identifier "puVar25") (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);" (assignment_expression "puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(*(code *)PTR_calloc_000afdb8)(0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_calloc_000afdb8)(0x20)" (parenthesized_expression "(*(code *)PTR_calloc_000afdb8)" (( "(") (pointer_expression "*(code *)PTR_calloc_000afdb8" (* "*") (cast_expression "(code *)PTR_calloc_000afdb8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_calloc_000afdb8"))) () ")")) (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")"))))) (; ";")) (if_statement "if (puVar4 == (uint *)0x0) {\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }\n  else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(puVar4 == (uint *)0x0)" (( "(") (binary_expression "puVar4 == (uint *)0x0" (identifier "puVar4") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00078814:\n    puVar4 = unaff_s5;\n    puVar7 = (uint *)0x0;\n    *param_6 = 0xc;\n  }" ({ "{") (labeled_statement "LAB_00078814:\n    puVar4 = unaff_s5;" (statement_identifier "LAB_00078814") (: ":") (expression_statement "puVar4 = unaff_s5;" (assignment_expression "puVar4 = unaff_s5" (identifier "puVar4") (= "=") (identifier "unaff_s5")) (; ";"))) (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*param_6 = 0xc;" (assignment_expression "*param_6 = 0xc" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0xc")) (; ";")) (} "}")) (else_clause "else {\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }" (else "else") (compound_statement "{\n    puVar19 = (uint *)&DAT_00000001;\n    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);\n    if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }\n  }" ({ "{") (expression_statement "puVar19 = (uint *)&DAT_00000001;" (assignment_expression "puVar19 = (uint *)&DAT_00000001" (identifier "puVar19") (= "=") (cast_expression "(uint *)&DAT_00000001" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000001" (& "&") (identifier "DAT_00000001")))) (; ";")) (expression_statement "unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);" (assignment_expression "unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28)" (identifier "unaff_s6") (= "=") (cast_expression "(uint *)(*(code *)PTR_calloc_000afdb8)(0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_calloc_000afdb8)(0x28)" (parenthesized_expression "(*(code *)PTR_calloc_000afdb8)" (( "(") (pointer_expression "*(code *)PTR_calloc_000afdb8" (* "*") (cast_expression "(code *)PTR_calloc_000afdb8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_calloc_000afdb8"))) () ")")) (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")"))))) (; ";")) (if_statement "if (unaff_s6 == (uint *)0x0) {\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }\n    else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }" (if "if") (parenthesized_expression "(unaff_s6 == (uint *)0x0)" (( "(") (binary_expression "unaff_s6 == (uint *)0x0" (identifier "unaff_s6") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      puVar7 = (uint *)0x0;\n      (*(code *)PTR_free_000afd08)(puVar4);\n      *param_6 = 0xc;\n    }" ({ "{") (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "(*(code *)PTR_free_000afd08)(puVar4);" (call_expression "(*(code *)PTR_free_000afd08)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" (( "(") (pointer_expression "*(code *)PTR_free_000afd08" (* "*") (cast_expression "(code *)PTR_free_000afd08" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000afd08"))) () ")")) (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";")) (expression_statement "*param_6 = 0xc;" (assignment_expression "*param_6 = 0xc" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (number_literal "0xc")) (; ";")) (} "}")) (else_clause "else {\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }" (else "else") (compound_statement "{\n      local_60 = &local_40;\n      puVar25 = unaff_s6 + 9;\n      puVar17 = unaff_s6 + 3;\n      local_58 = 0;\n      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);\n      puVar19 = puVar4;\n      local_5c = param_3;\n      iVar5 = FUN_00077b04(param_2);\n      if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }\n    }" ({ "{") (expression_statement "local_60 = &local_40;" (assignment_expression "local_60 = &local_40" (identifier "local_60") (= "=") (pointer_expression "&local_40" (& "&") (identifier "local_40"))) (; ";")) (expression_statement "puVar25 = unaff_s6 + 9;" (assignment_expression "puVar25 = unaff_s6 + 9" (identifier "puVar25") (= "=") (binary_expression "unaff_s6 + 9" (identifier "unaff_s6") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "puVar17 = unaff_s6 + 3;" (assignment_expression "puVar17 = unaff_s6 + 3" (identifier "puVar17") (= "=") (binary_expression "unaff_s6 + 3" (identifier "unaff_s6") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);" (assignment_expression "*(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7)" (pointer_expression "*(byte *)(unaff_s6 + 4)" (* "*") (cast_expression "(byte *)(unaff_s6 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_s6 + 4)" (( "(") (binary_expression "unaff_s6 + 4" (identifier "unaff_s6") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7)" (binary_expression "*(byte *)(unaff_s6 + 4) & 0x7f" (pointer_expression "*(byte *)(unaff_s6 + 4)" (* "*") (cast_expression "(byte *)(unaff_s6 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_s6 + 4)" (( "(") (binary_expression "unaff_s6 + 4" (identifier "unaff_s6") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0x7f")) (| "|") (call_expression "(byte)(((uint)puVar29 & 1) << 7)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((uint)puVar29 & 1) << 7)" (( "(") (binary_expression "((uint)puVar29 & 1) << 7" (parenthesized_expression "((uint)puVar29 & 1)" (( "(") (binary_expression "(uint)puVar29 & 1" (cast_expression "(uint)puVar29" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar29")) (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "7")) () ")"))))) (; ";")) (expression_statement "puVar19 = puVar4;" (assignment_expression "puVar19 = puVar4" (identifier "puVar19") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "local_5c = param_3;" (assignment_expression "local_5c = param_3" (identifier "local_5c") (= "=") (identifier "param_3")) (; ";")) (expression_statement "iVar5 = FUN_00077b04(param_2);" (assignment_expression "iVar5 = FUN_00077b04(param_2)" (identifier "iVar5") (= "=") (call_expression "FUN_00077b04(param_2)" (identifier "FUN_00077b04") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }\n      else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        cVar13 = *(char *)param_4;\n        while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }\n        puVar19 = puVar4;\n        if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }\n        if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }\n        param_4 = (uint *)(param_1 + 0x38);\n        param_2 = (uint *)(param_1 + 0x40);\n        puVar29 = PTR_FUN_000afa20 + 0x411c;\n        puVar25 = (uint *)0x0;\n        puVar17 = (uint *)0x0;\n        local_38 = 3;\n        puVar19 = param_2;\n        local_60 = &local_3c;\n        local_3c = puVar4;\n        puVar7 = (uint *)FUN_0007411c(param_4);\n        puVar26 = puVar25;\n        if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }\n        if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }\n      }" ({ "{") (expression_statement "cVar13 = *(char *)param_4;" (assignment_expression "cVar13 = *(char *)param_4" (identifier "cVar13") (= "=") (pointer_expression "*(char *)param_4" (* "*") (cast_expression "(char *)param_4" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")))) (; ";")) (while_statement "while (uVar20 = (uint)cVar13, uVar20 != 0) {\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }" (while "while") (parenthesized_expression "(uVar20 = (uint)cVar13, uVar20 != 0)" (( "(") (comma_expression "uVar20 = (uint)cVar13, uVar20 != 0" (assignment_expression "uVar20 = (uint)cVar13" (identifier "uVar20") (= "=") (cast_expression "(uint)cVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "cVar13"))) (, ",") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n          uVar6 = uVar20;\n          if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }\n          param_4 = (uint *)((int)param_4 + 1);\n          cVar13 = *(char *)param_4;\n          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);\n        }" ({ "{") (expression_statement "uVar6 = uVar20;" (assignment_expression "uVar6 = uVar20" (identifier "uVar6") (= "=") (identifier "uVar20")) (; ";")) (if_statement "if ((int)uVar20 < 0) {\n            uVar6 = uVar20 + 0x1f;\n          }" (if "if") (parenthesized_expression "((int)uVar20 < 0)" (( "(") (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar20")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            uVar6 = uVar20 + 0x1f;\n          }" ({ "{") (expression_statement "uVar6 = uVar20 + 0x1f;" (assignment_expression "uVar6 = uVar20 + 0x1f" (identifier "uVar6") (= "=") (binary_expression "uVar20 + 0x1f" (identifier "uVar20") (+ "+") (number_literal "0x1f"))) (; ";")) (} "}"))) (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")) () ")")))) (; ";")) (expression_statement "cVar13 = *(char *)param_4;" (assignment_expression "cVar13 = *(char *)param_4" (identifier "cVar13") (= "=") (pointer_expression "*(char *)param_4" (* "*") (cast_expression "(char *)param_4" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")))) (; ";")) (expression_statement "puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);" (assignment_expression "puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f)" (subscript_expression "puVar4[(int)uVar6 >> 5]" (identifier "puVar4") ([ "[") (binary_expression "(int)uVar6 >> 5" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "5")) (] "]")) (= "=") (binary_expression "puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f)" (subscript_expression "puVar4[(int)uVar6 >> 5]" (identifier "puVar4") ([ "[") (binary_expression "(int)uVar6 >> 5" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "5")) (] "]")) (| "|") (binary_expression "1 << (uVar20 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar20 & 0x1f)" (( "(") (binary_expression "uVar20 & 0x1f" (identifier "uVar20") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}"))) (expression_statement "puVar19 = puVar4;" (assignment_expression "puVar19 = puVar4" (identifier "puVar19") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (puVar29 != (undefined *)0x0) {\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }" (if "if") (parenthesized_expression "(puVar29 != (undefined *)0x0)" (( "(") (binary_expression "puVar29 != (undefined *)0x0" (identifier "puVar29") (!= "!=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);\n        }" ({ "{") (do_statement "do {\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          } while (puVar4 + 8 != puVar17);" (do "do") (compound_statement "{\n            puVar17 = puVar19 + 1;\n            *puVar19 = ~*puVar19;\n            puVar19 = puVar17;\n          }" ({ "{") (expression_statement "puVar17 = puVar19 + 1;" (assignment_expression "puVar17 = puVar19 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar19 = ~*puVar19;" (assignment_expression "*puVar19 = ~*puVar19" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (unary_expression "~*puVar19" (~ "~") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (expression_statement "puVar19 = puVar17;" (assignment_expression "puVar19 = puVar17" (identifier "puVar19") (= "=") (identifier "puVar17")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 + 8 != puVar17)" (( "(") (binary_expression "puVar4 + 8 != puVar17" (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8")) (!= "!=") (identifier "puVar17")) () ")")) (; ";")) (} "}"))) (if_statement "if (1 < *(int *)(param_1 + 0x5c)) {\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }" (if "if") (parenthesized_expression "(1 < *(int *)(param_1 + 0x5c))" (( "(") (binary_expression "1 < *(int *)(param_1 + 0x5c)" (number_literal "1") (< "<") (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")"))))) () ")")) (compound_statement "{\n          puVar17 = *(uint **)(param_1 + 0x3c);\n          puVar19 = puVar4;\n          do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);\n        }" ({ "{") (expression_statement "puVar17 = *(uint **)(param_1 + 0x3c);" (assignment_expression "puVar17 = *(uint **)(param_1 + 0x3c)" (identifier "puVar17") (= "=") (pointer_expression "*(uint **)(param_1 + 0x3c)" (* "*") (cast_expression "(uint **)(param_1 + 0x3c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "puVar19 = puVar4;" (assignment_expression "puVar19 = puVar4" (identifier "puVar19") (= "=") (identifier "puVar4")) (; ";")) (do_statement "do {\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          } while (puVar4 + 8 != puVar25);" (do "do") (compound_statement "{\n            puVar25 = puVar19 + 1;\n            uVar20 = *puVar17;\n            puVar17 = puVar17 + 1;\n            *puVar19 = *puVar19 & uVar20;\n            puVar19 = puVar25;\n          }" ({ "{") (expression_statement "puVar25 = puVar19 + 1;" (assignment_expression "puVar25 = puVar19 + 1" (identifier "puVar25") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar20 = *puVar17;" (assignment_expression "uVar20 = *puVar17" (identifier "uVar20") (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar19 = *puVar19 & uVar20;" (assignment_expression "*puVar19 = *puVar19 & uVar20" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "*puVar19 & uVar20" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (& "&") (identifier "uVar20"))) (; ";")) (expression_statement "puVar19 = puVar25;" (assignment_expression "puVar19 = puVar25" (identifier "puVar19") (= "=") (identifier "puVar25")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 + 8 != puVar25)" (( "(") (binary_expression "puVar4 + 8 != puVar25" (binary_expression "puVar4 + 8" (identifier "puVar4") (+ "+") (number_literal "8")) (!= "!=") (identifier "puVar25")) () ")")) (; ";")) (} "}"))) (expression_statement "param_4 = (uint *)(param_1 + 0x38);" (assignment_expression "param_4 = (uint *)(param_1 + 0x38)" (identifier "param_4") (= "=") (cast_expression "(uint *)(param_1 + 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (; ";")) (expression_statement "param_2 = (uint *)(param_1 + 0x40);" (assignment_expression "param_2 = (uint *)(param_1 + 0x40)" (identifier "param_2") (= "=") (cast_expression "(uint *)(param_1 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (; ";")) (expression_statement "puVar29 = PTR_FUN_000afa20 + 0x411c;" (assignment_expression "puVar29 = PTR_FUN_000afa20 + 0x411c" (identifier "puVar29") (= "=") (binary_expression "PTR_FUN_000afa20 + 0x411c" (identifier "PTR_FUN_000afa20") (+ "+") (number_literal "0x411c"))) (; ";")) (expression_statement "puVar25 = (uint *)0x0;" (assignment_expression "puVar25 = (uint *)0x0" (identifier "puVar25") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar17 = (uint *)0x0;" (assignment_expression "puVar17 = (uint *)0x0" (identifier "puVar17") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_38 = 3;" (assignment_expression "local_38 = 3" (identifier "local_38") (= "=") (number_literal "3")) (; ";")) (expression_statement "puVar19 = param_2;" (assignment_expression "puVar19 = param_2" (identifier "puVar19") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_60 = &local_3c;" (assignment_expression "local_60 = &local_3c" (identifier "local_60") (= "=") (pointer_expression "&local_3c" (& "&") (identifier "local_3c"))) (; ";")) (expression_statement "local_3c = puVar4;" (assignment_expression "local_3c = puVar4" (identifier "local_3c") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puVar7 = (uint *)FUN_0007411c(param_4);" (assignment_expression "puVar7 = (uint *)FUN_0007411c(param_4)" (identifier "puVar7") (= "=") (cast_expression "(uint *)FUN_0007411c(param_4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0007411c(param_4)" (identifier "FUN_0007411c") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")"))))) (; ";")) (expression_statement "puVar26 = puVar25;" (assignment_expression "puVar26 = puVar25" (identifier "puVar26") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (puVar7 == (uint *)0x0) {\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }" (if "if") (parenthesized_expression "(puVar7 == (uint *)0x0)" (( "(") (binary_expression "puVar7 == (uint *)0x0" (identifier "puVar7") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);\n          FUN_000724e4(unaff_s6);\n          puVar25 = puVar26;\n          unaff_s5 = puVar4;\n          goto LAB_00078814;\n        }" ({ "{") (labeled_statement "LAB_000787f0:\n          (*(code *)PTR_free_000afd08)(puVar4);" (statement_identifier "LAB_000787f0") (: ":") (expression_statement "(*(code *)PTR_free_000afd08)(puVar4);" (call_expression "(*(code *)PTR_free_000afd08)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" (( "(") (pointer_expression "*(code *)PTR_free_000afd08" (* "*") (cast_expression "(code *)PTR_free_000afd08" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000afd08"))) () ")")) (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";"))) (expression_statement "FUN_000724e4(unaff_s6);" (call_expression "FUN_000724e4(unaff_s6)" (identifier "FUN_000724e4") (argument_list "(unaff_s6)" (( "(") (identifier "unaff_s6") () ")"))) (; ";")) (expression_statement "puVar25 = puVar26;" (assignment_expression "puVar25 = puVar26" (identifier "puVar25") (= "=") (identifier "puVar26")) (; ";")) (expression_statement "unaff_s5 = puVar4;" (assignment_expression "unaff_s5 = puVar4" (identifier "unaff_s5") (= "=") (identifier "puVar4")) (; ";")) (goto_statement "goto LAB_00078814;" (goto "goto") (statement_identifier "LAB_00078814") (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x5c) < 2) {\n          FUN_000724e4(unaff_s6);\n        }\n        else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x5c) < 2)" (( "(") (binary_expression "*(int *)(param_1 + 0x5c) < 2" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n          FUN_000724e4(unaff_s6);\n        }" ({ "{") (expression_statement "FUN_000724e4(unaff_s6);" (call_expression "FUN_000724e4(unaff_s6)" (identifier "FUN_000724e4") (argument_list "(unaff_s6)" (( "(") (identifier "unaff_s6") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }" (else "else") (compound_statement "{\n          puVar26 = (uint *)0x0;\n          puVar17 = (uint *)0x0;\n          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;\n          local_38 = 6;\n          puVar19 = param_2;\n          local_60 = &local_3c;\n          local_3c = unaff_s6;\n          puVar25 = (uint *)FUN_0007411c(param_4);\n          if (puVar25 == (uint *)0x0) goto LAB_000787f0;\n          local_60 = &puStack_34;\n          local_30 = 10;\n          puVar19 = param_2;\n          puVar26 = (uint *)FUN_0007411c(param_4);\n          puVar17 = puVar7;\n          puVar7 = puVar26;\n        }" ({ "{") (expression_statement "puVar26 = (uint *)0x0;" (assignment_expression "puVar26 = (uint *)0x0" (identifier "puVar26") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar17 = (uint *)0x0;" (assignment_expression "puVar17 = (uint *)0x0" (identifier "puVar17") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;" (assignment_expression "*(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40" (pointer_expression "*(byte *)(param_1 + 0x58)" (* "*") (cast_expression "(byte *)(param_1 + 0x58)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (binary_expression "*(byte *)(param_1 + 0x58) & 0xbf | 0x40" (binary_expression "*(byte *)(param_1 + 0x58) & 0xbf" (pointer_expression "*(byte *)(param_1 + 0x58)" (* "*") (cast_expression "(byte *)(param_1 + 0x58)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (& "&") (number_literal "0xbf")) (| "|") (number_literal "0x40"))) (; ";")) (expression_statement "local_38 = 6;" (assignment_expression "local_38 = 6" (identifier "local_38") (= "=") (number_literal "6")) (; ";")) (expression_statement "puVar19 = param_2;" (assignment_expression "puVar19 = param_2" (identifier "puVar19") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_60 = &local_3c;" (assignment_expression "local_60 = &local_3c" (identifier "local_60") (= "=") (pointer_expression "&local_3c" (& "&") (identifier "local_3c"))) (; ";")) (expression_statement "local_3c = unaff_s6;" (assignment_expression "local_3c = unaff_s6" (identifier "local_3c") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "puVar25 = (uint *)FUN_0007411c(param_4);" (assignment_expression "puVar25 = (uint *)FUN_0007411c(param_4)" (identifier "puVar25") (= "=") (cast_expression "(uint *)FUN_0007411c(param_4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0007411c(param_4)" (identifier "FUN_0007411c") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")"))))) (; ";")) (if_statement "if (puVar25 == (uint *)0x0) goto LAB_000787f0;" (if "if") (parenthesized_expression "(puVar25 == (uint *)0x0)" (( "(") (binary_expression "puVar25 == (uint *)0x0" (identifier "puVar25") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000787f0;" (goto "goto") (statement_identifier "LAB_000787f0") (; ";"))) (expression_statement "local_60 = &puStack_34;" (assignment_expression "local_60 = &puStack_34" (identifier "local_60") (= "=") (pointer_expression "&puStack_34" (& "&") (identifier "puStack_34"))) (; ";")) (expression_statement "local_30 = 10;" (assignment_expression "local_30 = 10" (identifier "local_30") (= "=") (number_literal "10")) (; ";")) (expression_statement "puVar19 = param_2;" (assignment_expression "puVar19 = param_2" (identifier "puVar19") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar26 = (uint *)FUN_0007411c(param_4);" (assignment_expression "puVar26 = (uint *)FUN_0007411c(param_4)" (identifier "puVar26") (= "=") (cast_expression "(uint *)FUN_0007411c(param_4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0007411c(param_4)" (identifier "FUN_0007411c") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")"))))) (; ";")) (expression_statement "puVar17 = puVar7;" (assignment_expression "puVar17 = puVar7" (identifier "puVar17") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "puVar7 = puVar26;" (assignment_expression "puVar7 = puVar26" (identifier "puVar7") (= "=") (identifier "puVar26")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }" (else "else") (compound_statement "{\n        puVar7 = (uint *)0x0;\n        (*(code *)PTR_free_000afd08)(puVar4);\n        FUN_000724e4(unaff_s6);\n        *param_6 = iVar5;\n      }" ({ "{") (expression_statement "puVar7 = (uint *)0x0;" (assignment_expression "puVar7 = (uint *)0x0" (identifier "puVar7") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "(*(code *)PTR_free_000afd08)(puVar4);" (call_expression "(*(code *)PTR_free_000afd08)(puVar4)" (parenthesized_expression "(*(code *)PTR_free_000afd08)" (( "(") (pointer_expression "*(code *)PTR_free_000afd08" (* "*") (cast_expression "(code *)PTR_free_000afd08" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000afd08"))) () ")")) (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";")) (expression_statement "FUN_000724e4(unaff_s6);" (call_expression "FUN_000724e4(unaff_s6)" (identifier "FUN_000724e4") (argument_list "(unaff_s6)" (( "(") (identifier "unaff_s6") () ")"))) (; ";")) (expression_statement "*param_6 = iVar5;" (assignment_expression "*param_6 = iVar5" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "iVar5")) (; ";")) (} "}")))) (} "}")))) (} "}")))) (if_statement "if (local_2c == *(undefined4 **)puVar3) {\n    return puVar7;\n  }" (if "if") (parenthesized_expression "(local_2c == *(undefined4 **)puVar3)" (( "(") (binary_expression "local_2c == *(undefined4 **)puVar3" (identifier "local_2c") (== "==") (pointer_expression "*(undefined4 **)puVar3" (* "*") (cast_expression "(undefined4 **)puVar3" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar3")))) () ")")) (compound_statement "{\n    return puVar7;\n  }" ({ "{") (return_statement "return puVar7;" (return "return") (identifier "puVar7") (; ";")) (} "}"))) (expression_statement "pcVar35 = FUN_000788a0;" (assignment_expression "pcVar35 = FUN_000788a0" (identifier "pcVar35") (= "=") (identifier "FUN_000788a0")) (; ";")) (expression_statement "puVar18 = local_2c;" (assignment_expression "puVar18 = local_2c" (identifier "puVar18") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar33 = PTR___stack_chk_fail_000afbd4;" (assignment_expression "puVar33 = PTR___stack_chk_fail_000afbd4" (identifier "puVar33") (= "=") (identifier "PTR___stack_chk_fail_000afbd4")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000afbd4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000afbd4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000afbd4)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000afbd4" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000afbd4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000afbd4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar34 = puVar33 + 0x3eb90;" (assignment_expression "puVar34 = puVar33 + 0x3eb90" (identifier "puVar34") (= "=") (binary_expression "puVar33 + 0x3eb90" (identifier "puVar33") (+ "+") (number_literal "0x3eb90"))) (; ";")) (expression_statement "puVar14 = *(undefined4 **)(puVar33 + 0x3739c);" (assignment_expression "puVar14 = *(undefined4 **)(puVar33 + 0x3739c)" (identifier "puVar14") (= "=") (pointer_expression "*(undefined4 **)(puVar33 + 0x3739c)" (* "*") (cast_expression "(undefined4 **)(puVar33 + 0x3739c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x3739c)" (( "(") (binary_expression "puVar33 + 0x3739c" (identifier "puVar33") (+ "+") (number_literal "0x3739c")) () ")"))))) (; ";")) (expression_statement "puStack_94 = puVar3;" (assignment_expression "puStack_94 = puVar3" (identifier "puStack_94") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "piVar28 = (int *)*puVar18;" (assignment_expression "piVar28 = (int *)*puVar18" (identifier "piVar28") (= "=") (cast_expression "(int *)*puVar18" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar18" (* "*") (identifier "puVar18")))) (; ";")) (expression_statement "puStack_9c = (uint *)*puVar14;" (assignment_expression "puStack_9c = (uint *)*puVar14" (identifier "puStack_9c") (= "=") (cast_expression "(uint *)*puVar14" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) (; ";")) (expression_statement "piStack_8c = param_6;" (assignment_expression "piStack_8c = param_6" (identifier "piStack_8c") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (piVar28[0x17] == 1) {\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }\n  else {\n    uVar20 = 0;\n  }" (if "if") (parenthesized_expression "(piVar28[0x17] == 1)" (( "(") (binary_expression "piVar28[0x17] == 1" (subscript_expression "piVar28[0x17]" (identifier "piVar28") ([ "[") (number_literal "0x17") (] "]")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;\n  }" ({ "{") (expression_statement "uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;" (assignment_expression "uVar20 = (uint)(puVar18[3] << 9) >> 0x1f" (identifier "uVar20") (= "=") (binary_expression "(uint)(puVar18[3] << 9) >> 0x1f" (call_expression "(uint)(puVar18[3] << 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar18[3] << 9)" (( "(") (binary_expression "puVar18[3] << 9" (subscript_expression "puVar18[3]" (identifier "puVar18") ([ "[") (number_literal "3") (] "]")) (<< "<<") (number_literal "9")) () ")"))) (>> ">>") (number_literal "0x1f"))) (; ";")) (} "}")) (else_clause "else {\n    uVar20 = 0;\n  }" (else "else") (compound_statement "{\n    uVar20 = 0;\n  }" ({ "{") (expression_statement "uVar20 = 0;" (assignment_expression "uVar20 = 0" (identifier "uVar20") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" (identifier "puVar21") (= "=") (cast_expression "(uint *)*puVar19" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar26 = puStack_9c;" (assignment_expression "puVar26 = puStack_9c" (identifier "puVar26") (= "=") (identifier "puStack_9c")) (; ";")) (expression_statement "puVar23 = puVar17;" (assignment_expression "puVar23 = puVar17" (identifier "puVar23") (= "=") (identifier "puVar17")) (; ";")) (expression_statement "puVar24 = puVar17;" (assignment_expression "puVar24 = puVar17" (identifier "puVar24") (= "=") (identifier "puVar17")) (; ";")) (expression_statement "puVar27 = puVar25;" (assignment_expression "puVar27 = puVar25" (identifier "puVar27") (= "=") (identifier "puVar25")) (; ";")) (expression_statement "iStack_98 = param_1;" (assignment_expression "iStack_98 = param_1" (identifier "iStack_98") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puStack_90 = puVar29;" (assignment_expression "puStack_90 = puVar29" (identifier "puStack_90") (= "=") (identifier "puVar29")) (; ";")) (expression_statement "puStack_88 = param_4;" (assignment_expression "puStack_88 = param_4" (identifier "puStack_88") (= "=") (identifier "param_4")) (; ";")) (expression_statement "puStack_84 = puVar4;" (assignment_expression "puStack_84 = puVar4" (identifier "puStack_84") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puStack_80 = unaff_s6;" (assignment_expression "puStack_80 = unaff_s6" (identifier "puStack_80") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "puStack_7c = param_2;" (assignment_expression "puStack_7c = param_2" (identifier "puStack_7c") (= "=") (identifier "param_2")) (; ";")) (expression_statement "puStack_78 = puVar7;" (assignment_expression "puStack_78 = puVar7" (identifier "puStack_78") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "pcStack_74 = pcVar35;" (assignment_expression "pcStack_74 = pcVar35" (identifier "pcStack_74") (= "=") (identifier "pcVar35")) (; ";")) (if_statement "if (0 < (int)puVar21) {\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }" (if "if") (parenthesized_expression "(0 < (int)puVar21)" (( "(") (binary_expression "0 < (int)puVar21" (number_literal "0") (< "<") (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21"))) () ")")) (compound_statement "{\n    do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);\n  }" ({ "{") (do_statement "do {\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    } while (iVar5 < (int)puVar21);" (do "do") (compound_statement "{\n      while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }\n      if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }\n      if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }\n      iVar5 = iVar5 + 1;\n      puVar24 = puVar23;\n    }" ({ "{") (while_statement "while( true ) {\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        puVar26 = (uint *)*puVar17;\n        uVar6 = puVar26[iVar5];\n        iVar15 = uVar6 * 8;\n        pbVar8 = (byte *)(*piVar28 + iVar15);\n        bVar1 = pbVar8[4];\n        if (bVar1 != 1) break;\n        bVar1 = *pbVar8;\n        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';\n        if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }\n        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }\nLAB_00078a08:\n        iVar5 = iVar5 + 1;\n        puVar26 = puStack_1c8;\n        puVar23 = puVar24;\n        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;\n      }" ({ "{") (expression_statement "puVar26 = (uint *)*puVar17;" (assignment_expression "puVar26 = (uint *)*puVar17" (identifier "puVar26") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (expression_statement "uVar6 = puVar26[iVar5];" (assignment_expression "uVar6 = puVar26[iVar5]" (identifier "uVar6") (= "=") (subscript_expression "puVar26[iVar5]" (identifier "puVar26") ([ "[") (identifier "iVar5") (] "]"))) (; ";")) (expression_statement "iVar15 = uVar6 * 8;" (assignment_expression "iVar15 = uVar6 * 8" (identifier "iVar15") (= "=") (binary_expression "uVar6 * 8" (identifier "uVar6") (* "*") (number_literal "8"))) (; ";")) (expression_statement "pbVar8 = (byte *)(*piVar28 + iVar15);" (assignment_expression "pbVar8 = (byte *)(*piVar28 + iVar15)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(*piVar28 + iVar15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar28 + iVar15)" (( "(") (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (+ "+") (identifier "iVar15")) () ")")))) (; ";")) (expression_statement "bVar1 = pbVar8[4];" (assignment_expression "bVar1 = pbVar8[4]" (identifier "bVar1") (= "=") (subscript_expression "pbVar8[4]" (identifier "pbVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (bVar1 != 1) break;" (if "if") (parenthesized_expression "(bVar1 != 1)" (( "(") (binary_expression "bVar1 != 1" (identifier "bVar1") (!= "!=") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" (identifier "bVar1") (= "=") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (; ";")) (expression_statement "*(char *)((int)puVar25 + (uint)bVar1) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)bVar1) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)bVar1)" (* "*") (cast_expression "(char *)((int)puVar25 + (uint)bVar1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + (uint)bVar1)" (( "(") (binary_expression "(int)puVar25 + (uint)bVar1" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) () ")")))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (if_statement "if (uVar20 != 0) {\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';\n        }" ({ "{") (expression_statement "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();" (assignment_expression "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))()" (identifier "piVar9") (= "=") (cast_expression "(int *)(**(code **)(puVar33 + 0x372e0))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar33 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar33 + 0x372e0))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x372e0)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x372e0)" (* "*") (cast_expression "(code **)(puVar33 + 0x372e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x372e0)" (( "(") (binary_expression "puVar33 + 0x372e0" (identifier "puVar33") (+ "+") (number_literal "0x372e0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4))" (* "*") (cast_expression "(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4))" (( "(") (binary_expression "(int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (pointer_expression "*(int *)(*piVar9 + (uint)bVar1 * 4)" (* "*") (cast_expression "(int *)(*piVar9 + (uint)bVar1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar9 + (uint)bVar1 * 4)" (( "(") (binary_expression "*piVar9 + (uint)bVar1 * 4" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (* "*") (number_literal "4"))) () ")"))))) () ")")))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}"))) (if_statement "if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }\n        else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }" (if "if") (parenthesized_expression "(((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17]))" (( "(") (binary_expression "((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])" (parenthesized_expression "((int)(puVar18[3] << 9) < 0)" (( "(") (binary_expression "(int)(puVar18[3] << 9) < 0" (cast_expression "(int)(puVar18[3] << 9)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar18[3] << 9)" (( "(") (binary_expression "puVar18[3] << 9" (subscript_expression "puVar18[3]" (identifier "puVar18") ([ "[") (number_literal "3") (] "]")) (<< "<<") (number_literal "9")) () ")"))) (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(1 < piVar28[0x17])" (( "(") (binary_expression "1 < piVar28[0x17]" (number_literal "1") (< "<") (subscript_expression "piVar28[0x17]" (identifier "piVar28") ([ "[") (number_literal "0x17") (] "]"))) () ")"))) () ")")) (compound_statement "{\n          uVar6 = uVar6 + 1;\n          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);\n          if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }\n          puStack_1c8 = &uStack_19c;\n          puVar24 = auStack_1a8 + 1;\n          puVar26 = auStack_1a8;\n          auStack_1a8[1] = 0;\n          auStack_1a8[2] = 0;\n          puVar23 = puVar4;\n          puVar27 = puVar24;\n          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);\n          if (puVar7 != puVar4) goto LAB_00078a04;\n          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);\n          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);\n          puVar26 = puStack_1c8;\n          puVar23 = puVar24;\n          if (iVar15 == -1) goto LAB_00078a04;\n          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n          puVar21 = (uint *)*puVar19;\n        }" ({ "{") (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);" (assignment_expression "uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15)" (field_expression "uStack_19c._0_1_" (identifier "uStack_19c") (. ".") (field_identifier "_0_1_")) (= "=") (pointer_expression "*(byte *)(*piVar28 + iVar15)" (* "*") (cast_expression "(byte *)(*piVar28 + iVar15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar28 + iVar15)" (( "(") (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (+ "+") (identifier "iVar15")) () ")"))))) (; ";")) (if_statement "if ((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }\n          else {\n            puVar4 = (uint *)&DAT_00000001;\n          }" (if "if") (parenthesized_expression "((uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400))" (( "(") (binary_expression "(uVar6 < (uint)piVar28[2]) &&\n             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)" (parenthesized_expression "(uVar6 < (uint)piVar28[2])" (( "(") (binary_expression "uVar6 < (uint)piVar28[2]" (identifier "uVar6") (< "<") (cast_expression "(uint)piVar28[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar28[2]" (identifier "piVar28") ([ "[") (number_literal "2") (] "]")))) () ")")) (&& "&&") (parenthesized_expression "(pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)" (( "(") (comma_expression "pbVar8 = (byte *)(*piVar28 + iVar15 + 8),\n             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400" (assignment_expression "pbVar8 = (byte *)(*piVar28 + iVar15 + 8)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(*piVar28 + iVar15 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar28 + iVar15 + 8)" (( "(") (binary_expression "*piVar28 + iVar15 + 8" (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (+ "+") (identifier "iVar15")) (+ "+") (number_literal "8")) () ")")))) (, ",") (binary_expression "(*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400" (parenthesized_expression "(*(uint *)(pbVar8 + 4) & 0xff000400)" (( "(") (binary_expression "*(uint *)(pbVar8 + 4) & 0xff000400" (pointer_expression "*(uint *)(pbVar8 + 4)" (* "*") (cast_expression "(uint *)(pbVar8 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar8 + 4)" (( "(") (binary_expression "pbVar8 + 4" (identifier "pbVar8") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0xff000400")) () ")")) (== "==") (number_literal "0x1000400"))) () ")"))) () ")")) (compound_statement "{\n            pbVar12 = (byte *)((int)&uStack_19c + 1);\n            do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);\n            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);\n          }" ({ "{") (expression_statement "pbVar12 = (byte *)((int)&uStack_19c + 1);" (assignment_expression "pbVar12 = (byte *)((int)&uStack_19c + 1)" (identifier "pbVar12") (= "=") (cast_expression "(byte *)((int)&uStack_19c + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&uStack_19c + 1)" (( "(") (binary_expression "(int)&uStack_19c + 1" (cast_expression "(int)&uStack_19c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&uStack_19c" (& "&") (identifier "uStack_19c"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (do_statement "do {\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);" (do "do") (compound_statement "{\n              pbVar32 = pbVar12 + 1;\n              uVar6 = uVar6 + 1;\n              *pbVar12 = *pbVar8;\n              if ((uint)piVar28[2] <= uVar6) break;\n              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);\n              pbVar12 = pbVar32;\n            }" ({ "{") (expression_statement "pbVar32 = pbVar12 + 1;" (assignment_expression "pbVar32 = pbVar12 + 1" (identifier "pbVar32") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar12 = *pbVar8;" (assignment_expression "*pbVar12 = *pbVar8" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (= "=") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (; ";")) (if_statement "if ((uint)piVar28[2] <= uVar6) break;" (if "if") (parenthesized_expression "((uint)piVar28[2] <= uVar6)" (( "(") (binary_expression "(uint)piVar28[2] <= uVar6" (cast_expression "(uint)piVar28[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar28[2]" (identifier "piVar28") ([ "[") (number_literal "2") (] "]"))) (<= "<=") (identifier "uVar6")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar8 = (byte *)(*piVar28 + uVar6 * 8);" (assignment_expression "pbVar8 = (byte *)(*piVar28 + uVar6 * 8)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(*piVar28 + uVar6 * 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar28 + uVar6 * 8)" (( "(") (binary_expression "*piVar28 + uVar6 * 8" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (+ "+") (binary_expression "uVar6 * 8" (identifier "uVar6") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "pbVar12 = pbVar32;" (assignment_expression "pbVar12 = pbVar32" (identifier "pbVar12") (= "=") (identifier "pbVar32")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)" (( "(") (binary_expression "(*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400" (parenthesized_expression "(*(uint *)(pbVar8 + 4) & 0xff000400)" (( "(") (binary_expression "*(uint *)(pbVar8 + 4) & 0xff000400" (pointer_expression "*(uint *)(pbVar8 + 4)" (* "*") (cast_expression "(uint *)(pbVar8 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar8 + 4)" (( "(") (binary_expression "pbVar8 + 4" (identifier "pbVar8") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0xff000400")) () ")")) (== "==") (number_literal "0x1000400")) () ")")) (; ";")) (expression_statement "puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);" (assignment_expression "puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(pbVar32 + -(int)&uStack_19c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar32 + -(int)&uStack_19c)" (( "(") (binary_expression "pbVar32 + -(int)&uStack_19c" (identifier "pbVar32") (+ "+") (unary_expression "-(int)&uStack_19c" (- "-") (cast_expression "(int)&uStack_19c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&uStack_19c" (& "&") (identifier "uStack_19c"))))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            puVar4 = (uint *)&DAT_00000001;\n          }" (else "else") (compound_statement "{\n            puVar4 = (uint *)&DAT_00000001;\n          }" ({ "{") (expression_statement "puVar4 = (uint *)&DAT_00000001;" (assignment_expression "puVar4 = (uint *)&DAT_00000001" (identifier "puVar4") (= "=") (cast_expression "(uint *)&DAT_00000001" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000001" (& "&") (identifier "DAT_00000001")))) (; ";")) (} "}")))) (expression_statement "puStack_1c8 = &uStack_19c;" (assignment_expression "puStack_1c8 = &uStack_19c" (identifier "puStack_1c8") (= "=") (pointer_expression "&uStack_19c" (& "&") (identifier "uStack_19c"))) (; ";")) (expression_statement "puVar24 = auStack_1a8 + 1;" (assignment_expression "puVar24 = auStack_1a8 + 1" (identifier "puVar24") (= "=") (binary_expression "auStack_1a8 + 1" (identifier "auStack_1a8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar26 = auStack_1a8;" (assignment_expression "puVar26 = auStack_1a8" (identifier "puVar26") (= "=") (identifier "auStack_1a8")) (; ";")) (expression_statement "auStack_1a8[1] = 0;" (assignment_expression "auStack_1a8[1] = 0" (subscript_expression "auStack_1a8[1]" (identifier "auStack_1a8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_1a8[2] = 0;" (assignment_expression "auStack_1a8[2] = 0" (subscript_expression "auStack_1a8[2]" (identifier "auStack_1a8") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar23 = puVar4;" (assignment_expression "puVar23 = puVar4" (identifier "puVar23") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puVar27 = puVar24;" (assignment_expression "puVar27 = puVar24" (identifier "puVar27") (= "=") (identifier "puVar24")) (; ";")) (expression_statement "puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);" (assignment_expression "puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8)" (identifier "puVar7") (= "=") (cast_expression "(uint *)rpl_mbrtowc(puVar26,puStack_1c8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "rpl_mbrtowc(puVar26,puStack_1c8)" (identifier "rpl_mbrtowc") (argument_list "(puVar26,puStack_1c8)" (( "(") (identifier "puVar26") (, ",") (identifier "puStack_1c8") () ")"))))) (; ";")) (if_statement "if (puVar7 != puVar4) goto LAB_00078a04;" (if "if") (parenthesized_expression "(puVar7 != puVar4)" (( "(") (binary_expression "puVar7 != puVar4" (identifier "puVar7") (!= "!=") (identifier "puVar4")) () ")")) (goto_statement "goto LAB_00078a04;" (goto "goto") (statement_identifier "LAB_00078a04") (; ";"))) (expression_statement "uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);" (assignment_expression "uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0])" (identifier "uVar10") (= "=") (call_expression "(**(code **)(puVar33 + 0x372d8))(auStack_1a8[0])" (parenthesized_expression "(**(code **)(puVar33 + 0x372d8))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x372d8)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x372d8)" (* "*") (cast_expression "(code **)(puVar33 + 0x372d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x372d8)" (( "(") (binary_expression "puVar33 + 0x372d8" (identifier "puVar33") (+ "+") (number_literal "0x372d8")) () ")"))))) () ")")) (argument_list "(auStack_1a8[0])" (( "(") (subscript_expression "auStack_1a8[0]" (identifier "auStack_1a8") ([ "[") (number_literal "0") (] "]")) () ")")))) (; ";")) (expression_statement "iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);" (assignment_expression "iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10)" (identifier "iVar15") (= "=") (call_expression "(**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10)" (parenthesized_expression "(**(code **)(puVar33 + 0x3742c))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x3742c)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x3742c)" (* "*") (cast_expression "(code **)(puVar33 + 0x3742c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x3742c)" (( "(") (binary_expression "puVar33 + 0x3742c" (identifier "puVar33") (+ "+") (number_literal "0x3742c")) () ")"))))) () ")")) (argument_list "(puStack_1c8,uVar10)" (( "(") (identifier "puStack_1c8") (, ",") (identifier "uVar10") () ")")))) (; ";")) (expression_statement "puVar26 = puStack_1c8;" (assignment_expression "puVar26 = puStack_1c8" (identifier "puVar26") (= "=") (identifier "puStack_1c8")) (; ";")) (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" (identifier "puVar23") (= "=") (identifier "puVar24")) (; ";")) (if_statement "if (iVar15 == -1) goto LAB_00078a04;" (if "if") (parenthesized_expression "(iVar15 == -1)" (( "(") (binary_expression "iVar15 == -1" (identifier "iVar15") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_00078a04;" (goto "goto") (statement_identifier "LAB_00078a04") (; ";"))) (expression_statement "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" (* "*") (cast_expression "(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + (uint)uStack_19c._0_1_)" (( "(") (binary_expression "(int)puVar25 + (uint)uStack_19c._0_1_" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (cast_expression "(uint)uStack_19c._0_1_" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (field_expression "uStack_19c._0_1_" (identifier "uStack_19c") (. ".") (field_identifier "_0_1_")))) () ")")))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" (identifier "puVar21") (= "=") (cast_expression "(uint *)*puVar19" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (} "}")) (else_clause "else {\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }" (else "else") (compound_statement "{\nLAB_00078a04:\n          puVar21 = (uint *)*puVar19;\n          puStack_1c8 = puVar26;\n          puVar24 = puVar23;\n        }" ({ "{") (labeled_statement "LAB_00078a04:\n          puVar21 = (uint *)*puVar19;" (statement_identifier "LAB_00078a04") (: ":") (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" (identifier "puVar21") (= "=") (cast_expression "(uint *)*puVar19" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";"))) (expression_statement "puStack_1c8 = puVar26;" (assignment_expression "puStack_1c8 = puVar26" (identifier "puStack_1c8") (= "=") (identifier "puVar26")) (; ";")) (expression_statement "puVar24 = puVar23;" (assignment_expression "puVar24 = puVar23" (identifier "puVar24") (= "=") (identifier "puVar23")) (; ";")) (} "}")))) (labeled_statement "LAB_00078a08:\n        iVar5 = iVar5 + 1;" (statement_identifier "LAB_00078a08") (: ":") (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "puVar26 = puStack_1c8;" (assignment_expression "puVar26 = puStack_1c8" (identifier "puVar26") (= "=") (identifier "puStack_1c8")) (; ";")) (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" (identifier "puVar23") (= "=") (identifier "puVar24")) (; ";")) (if_statement "if ((int)puVar21 <= iVar5) goto LAB_00078a1c;" (if "if") (parenthesized_expression "((int)puVar21 <= iVar5)" (( "(") (binary_expression "(int)puVar21 <= iVar5" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (<= "<=") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_00078a1c;" (goto "goto") (statement_identifier "LAB_00078a1c") (; ";"))) (} "}"))) (if_statement "if (bVar1 == 3) {\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }" (if "if") (parenthesized_expression "(bVar1 == 3)" (( "(") (binary_expression "bVar1 == 3" (identifier "bVar1") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n        iVar30 = 0x20;\n        puStack_1c8 = (uint *)0x0;\n        while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }\n        goto LAB_00078a04;\n      }" ({ "{") (expression_statement "iVar30 = 0x20;" (assignment_expression "iVar30 = 0x20" (identifier "iVar30") (= "=") (number_literal "0x20")) (; ";")) (expression_statement "puStack_1c8 = (uint *)0x0;" (assignment_expression "puStack_1c8 = (uint *)0x0" (identifier "puStack_1c8") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (while_statement "while( true ) {\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          iVar16 = iVar30 + -0x20;\n          uVar6 = 0;\n          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);\n          do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);\n          iVar30 = iVar30 + 0x20;\n          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);\n          if (iVar30 == 0x120) break;\n          pbVar8 = (byte *)(*piVar28 + iVar15);\n        }" ({ "{") (expression_statement "iVar16 = iVar30 + -0x20;" (assignment_expression "iVar16 = iVar30 + -0x20" (identifier "iVar16") (= "=") (binary_expression "iVar30 + -0x20" (identifier "iVar30") (+ "+") (number_literal "-0x20"))) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);" (assignment_expression "uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8)" (identifier "uVar31") (= "=") (pointer_expression "*(uint *)(*(int *)pbVar8 + (int)puStack_1c8)" (* "*") (cast_expression "(uint *)(*(int *)pbVar8 + (int)puStack_1c8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)pbVar8 + (int)puStack_1c8)" (( "(") (binary_expression "*(int *)pbVar8 + (int)puStack_1c8" (pointer_expression "*(int *)pbVar8" (* "*") (cast_expression "(int *)pbVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar8"))) (+ "+") (cast_expression "(int)puStack_1c8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puStack_1c8"))) () ")"))))) (; ";")) (do_statement "do {\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          } while (iVar30 != iVar16);" (do "do") (compound_statement "{\n            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }\n            iVar16 = iVar16 + 1;\n            uVar6 = uVar6 + 1;\n          }" ({ "{") (if_statement "if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }" (if "if") (parenthesized_expression "(((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0))" (( "(") (binary_expression "((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&\n               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)" (parenthesized_expression "((uVar31 >> (uVar6 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(uVar31 >> (uVar6 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar31 >> (uVar6 & 0x1f) & 1)" (( "(") (binary_expression "uVar31 >> (uVar6 & 0x1f) & 1" (binary_expression "uVar31 >> (uVar6 & 0x1f)" (identifier "uVar31") (>> ">>") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)" (( "(") (comma_expression "*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0" (assignment_expression "*(char *)((int)puVar25 + iVar16) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + iVar16)" (* "*") (cast_expression "(char *)((int)puVar25 + iVar16)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar16)" (( "(") (binary_expression "(int)puVar25 + iVar16" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar16")) () ")")))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (, ",") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);\n              if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }\n            }" ({ "{") (expression_statement "puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);" (assignment_expression "puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180)" (identifier "puVar23") (= "=") (cast_expression "(uint *)(uint)(iVar16 + 0x80U < 0x180)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar16 + 0x80U < 0x180)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar16 + 0x80U < 0x180)" (( "(") (binary_expression "iVar16 + 0x80U < 0x180" (binary_expression "iVar16 + 0x80U" (identifier "iVar16") (+ "+") (number_literal "0x80U")) (< "<") (number_literal "0x180")) () ")"))))) (; ";")) (if_statement "if (puVar23 != (uint *)0x0) {\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }" (if "if") (parenthesized_expression "(puVar23 != (uint *)0x0)" (( "(") (binary_expression "puVar23 != (uint *)0x0" (identifier "puVar23") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar23 = (uint *)(iVar16 * 4);\n                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';\n              }" ({ "{") (expression_statement "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();" (assignment_expression "piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))()" (identifier "piVar9") (= "=") (cast_expression "(int *)(**(code **)(puVar33 + 0x372e0))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar33 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar33 + 0x372e0))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x372e0)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x372e0)" (* "*") (cast_expression "(code **)(puVar33 + 0x372e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x372e0)" (( "(") (binary_expression "puVar33 + 0x372e0" (identifier "puVar33") (+ "+") (number_literal "0x372e0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar23 = (uint *)(iVar16 * 4);" (assignment_expression "puVar23 = (uint *)(iVar16 * 4)" (identifier "puVar23") (= "=") (cast_expression "(uint *)(iVar16 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 * 4)" (( "(") (binary_expression "iVar16 * 4" (identifier "iVar16") (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "*(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23))" (* "*") (cast_expression "(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + *(int *)(*piVar9 + (int)puVar23))" (( "(") (binary_expression "(int)puVar25 + *(int *)(*piVar9 + (int)puVar23)" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (pointer_expression "*(int *)(*piVar9 + (int)puVar23)" (* "*") (cast_expression "(int *)(*piVar9 + (int)puVar23)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar9 + (int)puVar23)" (( "(") (binary_expression "*piVar9 + (int)puVar23" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23"))) () ")"))))) () ")")))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar30 != iVar16)" (( "(") (binary_expression "iVar30 != iVar16" (identifier "iVar30") (!= "!=") (identifier "iVar16")) () ")")) (; ";")) (expression_statement "iVar30 = iVar30 + 0x20;" (assignment_expression "iVar30 = iVar30 + 0x20" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 0x20" (identifier "iVar30") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "puStack_1c8 = (uint *)((int)puStack_1c8 + 4);" (assignment_expression "puStack_1c8 = (uint *)((int)puStack_1c8 + 4)" (identifier "puStack_1c8") (= "=") (cast_expression "(uint *)((int)puStack_1c8 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puStack_1c8 + 4)" (( "(") (binary_expression "(int)puStack_1c8 + 4" (cast_expression "(int)puStack_1c8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puStack_1c8")) (+ "+") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (iVar30 == 0x120) break;" (if "if") (parenthesized_expression "(iVar30 == 0x120)" (( "(") (binary_expression "iVar30 == 0x120" (identifier "iVar30") (== "==") (number_literal "0x120")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar8 = (byte *)(*piVar28 + iVar15);" (assignment_expression "pbVar8 = (byte *)(*piVar28 + iVar15)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(*piVar28 + iVar15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar28 + iVar15)" (( "(") (binary_expression "*piVar28 + iVar15" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (+ "+") (identifier "iVar15")) () ")")))) (; ";")) (} "}"))) (goto_statement "goto LAB_00078a04;" (goto "goto") (statement_identifier "LAB_00078a04") (; ";")) (} "}"))) (if_statement "if (bVar1 == 6) {\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }\n      else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }" (if "if") (parenthesized_expression "(bVar1 == 6)" (( "(") (binary_expression "bVar1 == 6" (identifier "bVar1") (== "==") (number_literal "6")) () ")")) (compound_statement "{\n        piVar9 = *(int **)pbVar8;\n        if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }\n        if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }\n      }" ({ "{") (expression_statement "piVar9 = *(int **)pbVar8;" (assignment_expression "piVar9 = *(int **)pbVar8" (identifier "piVar9") (= "=") (pointer_expression "*(int **)pbVar8" (* "*") (cast_expression "(int **)pbVar8" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "pbVar8")))) (; ";")) (if_statement "if ((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }" (if "if") (parenthesized_expression "((1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0))))" (( "(") (binary_expression "(1 < piVar28[0x17]) &&\n           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))" (parenthesized_expression "(1 < piVar28[0x17])" (( "(") (binary_expression "1 < piVar28[0x17]" (number_literal "1") (< "<") (subscript_expression "piVar28[0x17]" (identifier "piVar28") ([ "[") (number_literal "0x17") (] "]"))) () ")")) (&& "&&") (parenthesized_expression "(((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))" (( "(") (parenthesized_expression "((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0))" (( "(") (binary_expression "(piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)" (parenthesized_expression "(piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0'))" (( "(") (binary_expression "piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')" (binary_expression "piVar9[9] != 0" (subscript_expression "piVar9[9]" (identifier "piVar9") ([ "[") (number_literal "9") (] "]")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(*(char *)(piVar9 + 4) < '\0')" (( "(") (binary_expression "*(char *)(piVar9 + 4) < '\0'" (pointer_expression "*(char *)(piVar9 + 4)" (* "*") (cast_expression "(char *)(piVar9 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar9 + 4)" (( "(") (binary_expression "piVar9 + 4" (identifier "piVar9") (+ "+") (number_literal "4")) () ")")))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(piVar9[8] != 0)" (( "(") (binary_expression "piVar9[8] != 0" (subscript_expression "piVar9[8]" (identifier "piVar9") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;\n          do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');\n          puVar21 = (uint *)*puVar19;\n          goto LAB_00078a08;\n        }" ({ "{") (expression_statement "auStack_1a8[0] = auStack_1a8[0] & 0xffffff;" (assignment_expression "auStack_1a8[0] = auStack_1a8[0] & 0xffffff" (subscript_expression "auStack_1a8[0]" (identifier "auStack_1a8") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "auStack_1a8[0] & 0xffffff" (subscript_expression "auStack_1a8[0]" (identifier "auStack_1a8") ([ "[") (number_literal "0") (] "]")) (& "&") (number_literal "0xffffff"))) (; ";")) (do_statement "do {\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          } while (cVar13 != '\0');" (do "do") (compound_statement "{\n            puVar24 = (uint *)&DAT_00000001;\n            puStack_1c8 = (uint *)0x0;\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar27 = auStack_1a8 + 1;\n            iVar15 = rpl_mbrtowc(0,auStack_1a8);\n            if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }\n            cVar13 = auStack_1a8[0]._0_1_ + 1;\n            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);\n          }" ({ "{") (expression_statement "puVar24 = (uint *)&DAT_00000001;" (assignment_expression "puVar24 = (uint *)&DAT_00000001" (identifier "puVar24") (= "=") (cast_expression "(uint *)&DAT_00000001" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000001" (& "&") (identifier "DAT_00000001")))) (; ";")) (expression_statement "puStack_1c8 = (uint *)0x0;" (assignment_expression "puStack_1c8 = (uint *)0x0" (identifier "puStack_1c8") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "auStack_1a8[1] = 0;" (assignment_expression "auStack_1a8[1] = 0" (subscript_expression "auStack_1a8[1]" (identifier "auStack_1a8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_1a8[2] = 0;" (assignment_expression "auStack_1a8[2] = 0" (subscript_expression "auStack_1a8[2]" (identifier "auStack_1a8") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar27 = auStack_1a8 + 1;" (assignment_expression "puVar27 = auStack_1a8 + 1" (identifier "puVar27") (= "=") (binary_expression "auStack_1a8 + 1" (identifier "auStack_1a8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar15 = rpl_mbrtowc(0,auStack_1a8);" (assignment_expression "iVar15 = rpl_mbrtowc(0,auStack_1a8)" (identifier "iVar15") (= "=") (call_expression "rpl_mbrtowc(0,auStack_1a8)" (identifier "rpl_mbrtowc") (argument_list "(0,auStack_1a8)" (( "(") (number_literal "0") (, ",") (identifier "auStack_1a8") () ")")))) (; ";")) (if_statement "if (iVar15 == -2) {\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }" (if "if") (parenthesized_expression "(iVar15 == -2)" (( "(") (binary_expression "iVar15 == -2" (identifier "iVar15") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';\n            }" ({ "{") (expression_statement "*(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_)" (* "*") (cast_expression "(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + (uint)auStack_1a8[0]._0_1_)" (( "(") (binary_expression "(int)puVar25 + (uint)auStack_1a8[0]._0_1_" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (cast_expression "(uint)auStack_1a8[0]._0_1_" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (field_expression "auStack_1a8[0]._0_1_" (subscript_expression "auStack_1a8[0]" (identifier "auStack_1a8") ([ "[") (number_literal "0") (] "]")) (. ".") (field_identifier "_0_1_")))) () ")")))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}"))) (expression_statement "cVar13 = auStack_1a8[0]._0_1_ + 1;" (assignment_expression "cVar13 = auStack_1a8[0]._0_1_ + 1" (identifier "cVar13") (= "=") (binary_expression "auStack_1a8[0]._0_1_ + 1" (field_expression "auStack_1a8[0]._0_1_" (subscript_expression "auStack_1a8[0]" (identifier "auStack_1a8") ([ "[") (number_literal "0") (] "]")) (. ".") (field_identifier "_0_1_")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);" (assignment_expression "auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_)" (subscript_expression "auStack_1a8[0]" (identifier "auStack_1a8") ([ "[") (number_literal "0") (] "]")) (= "=") (call_expression "CONCAT13(cVar13,auStack_1a8[0]._1_3_)" (identifier "CONCAT13") (argument_list "(cVar13,auStack_1a8[0]._1_3_)" (( "(") (identifier "cVar13") (, ",") (field_expression "auStack_1a8[0]._1_3_" (subscript_expression "auStack_1a8[0]" (identifier "auStack_1a8") ([ "[") (number_literal "0") (] "]")) (. ".") (field_identifier "_1_3_")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar13 != '\0')" (( "(") (binary_expression "cVar13 != '\0'" (identifier "cVar13") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "puVar21 = (uint *)*puVar19;" (assignment_expression "puVar21 = (uint *)*puVar19" (identifier "puVar21") (= "=") (cast_expression "(uint *)*puVar19" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (goto_statement "goto LAB_00078a08;" (goto "goto") (statement_identifier "LAB_00078a08") (; ";")) (} "}"))) (if_statement "if (0 < piVar9[5]) {\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }" (if "if") (parenthesized_expression "(0 < piVar9[5])" (( "(") (binary_expression "0 < piVar9[5]" (number_literal "0") (< "<") (subscript_expression "piVar9[5]" (identifier "piVar9") ([ "[") (number_literal "5") (] "]"))) () ")")) (compound_statement "{\n          iVar15 = 0;\n          do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);\n          goto LAB_00078a04;\n        }" ({ "{") (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          } while (iVar15 < piVar9[5]);" (do "do") (compound_statement "{\n            auStack_1a8[1] = 0;\n            auStack_1a8[2] = 0;\n            puVar26 = &uStack_19c;\n            puVar23 = auStack_1a8 + 1;\n            iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));\n            if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }\n            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }\n            iVar15 = iVar15 + 1;\n          }" ({ "{") (expression_statement "auStack_1a8[1] = 0;" (assignment_expression "auStack_1a8[1] = 0" (subscript_expression "auStack_1a8[1]" (identifier "auStack_1a8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "auStack_1a8[2] = 0;" (assignment_expression "auStack_1a8[2] = 0" (subscript_expression "auStack_1a8[2]" (identifier "auStack_1a8") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar26 = &uStack_19c;" (assignment_expression "puVar26 = &uStack_19c" (identifier "puVar26") (= "=") (pointer_expression "&uStack_19c" (& "&") (identifier "uStack_19c"))) (; ";")) (expression_statement "puVar23 = auStack_1a8 + 1;" (assignment_expression "puVar23 = auStack_1a8 + 1" (identifier "puVar23") (= "=") (binary_expression "auStack_1a8 + 1" (identifier "auStack_1a8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));" (assignment_expression "iVar30 = (**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4))" (identifier "iVar30") (= "=") (call_expression "(**(code **)(puVar33 + 0x3742c))\n                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4))" (parenthesized_expression "(**(code **)(puVar33 + 0x3742c))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x3742c)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x3742c)" (* "*") (cast_expression "(code **)(puVar33 + 0x3742c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x3742c)" (( "(") (binary_expression "puVar33 + 0x3742c" (identifier "puVar33") (+ "+") (number_literal "0x3742c")) () ")"))))) () ")")) (argument_list "(&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4))" (( "(") (pointer_expression "&uStack_19c" (& "&") (identifier "uStack_19c")) (, ",") (pointer_expression "*(undefined4 *)(*piVar9 + iVar15 * 4)" (* "*") (cast_expression "(undefined4 *)(*piVar9 + iVar15 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar9 + iVar15 * 4)" (( "(") (binary_expression "*piVar9 + iVar15 * 4" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (binary_expression "iVar15 * 4" (identifier "iVar15") (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar30 != -1) {\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }" (if "if") (parenthesized_expression "(iVar30 != -1)" (( "(") (binary_expression "iVar30 != -1" (identifier "iVar30") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n              uVar6 = (uint)uStack_19c._0_1_;\n              *(char *)((int)puVar25 + uVar6) = '\x01';\n              if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }\n            }" ({ "{") (expression_statement "uVar6 = (uint)uStack_19c._0_1_;" (assignment_expression "uVar6 = (uint)uStack_19c._0_1_" (identifier "uVar6") (= "=") (cast_expression "(uint)uStack_19c._0_1_" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (field_expression "uStack_19c._0_1_" (identifier "uStack_19c") (. ".") (field_identifier "_0_1_")))) (; ";")) (expression_statement "*(char *)((int)puVar25 + uVar6) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + uVar6) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + uVar6)" (* "*") (cast_expression "(char *)((int)puVar25 + uVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + uVar6)" (( "(") (binary_expression "(int)puVar25 + uVar6" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "uVar6")) () ")")))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (if_statement "if (uVar20 != 0) {\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }" (if "if") (parenthesized_expression "(uVar20 != 0)" (( "(") (binary_expression "uVar20 != 0" (identifier "uVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();\n                puVar26 = (uint *)(*piVar11 + uVar6 * 4);\n                *(char *)((int)puVar25 + *puVar26) = '\x01';\n              }" ({ "{") (expression_statement "piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();" (assignment_expression "piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))()" (identifier "piVar11") (= "=") (cast_expression "(int *)(**(code **)(puVar33 + 0x372e0))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar33 + 0x372e0))()" (parenthesized_expression "(**(code **)(puVar33 + 0x372e0))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x372e0)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x372e0)" (* "*") (cast_expression "(code **)(puVar33 + 0x372e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x372e0)" (( "(") (binary_expression "puVar33 + 0x372e0" (identifier "puVar33") (+ "+") (number_literal "0x372e0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar26 = (uint *)(*piVar11 + uVar6 * 4);" (assignment_expression "puVar26 = (uint *)(*piVar11 + uVar6 * 4)" (identifier "puVar26") (= "=") (cast_expression "(uint *)(*piVar11 + uVar6 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar11 + uVar6 * 4)" (( "(") (binary_expression "*piVar11 + uVar6 * 4" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*(char *)((int)puVar25 + *puVar26) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + *puVar26) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + *puVar26)" (* "*") (cast_expression "(char *)((int)puVar25 + *puVar26)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + *puVar26)" (( "(") (binary_expression "(int)puVar25 + *puVar26" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (pointer_expression "*puVar26" (* "*") (identifier "puVar26"))) () ")")))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }" (if "if") (parenthesized_expression "(((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17]))" (( "(") (binary_expression "((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])" (parenthesized_expression "((puVar18[3] & 0x400000) != 0)" (( "(") (binary_expression "(puVar18[3] & 0x400000) != 0" (parenthesized_expression "(puVar18[3] & 0x400000)" (( "(") (binary_expression "puVar18[3] & 0x400000" (subscript_expression "puVar18[3]" (identifier "puVar18") ([ "[") (number_literal "3") (] "]")) (& "&") (number_literal "0x400000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(1 < piVar28[0x17])" (( "(") (binary_expression "1 < piVar28[0x17]" (number_literal "1") (< "<") (subscript_expression "piVar28[0x17]" (identifier "piVar28") ([ "[") (number_literal "0x17") (] "]"))) () ")"))) () ")")) (compound_statement "{\n              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));\n              puVar26 = &uStack_19c;\n              puVar23 = auStack_1a8 + 1;\n              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);\n              if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }\n            }" ({ "{") (expression_statement "uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));" (assignment_expression "uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4))" (identifier "uVar10") (= "=") (call_expression "(**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4))" (parenthesized_expression "(**(code **)(puVar33 + 0x372d8))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x372d8)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x372d8)" (* "*") (cast_expression "(code **)(puVar33 + 0x372d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x372d8)" (( "(") (binary_expression "puVar33 + 0x372d8" (identifier "puVar33") (+ "+") (number_literal "0x372d8")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(*piVar9 + iVar15 * 4))" (( "(") (pointer_expression "*(undefined4 *)(*piVar9 + iVar15 * 4)" (* "*") (cast_expression "(undefined4 *)(*piVar9 + iVar15 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar9 + iVar15 * 4)" (( "(") (binary_expression "*piVar9 + iVar15 * 4" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (binary_expression "iVar15 * 4" (identifier "iVar15") (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (expression_statement "puVar26 = &uStack_19c;" (assignment_expression "puVar26 = &uStack_19c" (identifier "puVar26") (= "=") (pointer_expression "&uStack_19c" (& "&") (identifier "uStack_19c"))) (; ";")) (expression_statement "puVar23 = auStack_1a8 + 1;" (assignment_expression "puVar23 = auStack_1a8 + 1" (identifier "puVar23") (= "=") (binary_expression "auStack_1a8 + 1" (identifier "auStack_1a8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);" (assignment_expression "iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10)" (identifier "iVar30") (= "=") (call_expression "(**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10)" (parenthesized_expression "(**(code **)(puVar33 + 0x3742c))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x3742c)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x3742c)" (* "*") (cast_expression "(code **)(puVar33 + 0x3742c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x3742c)" (( "(") (binary_expression "puVar33 + 0x3742c" (identifier "puVar33") (+ "+") (number_literal "0x3742c")) () ")"))))) () ")")) (argument_list "(&uStack_19c,uVar10)" (( "(") (pointer_expression "&uStack_19c" (& "&") (identifier "uStack_19c")) (, ",") (identifier "uVar10") () ")")))) (; ";")) (if_statement "if (iVar30 != -1) {\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }" (if "if") (parenthesized_expression "(iVar30 != -1)" (( "(") (binary_expression "iVar30 != -1" (identifier "iVar30") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';\n              }" ({ "{") (expression_statement "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';" (assignment_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01'" (pointer_expression "*(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" (* "*") (cast_expression "(char *)((int)puVar25 + (uint)uStack_19c._0_1_)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + (uint)uStack_19c._0_1_)" (( "(") (binary_expression "(int)puVar25 + (uint)uStack_19c._0_1_" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (cast_expression "(uint)uStack_19c._0_1_" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (field_expression "uStack_19c._0_1_" (identifier "uStack_19c") (. ".") (field_identifier "_0_1_")))) () ")")))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar15 < piVar9[5])" (( "(") (binary_expression "iVar15 < piVar9[5]" (identifier "iVar15") (< "<") (subscript_expression "piVar9[5]" (identifier "piVar9") ([ "[") (number_literal "5") (] "]"))) () ")")) (; ";")) (goto_statement "goto LAB_00078a04;" (goto "goto") (statement_identifier "LAB_00078a04") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }" (else "else") (compound_statement "{\n        if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }\n        if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }\n      }" ({ "{") (if_statement "if ((bVar1 & 0xfd) == 5) {\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }" (if "if") (parenthesized_expression "((bVar1 & 0xfd) == 5)" (( "(") (binary_expression "(bVar1 & 0xfd) == 5" (parenthesized_expression "(bVar1 & 0xfd)" (( "(") (binary_expression "bVar1 & 0xfd" (identifier "bVar1") (& "&") (number_literal "0xfd")) () ")")) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n          if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }\n          goto LAB_00078e4c;\n        }" ({ "{") (if_statement "if (puStack_9c == (uint *)*puVar14) {\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }" (if "if") (parenthesized_expression "(puStack_9c == (uint *)*puVar14)" (( "(") (binary_expression "puStack_9c == (uint *)*puVar14" (identifier "puStack_9c") (== "==") (cast_expression "(uint *)*puVar14" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) () ")")) (compound_statement "{\n                    \n                    \n            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);\n            return puVar19;\n          }" ({ "{") (expression_statement "puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);" (assignment_expression "puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100)" (identifier "puVar19") (= "=") (cast_expression "(uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100)" (parenthesized_expression "(**(code **)(puVar33 + 0x374f4))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x374f4)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x374f4)" (* "*") (cast_expression "(code **)(puVar33 + 0x374f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x374f4)" (( "(") (binary_expression "puVar33 + 0x374f4" (identifier "puVar33") (+ "+") (number_literal "0x374f4")) () ")"))))) () ")")) (argument_list "(puVar25,1,0x100)" (( "(") (identifier "puVar25") (, ",") (number_literal "1") (, ",") (number_literal "0x100") () ")"))))) (; ";")) (return_statement "return puVar19;" (return "return") (identifier "puVar19") (; ";")) (} "}"))) (goto_statement "goto LAB_00078e4c;" (goto "goto") (statement_identifier "LAB_00078e4c") (; ";")) (} "}"))) (if_statement "if (bVar1 == 2) {\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }" (if "if") (parenthesized_expression "(bVar1 == 2)" (( "(") (binary_expression "bVar1 == 2" (identifier "bVar1") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          puVar24 = (uint *)0x100;\n          puVar21 = (uint *)&DAT_00000001;\n          (**(code **)(puVar33 + 0x374f4))();\n          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;\n          puVar26 = puVar25;\n          break;\n        }" ({ "{") (expression_statement "puVar24 = (uint *)0x100;" (assignment_expression "puVar24 = (uint *)0x100" (identifier "puVar24") (= "=") (cast_expression "(uint *)0x100" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x100"))) (; ";")) (expression_statement "puVar21 = (uint *)&DAT_00000001;" (assignment_expression "puVar21 = (uint *)&DAT_00000001" (identifier "puVar21") (= "=") (cast_expression "(uint *)&DAT_00000001" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000001" (& "&") (identifier "DAT_00000001")))) (; ";")) (expression_statement "(**(code **)(puVar33 + 0x374f4))();" (call_expression "(**(code **)(puVar33 + 0x374f4))()" (parenthesized_expression "(**(code **)(puVar33 + 0x374f4))" (( "(") (pointer_expression "**(code **)(puVar33 + 0x374f4)" (* "*") (pointer_expression "*(code **)(puVar33 + 0x374f4)" (* "*") (cast_expression "(code **)(puVar33 + 0x374f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x374f4)" (( "(") (binary_expression "puVar33 + 0x374f4" (identifier "puVar33") (+ "+") (number_literal "0x374f4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;" (assignment_expression "*(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80" (pointer_expression "*(byte *)(puVar18 + 7)" (* "*") (cast_expression "(byte *)(puVar18 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 7)" (( "(") (binary_expression "puVar18 + 7" (identifier "puVar18") (+ "+") (number_literal "7")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar18 + 7) & 0x7f | 0x80" (binary_expression "*(byte *)(puVar18 + 7) & 0x7f" (pointer_expression "*(byte *)(puVar18 + 7)" (* "*") (cast_expression "(byte *)(puVar18 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar18 + 7)" (( "(") (binary_expression "puVar18 + 7" (identifier "puVar18") (+ "+") (number_literal "7")) () ")")))) (& "&") (number_literal "0x7f")) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "puVar26 = puVar25;" (assignment_expression "puVar26 = puVar25" (identifier "puVar26") (= "=") (identifier "puVar25")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar24 = puVar23;" (assignment_expression "puVar24 = puVar23" (identifier "puVar24") (= "=") (identifier "puVar23")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 < (int)puVar21)" (( "(") (binary_expression "iVar5 < (int)puVar21" (identifier "iVar5") (< "<") (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00078a1c:\n  puVar23 = puVar24;" (statement_identifier "LAB_00078a1c") (: ":") (expression_statement "puVar23 = puVar24;" (assignment_expression "puVar23 = puVar24" (identifier "puVar23") (= "=") (identifier "puVar24")) (; ";"))) (if_statement "if (puStack_9c == (uint *)*puVar14) {\n    return (uint *)*puVar14;\n  }" (if "if") (parenthesized_expression "(puStack_9c == (uint *)*puVar14)" (( "(") (binary_expression "puStack_9c == (uint *)*puVar14" (identifier "puStack_9c") (== "==") (cast_expression "(uint *)*puVar14" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) () ")")) (compound_statement "{\n    return (uint *)*puVar14;\n  }" ({ "{") (return_statement "return (uint *)*puVar14;" (return "return") (cast_expression "(uint *)*puVar14" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (} "}"))) (labeled_statement "LAB_00078e4c:\n  pcVar35 = *(code **)(puVar33 + 0x37334);" (statement_identifier "LAB_00078e4c") (: ":") (expression_statement "pcVar35 = *(code **)(puVar33 + 0x37334);" (assignment_expression "pcVar35 = *(code **)(puVar33 + 0x37334)" (identifier "pcVar35") (= "=") (pointer_expression "*(code **)(puVar33 + 0x37334)" (* "*") (cast_expression "(code **)(puVar33 + 0x37334)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + 0x37334)" (( "(") (binary_expression "puVar33 + 0x37334" (identifier "puVar33") (+ "+") (number_literal "0x37334")) () ")"))))) (; ";"))) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" (( "(") (pointer_expression "*pcVar35" (* "*") (identifier "pcVar35")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar26 = puVar26 + (int)puVar23 * 2;" (assignment_expression "puVar26 = puVar26 + (int)puVar23 * 2" (identifier "puVar26") (= "=") (binary_expression "puVar26 + (int)puVar23 * 2" (identifier "puVar26") (+ "+") (binary_expression "(int)puVar23 * 2" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (* "*") (number_literal "2")))) (; ";")) (expression_statement "uVar20 = (uint)*(byte *)(puVar26 + 1);" (assignment_expression "uVar20 = (uint)*(byte *)(puVar26 + 1)" (identifier "uVar20") (= "=") (binary_expression "(uint)*(byte *)(puVar26 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(puVar26 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 1)" (( "(") (binary_expression "puVar26 + 1" (identifier "puVar26") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if (uVar20 == 7) {\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }\n  else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" (if "if") (parenthesized_expression "(uVar20 == 7)" (( "(") (binary_expression "uVar20 == 7" (identifier "uVar20") (== "==") (number_literal "7")) () ")")) (compound_statement "{\n    pbVar8 = puVar34 + puVar27[1];\n    bVar1 = *pbVar8;\n    if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }\n    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }\n    bVar2 = pbVar8[1];\n    if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }\n  }" ({ "{") (expression_statement "pbVar8 = puVar34 + puVar27[1];" (assignment_expression "pbVar8 = puVar34 + puVar27[1]" (identifier "pbVar8") (= "=") (binary_expression "puVar34 + puVar27[1]" (identifier "puVar34") (+ "+") (subscript_expression "puVar27[1]" (identifier "puVar27") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" (identifier "bVar1") (= "=") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) (; ";")) (if_statement "if (bVar1 < 0xc2) {\n      return (uint *)0x0;\n    }" (if "if") (parenthesized_expression "(bVar1 < 0xc2)" (( "(") (binary_expression "bVar1 < 0xc2" (identifier "bVar1") (< "<") (number_literal "0xc2")) () ")")) (compound_statement "{\n      return (uint *)0x0;\n    }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {\n      return (uint *)0x0;\n    }" (if "if") (parenthesized_expression "((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91))" (( "(") (binary_expression "(int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)" (cast_expression "(int)puVar27[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar27[0xc]" (identifier "puVar27") ([ "[") (number_literal "0xc") (] "]"))) (<= "<=") (cast_expression "(int)(puVar33 + 0x3eb91)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar33 + 0x3eb91)" (( "(") (binary_expression "puVar33 + 0x3eb91" (identifier "puVar33") (+ "+") (number_literal "0x3eb91")) () ")")))) () ")")) (compound_statement "{\n      return (uint *)0x0;\n    }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "bVar2 = pbVar8[1];" (assignment_expression "bVar2 = pbVar8[1]" (identifier "bVar2") (= "=") (subscript_expression "pbVar8[1]" (identifier "pbVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (bVar1 < 0xe0) {\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }\n    else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }" (if "if") (parenthesized_expression "(bVar1 < 0xe0)" (( "(") (binary_expression "bVar1 < 0xe0" (identifier "bVar1") (< "<") (number_literal "0xe0")) () ")")) (compound_statement "{\n      if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }\n    }" ({ "{") (if_statement "if ((bVar2 ^ 0x80) < 0x40) {\n        return (uint *)0x2;\n      }" (if "if") (parenthesized_expression "((bVar2 ^ 0x80) < 0x40)" (( "(") (binary_expression "(bVar2 ^ 0x80) < 0x40" (parenthesized_expression "(bVar2 ^ 0x80)" (( "(") (binary_expression "bVar2 ^ 0x80" (identifier "bVar2") (^ "^") (number_literal "0x80")) () ")")) (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n        return (uint *)0x2;\n      }" ({ "{") (return_statement "return (uint *)0x2;" (return "return") (cast_expression "(uint *)0x2" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }" (else "else") (compound_statement "{\n      if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }\n      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];\n      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }\n    }" ({ "{") (if_statement "if (bVar1 < 0xf0) {\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }\n      else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" (if "if") (parenthesized_expression "(bVar1 < 0xf0)" (( "(") (binary_expression "bVar1 < 0xf0" (identifier "bVar1") (< "<") (number_literal "0xf0")) () ")")) (compound_statement "{\n        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x3;\n      }" ({ "{") (if_statement "if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "((bVar1 == 0xe0) && (bVar2 < 0xa0))" (( "(") (binary_expression "(bVar1 == 0xe0) && (bVar2 < 0xa0)" (parenthesized_expression "(bVar1 == 0xe0)" (( "(") (binary_expression "bVar1 == 0xe0" (identifier "bVar1") (== "==") (number_literal "0xe0")) () ")")) (&& "&&") (parenthesized_expression "(bVar2 < 0xa0)" (( "(") (binary_expression "bVar2 < 0xa0" (identifier "bVar2") (< "<") (number_literal "0xa0")) () ")"))) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "puVar19 = (uint *)0x3;" (assignment_expression "puVar19 = (uint *)0x3" (identifier "puVar19") (= "=") (cast_expression "(uint *)0x3" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (} "}")) (else_clause "else if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" (else "else") (if_statement "if (bVar1 < 0xf8) {\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }\n      else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" (if "if") (parenthesized_expression "(bVar1 < 0xf8)" (( "(") (binary_expression "bVar1 < 0xf8" (identifier "bVar1") (< "<") (number_literal "0xf8")) () ")")) (compound_statement "{\n        puVar19 = (uint *)&DAT_00000004;\n        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }\n      }" ({ "{") (expression_statement "puVar19 = (uint *)&DAT_00000004;" (assignment_expression "puVar19 = (uint *)&DAT_00000004" (identifier "puVar19") (= "=") (cast_expression "(uint *)&DAT_00000004" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000004" (& "&") (identifier "DAT_00000004")))) (; ";")) (if_statement "if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "((bVar1 == 0xf0) && (bVar2 < 0x90))" (( "(") (binary_expression "(bVar1 == 0xf0) && (bVar2 < 0x90)" (parenthesized_expression "(bVar1 == 0xf0)" (( "(") (binary_expression "bVar1 == 0xf0" (identifier "bVar1") (== "==") (number_literal "0xf0")) () ")")) (&& "&&") (parenthesized_expression "(bVar2 < 0x90)" (( "(") (binary_expression "bVar2 < 0x90" (identifier "bVar2") (< "<") (number_literal "0x90")) () ")"))) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" (else "else") (if_statement "if (bVar1 < 0xfc) {\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }\n      else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" (if "if") (parenthesized_expression "(bVar1 < 0xfc)" (( "(") (binary_expression "bVar1 < 0xfc" (identifier "bVar1") (< "<") (number_literal "0xfc")) () ")")) (compound_statement "{\n        puVar19 = (uint *)0x5;\n        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }\n      }" ({ "{") (expression_statement "puVar19 = (uint *)0x5;" (assignment_expression "puVar19 = (uint *)0x5" (identifier "puVar19") (= "=") (cast_expression "(uint *)0x5" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x5"))) (; ";")) (if_statement "if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "((bVar1 == 0xf8) && (bVar2 < 0x88))" (( "(") (binary_expression "(bVar1 == 0xf8) && (bVar2 < 0x88)" (parenthesized_expression "(bVar1 == 0xf8)" (( "(") (binary_expression "bVar1 == 0xf8" (identifier "bVar1") (== "==") (number_literal "0xf8")) () ")")) (&& "&&") (parenthesized_expression "(bVar2 < 0x88)" (( "(") (binary_expression "bVar2 < 0x88" (identifier "bVar2") (< "<") (number_literal "0x88")) () ")"))) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" (else "else") (compound_statement "{\n        if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }\n        puVar19 = (uint *)0x6;\n        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }\n      }" ({ "{") (if_statement "if (0xfd < bVar1) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(0xfd < bVar1)" (( "(") (binary_expression "0xfd < bVar1" (number_literal "0xfd") (< "<") (identifier "bVar1")) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "puVar19 = (uint *)0x6;" (assignment_expression "puVar19 = (uint *)0x6" (identifier "puVar19") (= "=") (cast_expression "(uint *)0x6" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x6"))) (; ";")) (if_statement "if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "((bVar1 == 0xfc) && (bVar2 < 0x84))" (( "(") (binary_expression "(bVar1 == 0xfc) && (bVar2 < 0x84)" (parenthesized_expression "(bVar1 == 0xfc)" (( "(") (binary_expression "bVar1 == 0xfc" (identifier "bVar1") (== "==") (number_literal "0xfc")) () ")")) (&& "&&") (parenthesized_expression "(bVar2 < 0x84)" (( "(") (binary_expression "bVar2 < 0x84" (identifier "bVar2") (< "<") (number_literal "0x84")) () ")"))) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")))))))) (expression_statement "pbVar12 = puVar33 + 0x3eb91 + puVar27[1];" (assignment_expression "pbVar12 = puVar33 + 0x3eb91 + puVar27[1]" (identifier "pbVar12") (= "=") (binary_expression "puVar33 + 0x3eb91 + puVar27[1]" (binary_expression "puVar33 + 0x3eb91" (identifier "puVar33") (+ "+") (number_literal "0x3eb91")) (+ "+") (subscript_expression "puVar27[1]" (identifier "puVar27") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }" (if "if") (parenthesized_expression "((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc])" (( "(") (binary_expression "(int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]" (cast_expression "(int)(puVar34 + (int)puVar19)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar34 + (int)puVar19)" (( "(") (binary_expression "puVar34 + (int)puVar19" (identifier "puVar34") (+ "+") (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19"))) () ")"))) (<= "<=") (cast_expression "(int)puVar27[0xc]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar27[0xc]" (identifier "puVar27") ([ "[") (number_literal "0xc") (] "]")))) () ")")) (compound_statement "{\n        do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);\n        return puVar19;\n      }" ({ "{") (do_statement "do {\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        } while (pbVar8 + (int)puVar19 != pbVar12);" (do "do") (compound_statement "{\n          bVar1 = *pbVar12;\n          pbVar12 = pbVar12 + 1;\n          if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }\n        }" ({ "{") (expression_statement "bVar1 = *pbVar12;" (assignment_expression "bVar1 = *pbVar12" (identifier "bVar1") (= "=") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0x3f < (bVar1 ^ 0x80)) {\n            return (uint *)0x0;\n          }" (if "if") (parenthesized_expression "(0x3f < (bVar1 ^ 0x80))" (( "(") (binary_expression "0x3f < (bVar1 ^ 0x80)" (number_literal "0x3f") (< "<") (parenthesized_expression "(bVar1 ^ 0x80)" (( "(") (binary_expression "bVar1 ^ 0x80" (identifier "bVar1") (^ "^") (number_literal "0x80")) () ")"))) () ")")) (compound_statement "{\n            return (uint *)0x0;\n          }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(pbVar8 + (int)puVar19 != pbVar12)" (( "(") (binary_expression "pbVar8 + (int)puVar19 != pbVar12" (binary_expression "pbVar8 + (int)puVar19" (identifier "pbVar8") (+ "+") (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19"))) (!= "!=") (identifier "pbVar12")) () ")")) (; ";")) (return_statement "return puVar19;" (return "return") (identifier "puVar19") (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" (else "else") (if_statement "if (puVar27[0x14] != 1) {\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" (if "if") (parenthesized_expression "(puVar27[0x14] != 1)" (( "(") (binary_expression "puVar27[0x14] != 1" (subscript_expression "puVar27[0x14]" (identifier "puVar27") ([ "[") (number_literal "0x14") (] "]")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);\n    if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }\n  }" ({ "{") (expression_statement "puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);" (assignment_expression "puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34)" (identifier "puVar19") (= "=") (cast_expression "(uint *)FUN_00072ef0(puVar27,puVar34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00072ef0(puVar27,puVar34)" (identifier "FUN_00072ef0") (argument_list "(puVar27,puVar34)" (( "(") (identifier "puVar27") (, ",") (identifier "puVar34") () ")"))))) (; ";")) (if_statement "if (uVar20 == 5) {\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }\n    else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" (if "if") (parenthesized_expression "(uVar20 == 5)" (( "(") (binary_expression "uVar20 == 5" (identifier "uVar20") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }\n    }" ({ "{") (if_statement "if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }" (if "if") (parenthesized_expression "((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n'))))" (( "(") (binary_expression "(1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))" (parenthesized_expression "(1 < (int)puVar19)" (( "(") (binary_expression "1 < (int)puVar19" (number_literal "1") (< "<") (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19"))) () ")")) (&& "&&") (parenthesized_expression "(((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))" (( "(") (parenthesized_expression "((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n'))" (( "(") (binary_expression "(*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')" (binary_expression "(*puVar21 & 0x40) != 0" (parenthesized_expression "(*puVar21 & 0x40)" (( "(") (binary_expression "*puVar21 & 0x40" (pointer_expression "*puVar21" (* "*") (identifier "puVar21")) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(puVar34[puVar27[1]] != '\n')" (( "(") (binary_expression "puVar34[puVar27[1]] != '\n'" (subscript_expression "puVar34[puVar27[1]]" (identifier "puVar34") ([ "[") (subscript_expression "puVar27[1]" (identifier "puVar27") ([ "[") (number_literal "1") (] "]")) (] "]")) (!= "!=") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }\n        if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }\n      }" ({ "{") (if_statement "if ((*puVar21 & 0x80) == 0) {\n          return puVar19;\n        }" (if "if") (parenthesized_expression "((*puVar21 & 0x80) == 0)" (( "(") (binary_expression "(*puVar21 & 0x80) == 0" (parenthesized_expression "(*puVar21 & 0x80)" (( "(") (binary_expression "*puVar21 & 0x80" (pointer_expression "*puVar21" (* "*") (identifier "puVar21")) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return puVar19;\n        }" ({ "{") (return_statement "return puVar19;" (return "return") (identifier "puVar19") (; ";")) (} "}"))) (if_statement "if (puVar34[puVar27[1]] != '\0') {\n          return puVar19;\n        }" (if "if") (parenthesized_expression "(puVar34[puVar27[1]] != '\0')" (( "(") (binary_expression "puVar34[puVar27[1]] != '\0'" (subscript_expression "puVar34[puVar27[1]]" (identifier "puVar34") ([ "[") (subscript_expression "puVar27[1]" (identifier "puVar27") ([ "[") (number_literal "1") (] "]")) (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          return puVar19;\n        }" ({ "{") (return_statement "return puVar19;" (return "return") (identifier "puVar19") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" (else "else") (if_statement "if ((1 < (int)puVar19) && (uVar20 == 6)) {\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" (if "if") (parenthesized_expression "((1 < (int)puVar19) && (uVar20 == 6))" (( "(") (binary_expression "(1 < (int)puVar19) && (uVar20 == 6)" (parenthesized_expression "(1 < (int)puVar19)" (( "(") (binary_expression "1 < (int)puVar19" (number_literal "1") (< "<") (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19"))) () ")")) (&& "&&") (parenthesized_expression "(uVar20 == 6)" (( "(") (binary_expression "uVar20 == 6" (identifier "uVar20") (== "==") (number_literal "6")) () ")"))) () ")")) (compound_statement "{\n      piVar28 = (int *)*puVar26;\n      iVar15 = piVar28[8];\n      iVar5 = piVar28[5];\n      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }\n      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);\n      if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }\nLAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }\n      return puVar19;\n    }" ({ "{") (expression_statement "piVar28 = (int *)*puVar26;" (assignment_expression "piVar28 = (int *)*puVar26" (identifier "piVar28") (= "=") (cast_expression "(int *)*puVar26" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar26" (* "*") (identifier "puVar26")))) (; ";")) (expression_statement "iVar15 = piVar28[8];" (assignment_expression "iVar15 = piVar28[8]" (identifier "iVar15") (= "=") (subscript_expression "piVar28[8]" (identifier "piVar28") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar5 = piVar28[5];" (assignment_expression "iVar5 = piVar28[5]" (identifier "iVar5") (= "=") (subscript_expression "piVar28[5]" (identifier "piVar28") ([ "[") (number_literal "5") (] "]"))) (; ";")) (if_statement "if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }" (if "if") (parenthesized_expression "((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0))" (( "(") (binary_expression "(iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)" (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 == 0 && piVar28[9] == 0)" (( "(") (binary_expression "iVar5 == 0 && piVar28[9] == 0" (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) (&& "&&") (binary_expression "piVar28[9] == 0" (subscript_expression "piVar28[9]" (identifier "piVar28") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\nLAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }\n        return puVar19;\n      }" ({ "{") (labeled_statement "LAB_00079104:\n        if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }" (statement_identifier "LAB_00079104") (: ":") (if_statement "if (-1 < *(char *)(piVar28 + 4)) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(-1 < *(char *)(piVar28 + 4))" (( "(") (binary_expression "-1 < *(char *)(piVar28 + 4)" (number_literal "-1") (< "<") (pointer_expression "*(char *)(piVar28 + 4)" (* "*") (cast_expression "(char *)(piVar28 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar28 + 4)" (( "(") (binary_expression "piVar28 + 4" (identifier "piVar28") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))) (return_statement "return puVar19;" (return "return") (identifier "puVar19") (; ";")) (} "}"))) (expression_statement "iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);" (assignment_expression "iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4)" (identifier "iVar30") (= "=") (pointer_expression "*(int *)(puVar27[2] + (int)puVar34 * 4)" (* "*") (cast_expression "(int *)(puVar27[2] + (int)puVar34 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27[2] + (int)puVar34 * 4)" (( "(") (binary_expression "puVar27[2] + (int)puVar34 * 4" (subscript_expression "puVar27[2]" (identifier "puVar27") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "(int)puVar34 * 4" (cast_expression "(int)puVar34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar34")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (iVar5 < 1) {\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }\n      else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }" (if "if") (parenthesized_expression "(iVar5 < 1)" (( "(") (binary_expression "iVar5 < 1" (identifier "iVar5") (< "<") (number_literal "1")) () ")")) (compound_statement "{\nLAB_00078fc4:\n        iVar5 = 0;\n        if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }\n        iVar15 = piVar28[3];\n        while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }\n      }" ({ "{") (labeled_statement "LAB_00078fc4:\n        iVar5 = 0;" (statement_identifier "LAB_00078fc4") (: ":") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (piVar28[9] < 1) {\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }" (if "if") (parenthesized_expression "(piVar28[9] < 1)" (( "(") (binary_expression "piVar28[9] < 1" (subscript_expression "piVar28[9]" (identifier "piVar28") ([ "[") (number_literal "9") (] "]")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\nLAB_000790c0:\n          iVar5 = 0;\n          if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }\n          goto LAB_00079104;\n        }" ({ "{") (labeled_statement "LAB_000790c0:\n          iVar5 = 0;" (statement_identifier "LAB_000790c0") (: ":") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (0 < iVar15) {\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }" (if "if") (parenthesized_expression "(0 < iVar15)" (( "(") (binary_expression "0 < iVar15" (number_literal "0") (< "<") (identifier "iVar15")) () ")")) (compound_statement "{\n            piVar9 = (int *)piVar28[1];\n            do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);\n          }" ({ "{") (expression_statement "piVar9 = (int *)piVar28[1];" (assignment_expression "piVar9 = (int *)piVar28[1]" (identifier "piVar9") (= "=") (cast_expression "(int *)piVar28[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar28[1]" (identifier "piVar28") ([ "[") (number_literal "1") (] "]")))) (; ";")) (do_statement "do {\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            } while (iVar5 != iVar15);" (do "do") (compound_statement "{\n              iVar16 = *piVar9;\n              iVar22 = iVar5 * 4;\n              piVar9 = piVar9 + 1;\n              iVar5 = iVar5 + 1;\n              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;\n            }" ({ "{") (expression_statement "iVar16 = *piVar9;" (assignment_expression "iVar16 = *piVar9" (identifier "iVar16") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "iVar22 = iVar5 * 4;" (assignment_expression "iVar22 = iVar5 * 4" (identifier "iVar22") (= "=") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))\n              goto LAB_00079010;" (if "if") (parenthesized_expression "((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))" (( "(") (binary_expression "(iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22))" (parenthesized_expression "(iVar16 <= iVar30)" (( "(") (binary_expression "iVar16 <= iVar30" (identifier "iVar16") (<= "<=") (identifier "iVar30")) () ")")) (&& "&&") (parenthesized_expression "(iVar30 <= *(int *)(piVar28[2] + iVar22))" (( "(") (binary_expression "iVar30 <= *(int *)(piVar28[2] + iVar22)" (identifier "iVar30") (<= "<=") (pointer_expression "*(int *)(piVar28[2] + iVar22)" (* "*") (cast_expression "(int *)(piVar28[2] + iVar22)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar28[2] + iVar22)" (( "(") (binary_expression "piVar28[2] + iVar22" (subscript_expression "piVar28[2]" (identifier "piVar28") ([ "[") (number_literal "2") (] "]")) (+ "+") (identifier "iVar22")) () ")"))))) () ")"))) () ")")) (goto_statement "goto LAB_00079010;" (goto "goto") (statement_identifier "LAB_00079010") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar5 != iVar15)" (( "(") (binary_expression "iVar5 != iVar15" (identifier "iVar5") (!= "!=") (identifier "iVar15")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_00079104;" (goto "goto") (statement_identifier "LAB_00079104") (; ";")) (} "}"))) (expression_statement "iVar15 = piVar28[3];" (assignment_expression "iVar15 = piVar28[3]" (identifier "iVar15") (= "=") (subscript_expression "piVar28[3]" (identifier "piVar28") ([ "[") (number_literal "3") (] "]"))) (; ";")) (while_statement "while( true ) {\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          iVar16 = iVar5 * 4;\n          iVar5 = iVar5 + 1;\n          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));\n          if (iVar15 != 0) break;\n          if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }\n          iVar15 = piVar28[3];\n        }" ({ "{") (expression_statement "iVar16 = iVar5 * 4;" (assignment_expression "iVar16 = iVar5 * 4" (identifier "iVar16") (= "=") (binary_expression "iVar5 * 4" (identifier "iVar5") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));" (assignment_expression "iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16))" (identifier "iVar15") (= "=") (call_expression "(**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16))" (parenthesized_expression "(**(code **)(pcVar35 + 0x36d08))" (( "(") (pointer_expression "**(code **)(pcVar35 + 0x36d08)" (* "*") (pointer_expression "*(code **)(pcVar35 + 0x36d08)" (* "*") (cast_expression "(code **)(pcVar35 + 0x36d08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar35 + 0x36d08)" (( "(") (binary_expression "pcVar35 + 0x36d08" (identifier "pcVar35") (+ "+") (number_literal "0x36d08")) () ")"))))) () ")")) (argument_list "(iVar30,*(undefined4 *)(iVar15 + iVar16))" (( "(") (identifier "iVar30") (, ",") (pointer_expression "*(undefined4 *)(iVar15 + iVar16)" (* "*") (cast_expression "(undefined4 *)(iVar15 + iVar16)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + iVar16)" (( "(") (binary_expression "iVar15 + iVar16" (identifier "iVar15") (+ "+") (identifier "iVar16")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar15 != 0) break;" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (piVar28[9] <= iVar5) {\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }" (if "if") (parenthesized_expression "(piVar28[9] <= iVar5)" (( "(") (binary_expression "piVar28[9] <= iVar5" (subscript_expression "piVar28[9]" (identifier "piVar28") ([ "[") (number_literal "9") (] "]")) (<= "<=") (identifier "iVar5")) () ")")) (compound_statement "{\n            iVar15 = piVar28[8];\n            goto LAB_000790c0;\n          }" ({ "{") (expression_statement "iVar15 = piVar28[8];" (assignment_expression "iVar15 = piVar28[8]" (identifier "iVar15") (= "=") (subscript_expression "piVar28[8]" (identifier "piVar28") ([ "[") (number_literal "8") (] "]"))) (; ";")) (goto_statement "goto LAB_000790c0;" (goto "goto") (statement_identifier "LAB_000790c0") (; ";")) (} "}"))) (expression_statement "iVar15 = piVar28[3];" (assignment_expression "iVar15 = piVar28[3]" (identifier "iVar15") (= "=") (subscript_expression "piVar28[3]" (identifier "piVar28") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }" (else "else") (compound_statement "{\n        piVar9 = (int *)*piVar28;\n        if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }\n      }" ({ "{") (expression_statement "piVar9 = (int *)*piVar28;" (assignment_expression "piVar9 = (int *)*piVar28" (identifier "piVar9") (= "=") (cast_expression "(int *)*piVar28" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar28" (* "*") (identifier "piVar28")))) (; ";")) (if_statement "if (*piVar9 != iVar30) {\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }" (if "if") (parenthesized_expression "(*piVar9 != iVar30)" (( "(") (binary_expression "*piVar9 != iVar30" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (!= "!=") (identifier "iVar30")) () ")")) (compound_statement "{\n          iVar16 = 0;\n          do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);\n        }" ({ "{") (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" (identifier "iVar16") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          } while (iVar30 != *piVar9);" (do "do") (compound_statement "{\n            piVar9 = piVar9 + 1;\n            iVar16 = iVar16 + 1;\n            if (iVar16 == iVar5) goto LAB_00078fc4;\n          }" ({ "{") (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar16 == iVar5) goto LAB_00078fc4;" (if "if") (parenthesized_expression "(iVar16 == iVar5)" (( "(") (binary_expression "iVar16 == iVar5" (identifier "iVar16") (== "==") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_00078fc4;" (goto "goto") (statement_identifier "LAB_00078fc4") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar30 != *piVar9)" (( "(") (binary_expression "iVar30 != *piVar9" (identifier "iVar30") (!= "!=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) () ")")) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00079010:\n      if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }" (statement_identifier "LAB_00079010") (: ":") (if_statement "if (*(char *)(piVar28 + 4) < '\0') {\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(*(char *)(piVar28 + 4) < '\0')" (( "(") (binary_expression "*(char *)(piVar28 + 4) < '\0'" (pointer_expression "*(char *)(piVar28 + 4)" (* "*") (cast_expression "(char *)(piVar28 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar28 + 4)" (( "(") (binary_expression "piVar28 + 4" (identifier "piVar28") (+ "+") (number_literal "4")) () ")")))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return (uint *)0x0;\n      }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))) (return_statement "return puVar19;" (return "return") (identifier "puVar19") (; ";")) (} "}"))))) (} "}"))))) (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */

type_1 *
function_1(type_2 *dfa,type_3 *trans,char *class_name,char *var_5,type_4 non_match,
                  type_5 *err)

{
  type_6 var_17;
  type_6 var_36;
  type_7 *puVar3;
  type_8 *var_14;
  type_9 sbcset;
  type_5 var_2;
  type_10 var_28;
  type_11 **var_7;
  type_12 *var_11;
  type_6 *var_39;
  int *var_31;
  type_13 *var_19;
  type_12 *var_24;
  type_8 uVar13;
  int var_26;
  int *piVar15;
  size_t var_32;
  char var_33;
  type_1 *pbVar17;
  type_6 *var_38;
  type_1 *var_42;
  type_8 *puVar21;
  int var_16;
  type_14 var_8;
  type_1 *pbVar24;
  type_9 aVar25;
  type_10 var_4;
  type_10 *puVar27;
  type_12 *mbcset;
  type_12 *var_30;
  type_12 *ps;
  type_1 *var_41;
  type_12 *var_13;
  type_12 *prVar30;
  type_12 *pstr;
  type_1 **var_35;
  int var_25;
  int *piVar33;
  type_7 *var_6;
  type_1 *var_44;
  type_1 *pbVar36;
  type_1 *pbVar37;
  type_13 *var_18;
  type_10 var_27;
  type_9 unaff_s5;
  type_9 unaff_s6;
  type_13 *var_20;
  type_13 *var_21;
  int var_29;
  type_7 *var_15;
  type_7 *var_37;
  type_15 *var_43;
  type_12 *prStackY_1c8;
  type_13 var_22 [8];
  type_16 *pwStackY_1a0;
  type_12 arStackY_19c [3];
  type_12 *var_34;
  type_2 *prStackY_98;
  type_7 *puStackY_94;
  type_7 *puStackY_90;
  type_5 *prStackY_8c;
  type_17 **ppbStackY_88;
  type_9 aStackY_84;
  type_9 aStackY_80;
  int *piStackY_7c;
  type_12 *prStackY_78;
  type_15 *pcStackY_74;
  type_18 alloc;
  type_19 br_token;
  type_19 t;
  
  puVar3 = PTR___stack_chk_guard_000afc3c;
  aVar25.var_37 = 1;
  alloc = 0;
  var_14 = *(type_8 **)PTR___stack_chk_guard_000afc3c;
  var_6 = (type_7 *)(type_10)non_match;
  mbcset = (type_12 *)class_name;
  var_13 = (type_12 *)var_5;
  sbcset.sbcset = (type_14)(*(type_15 *)PTR_calloc_000afdb8)(0x20);
  if (sbcset.sbcset == (type_14)0x0) {
LAB_00078814:
    sbcset = unaff_s5;
    var_11 = (type_12 *)0x0;
    *err = _REG_ESPACE;
  }
  else {
    aVar25.var_37 = 1;
    unaff_s6.sbcset = (type_14)(*(type_15 *)PTR_calloc_000afdb8)(0x28);
    if ((type_20 *)unaff_s6.sbcset == (type_20 *)0x0) {
      var_11 = (type_12 *)0x0;
      (*(type_15 *)PTR_free_000afd08)(sbcset.sbcset);
      *err = _REG_ESPACE;
    }
    else {
      var_13 = (type_12 *)&(unaff_s6.mbcset)->nchar_classes;
      mbcset = (type_12 *)&(unaff_s6.mbcset)->char_classes;
      *(type_6 *)(unaff_s6.var_37 + 0x10) =
           *(type_6 *)(unaff_s6.var_37 + 0x10) & 0x7f | (type_6)(((type_10)var_6 & 1) << 7);
      aVar25.sbcset = sbcset.sbcset;
      var_2 = var_1(trans,sbcset.sbcset,(type_20 *)mbcset,(type_18 *)var_13,(char *)&alloc
                              ,(type_21)class_name,(type_20 *)0x0);
      if (var_2 == var_3) {
        var_33 = *var_5;
        while (var_4 = (type_10)var_33, var_4 != 0) {
          var_28 = var_4;
          if ((int)var_4 < 0) {
            var_28 = var_4 + 0x1f;
          }
          var_5 = var_5 + 1;
          var_33 = *var_5;
          sbcset.sbcset[(int)var_28 >> 5] = sbcset.sbcset[(int)var_28 >> 5] | 1 << (var_4 & 0x1f);
        }
        aVar25.sbcset = sbcset.sbcset;
        if (var_6 != (type_7 *)0x0) {
          do {
            var_7 = &(aVar25.mbcset)->range_starts;
            *aVar25.sbcset = ~*aVar25.sbcset;
            aVar25 = (type_9)var_7;
          } while ((type_11 **)&(sbcset.mbcset)->nranges != var_7);
        }
        if (1 < dfa->mb_cur_max) {
          var_8 = dfa->sb_char;
          aVar25.sbcset = sbcset.sbcset;
          do {
            var_7 = &(aVar25.mbcset)->range_starts;
            var_4 = *var_8;
            var_8 = var_8 + 1;
            *aVar25.sbcset = *aVar25.sbcset & var_4;
            aVar25 = (type_9)var_7;
          } while ((type_11 **)&(sbcset.mbcset)->nranges != var_7);
        }
        var_5 = (char *)&dfa->str_tree_storage;
        trans = (type_3 *)&dfa->str_tree_storage_idx;
        var_6 = var_9 + 0x411c;
        var_13 = (type_12 *)0x0;
        mbcset = (type_12 *)0x0;
        br_token._4_1_ = 3;
        aVar25 = (type_9)trans;
        br_token.opr.sbcset = sbcset.sbcset;
        var_11 = (type_12 *)
                 var_10((type_2 *)var_5,(type_1 *)trans,(type_1 *)0x0,
                                   (type_19 *)0x0,(type_2 *)&br_token);
        prVar30 = var_13;
        if (var_11 == (type_12 *)0x0) {
LAB_000787f0:
          (*(type_15 *)PTR_free_000afd08)(sbcset.sbcset);
          var_12(unaff_s6.mbcset);
          var_13 = prVar30;
          unaff_s5.sbcset = sbcset.sbcset;
          goto LAB_00078814;
        }
        if (dfa->mb_cur_max < 2) {
          var_12(unaff_s6.mbcset);
        }
        else {
          prVar30 = (type_12 *)0x0;
          mbcset = (type_12 *)0x0;
          dfa->field_0x58 = dfa->field_0x58 & 0xbf | 0x40;
          br_token._4_1_ = 6;
          aVar25 = (type_9)trans;
          br_token.opr.sbcset = unaff_s6.sbcset;
          var_13 = (type_12 *)
                  var_10((type_2 *)var_5,(type_1 *)trans,(type_1 *)0x0,
                                    (type_19 *)0x0,(type_2 *)&br_token);
          if (var_13 == (type_12 *)0x0) goto LAB_000787f0;
          t._4_1_ = 10;
          aVar25 = (type_9)trans;
          prVar30 = (type_12 *)
                    var_10((type_2 *)var_5,(type_1 *)trans,(type_1 *)var_11,
                                      (type_19 *)var_13,(type_2 *)&t);
          mbcset = var_11;
          var_11 = prVar30;
        }
      }
      else {
        var_11 = (type_12 *)0x0;
        (*(type_15 *)PTR_free_000afd08)(sbcset.sbcset);
        var_12(unaff_s6.mbcset);
        *err = var_2;
      }
    }
  }
  if (var_14 == *(type_8 **)puVar3) {
    return (type_1 *)var_11;
  }
  var_43 = re_compile_fastmap_iter;
  var_15 = PTR___stack_chk_fail_000afbd4;
  (*(type_15 *)PTR___stack_chk_fail_000afbd4)();
  var_37 = var_15 + 0x3eb90;
  puVar21 = *(type_8 **)(var_15 + 0x3739c);
  puStackY_94 = puVar3;
  piVar33 = (int *)*var_14;
  var_34 = (type_12 *)*puVar21;
  prStackY_8c = err;
  if (piVar33[0x17] == 1) {
    var_4 = (type_10)(var_14[3] << 9) >> 0x1f;
  }
  else {
    var_4 = 0;
  }
  puVar27 = (type_10 *)(aVar25.mbcset)->mbchars;
  var_25 = 0;
  prVar30 = var_34;
  var_30 = mbcset;
  ps = mbcset;
  pstr = var_13;
  prStackY_98 = dfa;
  puStackY_90 = var_6;
  ppbStackY_88 = (type_17 **)var_5;
  aStackY_84 = sbcset;
  aStackY_80 = unaff_s6;
  piStackY_7c = (int *)trans;
  prStackY_78 = var_11;
  pcStackY_74 = var_43;
  if (0 < (int)puVar27) {
    do {
      while( true ) {
        prVar30 = (type_12 *)mbcset->raw_mbs;
        pbVar37 = (type_1 *)(&prVar30->raw_mbs)[var_25];
        var_16 = (int)pbVar37 * 8;
        var_39 = (type_6 *)(*piVar33 + var_16);
        var_17 = var_39[4];
        if (var_17 != 1) break;
        var_17 = *var_39;
        *(type_13 *)((int)&var_13->raw_mbs + (type_10)var_17) = 1;
        if (var_4 != 0) {
          var_31 = (int *)(**(type_15 **)(var_15 + 0x372e0))();
          *(type_13 *)((int)&var_13->raw_mbs + *(int *)(*var_31 + (type_10)var_17 * 4)) = 1;
        }
        if (((int)(var_14[3] << 9) < 0) && (1 < piVar33[0x17])) {
          var_18 = (type_13 *)((int)&pbVar37->parent + 1);
          arStackY_19c[0].raw_mbs._0_1_ = *(type_6 *)(*piVar33 + var_16);
          if ((var_18 < (type_13 *)piVar33[2]) &&
             (var_19 = (type_13 *)(*piVar33 + var_16 + 8),
             (*(type_10 *)(var_19 + 4) & 0xff000400) == 0x1000400)) {
            var_20 = (type_13 *)((int)&arStackY_19c[0].raw_mbs + 1);
            do {
              var_21 = var_20 + 1;
              var_18 = var_18 + 1;
              *var_20 = *var_19;
              if ((type_13 *)piVar33[2] <= var_18) break;
              var_19 = (type_13 *)(*piVar33 + (int)var_18 * 8);
              var_20 = var_21;
            } while ((*(type_10 *)(var_19 + 4) & 0xff000400) == 0x1000400);
            var_11 = (type_12 *)(var_21 + -(int)arStackY_19c);
          }
          else {
            var_11 = (type_12 *)0x1;
          }
          prStackY_1c8 = arStackY_19c;
          ps = (type_12 *)(var_22 + 4);
          prVar30 = (type_12 *)var_22;
          var_22._4_4_ = (type_3 *)0x0;
          pwStackY_1a0 = (type_16 *)0x0;
          var_30 = var_11;
          pstr = ps;
          var_24 = (type_12 *)
                    var_23((type_11 *)prVar30,(char *)prStackY_1c8,(size_t)var_11,
                                (type_22 *)ps);
          if (var_24 != var_11) goto LAB_00078a04;
          uVar13 = (**(type_15 **)(var_15 + 0x372d8))(var_22._0_4_);
          var_16 = (**(type_15 **)(var_15 + 0x3742c))(prStackY_1c8,uVar13);
          prVar30 = prStackY_1c8;
          var_30 = ps;
          if (var_16 == -1) goto LAB_00078a04;
          *(type_13 *)((int)&var_13->raw_mbs + (type_10)arStackY_19c[0].raw_mbs._0_1_) = 1;
          puVar27 = (type_10 *)*aVar25.sbcset;
        }
        else {
LAB_00078a04:
          puVar27 = (type_10 *)*aVar25.sbcset;
          prStackY_1c8 = prVar30;
          ps = var_30;
        }
LAB_00078a08:
        var_25 = var_25 + 1;
        prVar30 = prStackY_1c8;
        var_30 = ps;
        if ((int)puVar27 <= var_25) goto LAB_00078a1c;
      }
      if (var_17 == 3) {
        var_26 = 0x20;
        prStackY_1c8 = (type_12 *)0x0;
        while( true ) {
          var_29 = var_26 + -0x20;
          var_28 = 0;
          var_27 = *(type_10 *)(*(int *)var_39 + (int)prStackY_1c8);
          do {
            if (((var_27 >> (var_28 & 0x1f) & 1) != 0) &&
               (*(type_13 *)((int)&var_13->raw_mbs + var_29) = 1, var_4 != 0)) {
              var_30 = (type_12 *)(type_10)(var_29 + 0x80U < 0x180);
              if (var_30 != (type_12 *)0x0) {
                var_31 = (int *)(**(type_15 **)(var_15 + 0x372e0))();
                var_30 = (type_12 *)(var_29 * 4);
                *(type_13 *)((int)&var_13->raw_mbs + *(int *)((int)&var_30->raw_mbs + *var_31))
                     = 1;
              }
            }
            var_29 = var_29 + 1;
            var_28 = var_28 + 1;
          } while (var_26 != var_29);
          var_26 = var_26 + 0x20;
          prStackY_1c8 = (type_12 *)((int)prStackY_1c8 + 4);
          if (var_26 == 0x120) break;
          var_39 = (type_6 *)(*piVar33 + var_16);
        }
        goto LAB_00078a04;
      }
      if (var_17 == 6) {
        var_31 = *(int **)var_39;
        if ((1 < piVar33[0x17]) &&
           (((var_31[9] != 0 || (*(char *)(var_31 + 4) < '\0')) || (var_31[8] != 0)))) {
          var_22._0_4_ = var_22._0_4_ & 0xffffff;
          do {
            ps = (type_12 *)0x1;
            prStackY_1c8 = (type_12 *)0x0;
            var_22._4_4_ = (type_3 *)0x0;
            pwStackY_1a0 = (type_16 *)0x0;
            pstr = (type_12 *)(var_22 + 4);
            var_32 = var_23((type_11 *)0x0,var_22,1,(type_22 *)(var_22 + 4));
            if (var_32 == 0xfffffffe) {
              *(type_13 *)((int)&var_13->raw_mbs + (type_10)var_22[0]) = 1;
            }
            var_33 = var_22[0] + 1;
            var_22[0] = var_33;
          } while (var_33 != '\0');
          puVar27 = (type_10 *)*aVar25.sbcset;
          goto LAB_00078a08;
        }
        if (0 < var_31[5]) {
          var_16 = 0;
          do {
            var_22._4_4_ = (type_3 *)0x0;
            pwStackY_1a0 = (type_16 *)0x0;
            prVar30 = arStackY_19c;
            var_30 = (type_12 *)(var_22 + 4);
            var_26 = (**(type_15 **)(var_15 + 0x3742c))
                               (arStackY_19c,*(type_8 *)(*var_31 + var_16 * 4));
            if (var_26 != -1) {
              var_28 = (type_10)arStackY_19c[0].raw_mbs._0_1_;
              *(type_13 *)((int)&var_13->raw_mbs + var_28) = 1;
              if (var_4 != 0) {
                piVar15 = (int *)(**(type_15 **)(var_15 + 0x372e0))();
                prVar30 = (type_12 *)(*piVar15 + var_28 * 4);
                *(type_13 *)((int)&var_13->raw_mbs + (int)prVar30->raw_mbs) = 1;
              }
            }
            if (((var_14[3] & 0x400000) != 0) && (1 < piVar33[0x17])) {
              uVar13 = (**(type_15 **)(var_15 + 0x372d8))(*(type_8 *)(*var_31 + var_16 * 4));
              prVar30 = arStackY_19c;
              var_30 = (type_12 *)(var_22 + 4);
              var_26 = (**(type_15 **)(var_15 + 0x3742c))(arStackY_19c,uVar13);
              if (var_26 != -1) {
                *(type_13 *)((int)&var_13->raw_mbs + (type_10)arStackY_19c[0].raw_mbs._0_1_) = 1;
              }
            }
            var_16 = var_16 + 1;
          } while (var_16 < var_31[5]);
          goto LAB_00078a04;
        }
      }
      else {
        if ((var_17 & 0xfd) == 5) {
          if (var_34 == (type_12 *)*puVar21) {
                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            pbVar37 = (type_1 *)(**(type_15 **)(var_15 + 0x374f4))(var_13,1,0x100);
            return pbVar37;
          }
          goto LAB_00078e4c;
        }
        if (var_17 == 2) {
          ps = (type_12 *)0x100;
          puVar27 = (type_10 *)0x1;
          (**(type_15 **)(var_15 + 0x374f4))();
          *(type_6 *)(var_14 + 7) = *(type_6 *)(var_14 + 7) & 0x7f | 0x80;
          prVar30 = var_13;
          break;
        }
      }
      var_25 = var_25 + 1;
      ps = var_30;
    } while (var_25 < (int)puVar27);
  }
LAB_00078a1c:
  var_30 = ps;
  if (var_34 == (type_12 *)*puVar21) {
    return (type_1 *)*puVar21;
  }
LAB_00078e4c:
  var_43 = *(type_15 **)(var_15 + 0x37334);
  (*var_43)();
  var_35 = (type_1 **)(&prVar30->raw_mbs + (int)var_30 * 2);
  var_4 = (type_10)*(type_6 *)(var_35 + 1);
  if (var_4 == 7) {
    var_39 = pstr->mbs + (int)var_37;
    var_17 = *var_39;
    if (var_17 < 0xc2) {
      return (type_1 *)0x0;
    }
    if (pstr->len <= (int)(var_15 + 0x3eb91)) {
      return (type_1 *)0x0;
    }
    var_36 = var_39[1];
    if (var_17 < 0xe0) {
      if ((var_36 ^ 0x80) < 0x40) {
        return (type_1 *)0x2;
      }
    }
    else {
      if (var_17 < 0xf0) {
        if ((var_17 == 0xe0) && (var_36 < 0xa0)) {
          return (type_1 *)0x0;
        }
        pbVar37 = (type_1 *)0x3;
      }
      else if (var_17 < 0xf8) {
        pbVar37 = (type_1 *)0x4;
        if ((var_17 == 0xf0) && (var_36 < 0x90)) {
          return (type_1 *)0x0;
        }
      }
      else if (var_17 < 0xfc) {
        pbVar37 = (type_1 *)0x5;
        if ((var_17 == 0xf8) && (var_36 < 0x88)) {
          return (type_1 *)0x0;
        }
      }
      else {
        if (0xfd < var_17) {
          return (type_1 *)0x0;
        }
        pbVar37 = (type_1 *)0x6;
        if ((var_17 == 0xfc) && (var_36 < 0x84)) {
          return (type_1 *)0x0;
        }
      }
      var_38 = pstr->mbs + (int)(var_15 + 0x3eb91);
      if ((int)(var_37 + (int)pbVar37) <= pstr->len) {
        do {
          var_17 = *var_38;
          var_38 = var_38 + 1;
          if (0x3f < (var_17 ^ 0x80)) {
            return (type_1 *)0x0;
          }
        } while (var_39 + (int)pbVar37 != var_38);
        return pbVar37;
      }
    }
  }
  else if (pstr->mb_cur_max != 1) {
    pbVar37 = (type_1 *)var_40(pstr,(type_18)var_37);
    if (var_4 == 5) {
      if ((1 < (int)pbVar37) && (((*puVar27 & 0x40) != 0 || (pstr->mbs[(int)var_37] != '\n')))) {
        if ((*puVar27 & 0x80) == 0) {
          return pbVar37;
        }
        if (pstr->mbs[(int)var_37] != '\0') {
          return pbVar37;
        }
      }
    }
    else if ((1 < (int)pbVar37) && (var_4 == 6)) {
      pbVar36 = *var_35;
      var_41 = pbVar36[1].parent;
      var_25 = (pbVar36->var_13).opr.var_37;
      if ((var_41 == (type_1 *)0x0) && (var_25 == 0 && pbVar36[1].left == (type_1 *)0x0)) {
LAB_00079104:
        if (-1 < *(char *)&pbVar36->next) {
          return (type_1 *)0x0;
        }
        return pbVar37;
      }
      var_44 = (type_1 *)pstr->wcs[(int)var_37];
      if (var_25 < 1) {
LAB_00078fc4:
        if ((int)pbVar36[1].left < 1) {
LAB_000790c0:
          if (0 < (int)var_41) {
            pbVar24 = pbVar36->left;
            pbVar17 = (type_1 *)0x0;
            do {
              var_35 = &pbVar24->parent;
              pbVar24 = (type_1 *)&pbVar24->left;
              var_42 = (type_1 *)((int)&pbVar17->parent + 1);
              if (((int)*var_35 <= (int)var_44) &&
                 ((int)var_44 <= (int)(&pbVar36->right->parent)[(int)pbVar17])) goto LAB_00079010;
              pbVar17 = var_42;
            } while (var_42 != var_41);
          }
          goto LAB_00079104;
        }
        var_41 = pbVar36->first;
        var_25 = 0;
        while( true ) {
          var_16 = (**(type_15 **)(var_43 + 0x36d08))(var_44,(&var_41->parent)[var_25]);
          if (var_16 != 0) break;
          if ((int)pbVar36[1].left <= var_25 + 1) {
            var_41 = pbVar36[1].parent;
            goto LAB_000790c0;
          }
          var_41 = pbVar36->first;
          var_25 = var_25 + 1;
        }
      }
      else {
        pbVar17 = pbVar36->parent;
        if (pbVar17->parent != var_44) {
          var_16 = 0;
          do {
            pbVar17 = (type_1 *)&pbVar17->left;
            var_16 = var_16 + 1;
            if (var_16 == var_25) goto LAB_00078fc4;
          } while (var_44 != *(type_1 **)pbVar17);
        }
      }
LAB_00079010:
      if (*(char *)&pbVar36->next < '\0') {
        return (type_1 *)0x0;
      }
      return pbVar37;
    }
  }
  return (type_1 *)0x0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (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: (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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (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: (pointer_expression argument: (identifier))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_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: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (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)))) (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: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (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: (binary_expression left: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) 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: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (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: (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: (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)))))) (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: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (binary_expression left: (number_literal) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (unary_expression argument: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) 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: (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: (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: (number_literal)))) (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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 (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) alternative: (else_clause (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: (number_literal)))) (expression_statement (assignment_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: (binary_expression left: (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)))) (expression_statement (assignment_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)))) (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: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) alternative: (else_clause (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 (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: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) consequence: (compound_statement (return_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: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (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: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (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: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) right: (char_literal (escape_sequence)))) (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))))) right: (char_literal (escape_sequence)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) 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: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (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: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) right: (number_literal))))) right: (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: (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: (number_literal)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) 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: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) 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)))) (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: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (field_expression argument: (identifier) field: (field_identifier))))))) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (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: (pointer_expression argument: (identifier)))))) (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: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (goto_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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (char_literal (escape_sequence))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) right: (char_literal (escape_sequence)))))))) (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))))) condition: (parenthesized_expression (binary_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: (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (pointer_expression argument: (identifier)) right: (identifier)))))))) (goto_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (field_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) field: (field_identifier))))))) right: (char_literal (escape_sequence)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (field_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) field: (field_identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (field_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) field: (field_identifier))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (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))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (pointer_expression argument: (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 (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (field_expression argument: (identifier) field: (field_identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (char_literal (escape_sequence)))) (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (identifier)))))) right: (char_literal (escape_sequence)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (subscript_expression argument: (identifier) index: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (field_expression argument: (identifier) field: (field_identifier))))))) right: (char_literal (escape_sequence)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (number_literal) (number_literal)))))) (return_statement (identifier)))) (goto_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: (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: (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_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: (binary_expression left: (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (break_statement)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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)) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) (labeled_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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (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: (subscript_expression argument: (identifier) index: (number_literal))))) (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 (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) 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: (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 (return_statement (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: (number_literal))) consequence: (compound_statement (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: (compound_statement (return_statement (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: (number_literal))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (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: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (compound_statement (return_statement (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: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (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: (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: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier)))) (return_statement (identifier)))))))) alternative: (else_clause (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (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: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence))))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (identifier))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (return_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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (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 (assignment_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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (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: (binary_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: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))))))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (while_statement condition: (parenthesized_expression (true)) 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)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (subscript_expression argument: (identifier) index: (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: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (return_statement (identifier)))))))))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))

/* WARNING: Type propagation algorithm not settling */

uint * MASKED(int param_1,uint *param_2,uint *param_3,uint *param_4,byte param_5,int *param_6)

{
  byte bVar1;
  byte bVar2;
  undefined *puVar3;
  uint *puVar4;
  int iVar5;
  uint uVar6;
  uint *puVar7;
  byte *pbVar8;
  int *piVar9;
  undefined4 uVar10;
  int *piVar11;
  char cVar13;
  byte *pbVar12;
  undefined4 *puVar14;
  int iVar15;
  int iVar16;
  uint *puVar17;
  undefined4 *puVar18;
  uint *puVar19;
  uint uVar20;
  uint *puVar21;
  int iVar22;
  uint *puVar23;
  uint *puVar24;
  uint *puVar25;
  uint *puVar26;
  uint *puVar27;
  int *piVar28;
  undefined *puVar29;
  int iVar30;
  uint uVar31;
  uint *unaff_s5;
  uint *unaff_s6;
  byte *pbVar32;
  undefined *puVar33;
  undefined *puVar34;
  code *pcVar35;
  uint *puStack_1c8;
  uint auStack_1a8 [3];
  undefined4 uStack_19c;
  uint *puStack_9c;
  int iStack_98;
  undefined *puStack_94;
  undefined *puStack_90;
  int *piStack_8c;
  uint *puStack_88;
  uint *puStack_84;
  uint *puStack_80;
  uint *puStack_7c;
  uint *puStack_78;
  code *pcStack_74;
  uint **local_60;
  uint *local_5c;
  undefined4 local_58;
  uint *local_40;
  uint *local_3c;
  undefined1 local_38;
  uint *puStack_34;
  undefined1 local_30;
  undefined4 *local_2c;
  
  puVar3 = PTR___stack_chk_guard_000afc3c;
  puVar19 = (uint *)&DAT_00000001;
  local_40 = (uint *)0x0;
  local_2c = *(undefined4 **)PTR___stack_chk_guard_000afc3c;
  puVar29 = (undefined *)(uint)param_5;
  puVar17 = param_3;
  puVar25 = param_4;
  puVar4 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x20);
  if (puVar4 == (uint *)0x0) {
LAB_00078814:
    puVar4 = unaff_s5;
    puVar7 = (uint *)0x0;
    *param_6 = 0xc;
  }
  else {
    puVar19 = (uint *)&DAT_00000001;
    unaff_s6 = (uint *)(*(code *)PTR_calloc_000afdb8)(0x28);
    if (unaff_s6 == (uint *)0x0) {
      puVar7 = (uint *)0x0;
      (*(code *)PTR_free_000afd08)(puVar4);
      *param_6 = 0xc;
    }
    else {
      local_60 = &local_40;
      puVar25 = unaff_s6 + 9;
      puVar17 = unaff_s6 + 3;
      local_58 = 0;
      *(byte *)(unaff_s6 + 4) = *(byte *)(unaff_s6 + 4) & 0x7f | (byte)(((uint)puVar29 & 1) << 7);
      puVar19 = puVar4;
      local_5c = param_3;
      iVar5 = FUN_00077b04(param_2);
      if (iVar5 == 0) {
        cVar13 = *(char *)param_4;
        while (uVar20 = (uint)cVar13, uVar20 != 0) {
          uVar6 = uVar20;
          if ((int)uVar20 < 0) {
            uVar6 = uVar20 + 0x1f;
          }
          param_4 = (uint *)((int)param_4 + 1);
          cVar13 = *(char *)param_4;
          puVar4[(int)uVar6 >> 5] = puVar4[(int)uVar6 >> 5] | 1 << (uVar20 & 0x1f);
        }
        puVar19 = puVar4;
        if (puVar29 != (undefined *)0x0) {
          do {
            puVar17 = puVar19 + 1;
            *puVar19 = ~*puVar19;
            puVar19 = puVar17;
          } while (puVar4 + 8 != puVar17);
        }
        if (1 < *(int *)(param_1 + 0x5c)) {
          puVar17 = *(uint **)(param_1 + 0x3c);
          puVar19 = puVar4;
          do {
            puVar25 = puVar19 + 1;
            uVar20 = *puVar17;
            puVar17 = puVar17 + 1;
            *puVar19 = *puVar19 & uVar20;
            puVar19 = puVar25;
          } while (puVar4 + 8 != puVar25);
        }
        param_4 = (uint *)(param_1 + 0x38);
        param_2 = (uint *)(param_1 + 0x40);
        puVar29 = PTR_FUN_000afa20 + 0x411c;
        puVar25 = (uint *)0x0;
        puVar17 = (uint *)0x0;
        local_38 = 3;
        puVar19 = param_2;
        local_60 = &local_3c;
        local_3c = puVar4;
        puVar7 = (uint *)FUN_0007411c(param_4);
        puVar26 = puVar25;
        if (puVar7 == (uint *)0x0) {
LAB_000787f0:
          (*(code *)PTR_free_000afd08)(puVar4);
          FUN_000724e4(unaff_s6);
          puVar25 = puVar26;
          unaff_s5 = puVar4;
          goto LAB_00078814;
        }
        if (*(int *)(param_1 + 0x5c) < 2) {
          FUN_000724e4(unaff_s6);
        }
        else {
          puVar26 = (uint *)0x0;
          puVar17 = (uint *)0x0;
          *(byte *)(param_1 + 0x58) = *(byte *)(param_1 + 0x58) & 0xbf | 0x40;
          local_38 = 6;
          puVar19 = param_2;
          local_60 = &local_3c;
          local_3c = unaff_s6;
          puVar25 = (uint *)FUN_0007411c(param_4);
          if (puVar25 == (uint *)0x0) goto LAB_000787f0;
          local_60 = &puStack_34;
          local_30 = 10;
          puVar19 = param_2;
          puVar26 = (uint *)FUN_0007411c(param_4);
          puVar17 = puVar7;
          puVar7 = puVar26;
        }
      }
      else {
        puVar7 = (uint *)0x0;
        (*(code *)PTR_free_000afd08)(puVar4);
        FUN_000724e4(unaff_s6);
        *param_6 = iVar5;
      }
    }
  }
  if (local_2c == *(undefined4 **)puVar3) {
    return puVar7;
  }
  pcVar35 = FUN_000788a0;
  puVar18 = local_2c;
  puVar33 = PTR___stack_chk_fail_000afbd4;
  (*(code *)PTR___stack_chk_fail_000afbd4)();
  puVar34 = puVar33 + 0x3eb90;
  puVar14 = *(undefined4 **)(puVar33 + 0x3739c);
  puStack_94 = puVar3;
  piVar28 = (int *)*puVar18;
  puStack_9c = (uint *)*puVar14;
  piStack_8c = param_6;
  if (piVar28[0x17] == 1) {
    uVar20 = (uint)(puVar18[3] << 9) >> 0x1f;
  }
  else {
    uVar20 = 0;
  }
  puVar21 = (uint *)*puVar19;
  iVar5 = 0;
  puVar26 = puStack_9c;
  puVar23 = puVar17;
  puVar24 = puVar17;
  puVar27 = puVar25;
  iStack_98 = param_1;
  puStack_90 = puVar29;
  puStack_88 = param_4;
  puStack_84 = puVar4;
  puStack_80 = unaff_s6;
  puStack_7c = param_2;
  puStack_78 = puVar7;
  pcStack_74 = pcVar35;
  if (0 < (int)puVar21) {
    do {
      while( true ) {
        puVar26 = (uint *)*puVar17;
        uVar6 = puVar26[iVar5];
        iVar15 = uVar6 * 8;
        pbVar8 = (byte *)(*piVar28 + iVar15);
        bVar1 = pbVar8[4];
        if (bVar1 != 1) break;
        bVar1 = *pbVar8;
        *(char *)((int)puVar25 + (uint)bVar1) = '\x01';
        if (uVar20 != 0) {
          piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();
          *(char *)((int)puVar25 + *(int *)(*piVar9 + (uint)bVar1 * 4)) = '\x01';
        }
        if (((int)(puVar18[3] << 9) < 0) && (1 < piVar28[0x17])) {
          uVar6 = uVar6 + 1;
          uStack_19c._0_1_ = *(byte *)(*piVar28 + iVar15);
          if ((uVar6 < (uint)piVar28[2]) &&
             (pbVar8 = (byte *)(*piVar28 + iVar15 + 8),
             (*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400)) {
            pbVar12 = (byte *)((int)&uStack_19c + 1);
            do {
              pbVar32 = pbVar12 + 1;
              uVar6 = uVar6 + 1;
              *pbVar12 = *pbVar8;
              if ((uint)piVar28[2] <= uVar6) break;
              pbVar8 = (byte *)(*piVar28 + uVar6 * 8);
              pbVar12 = pbVar32;
            } while ((*(uint *)(pbVar8 + 4) & 0xff000400) == 0x1000400);
            puVar4 = (uint *)(pbVar32 + -(int)&uStack_19c);
          }
          else {
            puVar4 = (uint *)&DAT_00000001;
          }
          puStack_1c8 = &uStack_19c;
          puVar24 = auStack_1a8 + 1;
          puVar26 = auStack_1a8;
          auStack_1a8[1] = 0;
          auStack_1a8[2] = 0;
          puVar23 = puVar4;
          puVar27 = puVar24;
          puVar7 = (uint *)rpl_mbrtowc(puVar26,puStack_1c8);
          if (puVar7 != puVar4) goto LAB_00078a04;
          uVar10 = (**(code **)(puVar33 + 0x372d8))(auStack_1a8[0]);
          iVar15 = (**(code **)(puVar33 + 0x3742c))(puStack_1c8,uVar10);
          puVar26 = puStack_1c8;
          puVar23 = puVar24;
          if (iVar15 == -1) goto LAB_00078a04;
          *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';
          puVar21 = (uint *)*puVar19;
        }
        else {
LAB_00078a04:
          puVar21 = (uint *)*puVar19;
          puStack_1c8 = puVar26;
          puVar24 = puVar23;
        }
LAB_00078a08:
        iVar5 = iVar5 + 1;
        puVar26 = puStack_1c8;
        puVar23 = puVar24;
        if ((int)puVar21 <= iVar5) goto LAB_00078a1c;
      }
      if (bVar1 == 3) {
        iVar30 = 0x20;
        puStack_1c8 = (uint *)0x0;
        while( true ) {
          iVar16 = iVar30 + -0x20;
          uVar6 = 0;
          uVar31 = *(uint *)(*(int *)pbVar8 + (int)puStack_1c8);
          do {
            if (((uVar31 >> (uVar6 & 0x1f) & 1) != 0) &&
               (*(char *)((int)puVar25 + iVar16) = '\x01', uVar20 != 0)) {
              puVar23 = (uint *)(uint)(iVar16 + 0x80U < 0x180);
              if (puVar23 != (uint *)0x0) {
                piVar9 = (int *)(**(code **)(puVar33 + 0x372e0))();
                puVar23 = (uint *)(iVar16 * 4);
                *(char *)((int)puVar25 + *(int *)(*piVar9 + (int)puVar23)) = '\x01';
              }
            }
            iVar16 = iVar16 + 1;
            uVar6 = uVar6 + 1;
          } while (iVar30 != iVar16);
          iVar30 = iVar30 + 0x20;
          puStack_1c8 = (uint *)((int)puStack_1c8 + 4);
          if (iVar30 == 0x120) break;
          pbVar8 = (byte *)(*piVar28 + iVar15);
        }
        goto LAB_00078a04;
      }
      if (bVar1 == 6) {
        piVar9 = *(int **)pbVar8;
        if ((1 < piVar28[0x17]) &&
           (((piVar9[9] != 0 || (*(char *)(piVar9 + 4) < '\0')) || (piVar9[8] != 0)))) {
          auStack_1a8[0] = auStack_1a8[0] & 0xffffff;
          do {
            puVar24 = (uint *)&DAT_00000001;
            puStack_1c8 = (uint *)0x0;
            auStack_1a8[1] = 0;
            auStack_1a8[2] = 0;
            puVar27 = auStack_1a8 + 1;
            iVar15 = rpl_mbrtowc(0,auStack_1a8);
            if (iVar15 == -2) {
              *(char *)((int)puVar25 + (uint)auStack_1a8[0]._0_1_) = '\x01';
            }
            cVar13 = auStack_1a8[0]._0_1_ + 1;
            auStack_1a8[0] = CONCAT13(cVar13,auStack_1a8[0]._1_3_);
          } while (cVar13 != '\0');
          puVar21 = (uint *)*puVar19;
          goto LAB_00078a08;
        }
        if (0 < piVar9[5]) {
          iVar15 = 0;
          do {
            auStack_1a8[1] = 0;
            auStack_1a8[2] = 0;
            puVar26 = &uStack_19c;
            puVar23 = auStack_1a8 + 1;
            iVar30 = (**(code **)(puVar33 + 0x3742c))
                               (&uStack_19c,*(undefined4 *)(*piVar9 + iVar15 * 4));
            if (iVar30 != -1) {
              uVar6 = (uint)uStack_19c._0_1_;
              *(char *)((int)puVar25 + uVar6) = '\x01';
              if (uVar20 != 0) {
                piVar11 = (int *)(**(code **)(puVar33 + 0x372e0))();
                puVar26 = (uint *)(*piVar11 + uVar6 * 4);
                *(char *)((int)puVar25 + *puVar26) = '\x01';
              }
            }
            if (((puVar18[3] & 0x400000) != 0) && (1 < piVar28[0x17])) {
              uVar10 = (**(code **)(puVar33 + 0x372d8))(*(undefined4 *)(*piVar9 + iVar15 * 4));
              puVar26 = &uStack_19c;
              puVar23 = auStack_1a8 + 1;
              iVar30 = (**(code **)(puVar33 + 0x3742c))(&uStack_19c,uVar10);
              if (iVar30 != -1) {
                *(char *)((int)puVar25 + (uint)uStack_19c._0_1_) = '\x01';
              }
            }
            iVar15 = iVar15 + 1;
          } while (iVar15 < piVar9[5]);
          goto LAB_00078a04;
        }
      }
      else {
        if ((bVar1 & 0xfd) == 5) {
          if (puStack_9c == (uint *)*puVar14) {
                    /* WARNING: Could not recover jumptable at 0x00078e04. Too many branches */
                    /* WARNING: Treating indirect jump as call */
            puVar19 = (uint *)(**(code **)(puVar33 + 0x374f4))(puVar25,1,0x100);
            return puVar19;
          }
          goto LAB_00078e4c;
        }
        if (bVar1 == 2) {
          puVar24 = (uint *)0x100;
          puVar21 = (uint *)&DAT_00000001;
          (**(code **)(puVar33 + 0x374f4))();
          *(byte *)(puVar18 + 7) = *(byte *)(puVar18 + 7) & 0x7f | 0x80;
          puVar26 = puVar25;
          break;
        }
      }
      iVar5 = iVar5 + 1;
      puVar24 = puVar23;
    } while (iVar5 < (int)puVar21);
  }
LAB_00078a1c:
  puVar23 = puVar24;
  if (puStack_9c == (uint *)*puVar14) {
    return (uint *)*puVar14;
  }
LAB_00078e4c:
  pcVar35 = *(code **)(puVar33 + 0x37334);
  (*pcVar35)();
  puVar26 = puVar26 + (int)puVar23 * 2;
  uVar20 = (uint)*(byte *)(puVar26 + 1);
  if (uVar20 == 7) {
    pbVar8 = puVar34 + puVar27[1];
    bVar1 = *pbVar8;
    if (bVar1 < 0xc2) {
      return (uint *)0x0;
    }
    if ((int)puVar27[0xc] <= (int)(puVar33 + 0x3eb91)) {
      return (uint *)0x0;
    }
    bVar2 = pbVar8[1];
    if (bVar1 < 0xe0) {
      if ((bVar2 ^ 0x80) < 0x40) {
        return (uint *)0x2;
      }
    }
    else {
      if (bVar1 < 0xf0) {
        if ((bVar1 == 0xe0) && (bVar2 < 0xa0)) {
          return (uint *)0x0;
        }
        puVar19 = (uint *)0x3;
      }
      else if (bVar1 < 0xf8) {
        puVar19 = (uint *)&DAT_00000004;
        if ((bVar1 == 0xf0) && (bVar2 < 0x90)) {
          return (uint *)0x0;
        }
      }
      else if (bVar1 < 0xfc) {
        puVar19 = (uint *)0x5;
        if ((bVar1 == 0xf8) && (bVar2 < 0x88)) {
          return (uint *)0x0;
        }
      }
      else {
        if (0xfd < bVar1) {
          return (uint *)0x0;
        }
        puVar19 = (uint *)0x6;
        if ((bVar1 == 0xfc) && (bVar2 < 0x84)) {
          return (uint *)0x0;
        }
      }
      pbVar12 = puVar33 + 0x3eb91 + puVar27[1];
      if ((int)(puVar34 + (int)puVar19) <= (int)puVar27[0xc]) {
        do {
          bVar1 = *pbVar12;
          pbVar12 = pbVar12 + 1;
          if (0x3f < (bVar1 ^ 0x80)) {
            return (uint *)0x0;
          }
        } while (pbVar8 + (int)puVar19 != pbVar12);
        return puVar19;
      }
    }
  }
  else if (puVar27[0x14] != 1) {
    puVar19 = (uint *)FUN_00072ef0(puVar27,puVar34);
    if (uVar20 == 5) {
      if ((1 < (int)puVar19) && (((*puVar21 & 0x40) != 0 || (puVar34[puVar27[1]] != '\n')))) {
        if ((*puVar21 & 0x80) == 0) {
          return puVar19;
        }
        if (puVar34[puVar27[1]] != '\0') {
          return puVar19;
        }
      }
    }
    else if ((1 < (int)puVar19) && (uVar20 == 6)) {
      piVar28 = (int *)*puVar26;
      iVar15 = piVar28[8];
      iVar5 = piVar28[5];
      if ((iVar15 == 0) && (iVar5 == 0 && piVar28[9] == 0)) {
LAB_00079104:
        if (-1 < *(char *)(piVar28 + 4)) {
          return (uint *)0x0;
        }
        return puVar19;
      }
      iVar30 = *(int *)(puVar27[2] + (int)puVar34 * 4);
      if (iVar5 < 1) {
LAB_00078fc4:
        iVar5 = 0;
        if (piVar28[9] < 1) {
LAB_000790c0:
          iVar5 = 0;
          if (0 < iVar15) {
            piVar9 = (int *)piVar28[1];
            do {
              iVar16 = *piVar9;
              iVar22 = iVar5 * 4;
              piVar9 = piVar9 + 1;
              iVar5 = iVar5 + 1;
              if ((iVar16 <= iVar30) && (iVar30 <= *(int *)(piVar28[2] + iVar22)))
              goto LAB_00079010;
            } while (iVar5 != iVar15);
          }
          goto LAB_00079104;
        }
        iVar15 = piVar28[3];
        while( true ) {
          iVar16 = iVar5 * 4;
          iVar5 = iVar5 + 1;
          iVar15 = (**(code **)(pcVar35 + 0x36d08))(iVar30,*(undefined4 *)(iVar15 + iVar16));
          if (iVar15 != 0) break;
          if (piVar28[9] <= iVar5) {
            iVar15 = piVar28[8];
            goto LAB_000790c0;
          }
          iVar15 = piVar28[3];
        }
      }
      else {
        piVar9 = (int *)*piVar28;
        if (*piVar9 != iVar30) {
          iVar16 = 0;
          do {
            piVar9 = piVar9 + 1;
            iVar16 = iVar16 + 1;
            if (iVar16 == iVar5) goto LAB_00078fc4;
          } while (iVar30 != *piVar9);
        }
      }
LAB_00079010:
      if (*(char *)(piVar28 + 4) < '\0') {
        return (uint *)0x0;
      }
      return puVar19;
    }
  }
  return (uint *)0x0;
}

